From 13af87effd8dcb50674df030dca9c21e4e462999 Mon Sep 17 00:00:00 2001 From: "kipp%netscape.com" Date: Sat, 12 Sep 1998 17:53:08 +0000 Subject: [PATCH] new git-svn-id: svn://10.0.0.236/trunk@9943 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpcom/tools/makefile.win | 24 ++++++ mozilla/xpcom/tools/windows/makefile.win | 53 +++++++++++++ mozilla/xpcom/tools/windows/rebasedlls.cpp | 86 ++++++++++++++++++++++ 3 files changed, 163 insertions(+) create mode 100644 mozilla/xpcom/tools/makefile.win create mode 100644 mozilla/xpcom/tools/windows/makefile.win create mode 100644 mozilla/xpcom/tools/windows/rebasedlls.cpp diff --git a/mozilla/xpcom/tools/makefile.win b/mozilla/xpcom/tools/makefile.win new file mode 100644 index 00000000000..6e7e73bda29 --- /dev/null +++ b/mozilla/xpcom/tools/makefile.win @@ -0,0 +1,24 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH=..\.. + +IGNORE_MANIFEST=1 + +DIRS = windows + +include <$(DEPTH)\config\rules.mak> diff --git a/mozilla/xpcom/tools/windows/makefile.win b/mozilla/xpcom/tools/windows/makefile.win new file mode 100644 index 00000000000..781adad305f --- /dev/null +++ b/mozilla/xpcom/tools/windows/makefile.win @@ -0,0 +1,53 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH=..\..\.. + +IGNORE_MANIFEST=1 + +MAKE_OBJ_TYPE = EXE +PROG1 = .\$(OBJDIR)\rebasedlls.exe +PROGRAMS = $(PROG1) + +LLIBS= imagehlp.lib + +include <$(DEPTH)\config\rules.mak> + +install:: $(PROGRAMS) + -for %p in ($(PROGRAMS)) do $(MAKE_INSTALL) %p $(DIST)\bin + +clobber:: + -for %p in ($(PROGRAMS)) do $(RM) %p $(DIST)\bin\%p + +# Move this into config/obj.inc when it's allowed +.cpp{.\$(OBJDIR)\}.exe: + $(CC) @<<$(CFGFILE) + $(CFLAGS) + $(LCFLAGS) + $(LINCS) + $(LINCS_1) + $(INCS) + $(LLIBS) + $(OS_LIBS) + -Fd$(PBDFILE) + -Fe.\$(OBJDIR)\ + -Fo.\$(OBJDIR)\ + $(CURDIR)$(*B).cpp +< +#include +#include +#include + +static char* gSymbolPath = NULL; +static DWORD gBaseAddr = (DWORD) 0x60000000; +static time_t now; + +static void +ReBase(char* aDLLName) +{ + DWORD oldsize, oldbase, newsize; + DWORD newbase = gBaseAddr; + BOOL b = ReBaseImage(aDLLName, gSymbolPath, TRUE, FALSE, FALSE, + 0, &oldsize, &oldbase, &newsize, &newbase, + now); + DWORD lastError = ::GetLastError(); + printf("%-20s %08x %08x %08x %08x", + aDLLName, oldbase, oldsize, newbase, newsize); + if (!b) { + printf(" (failed: error=%d/0x%x)", lastError, lastError); + } + fputs("\n", stdout); + + // advance base; round size up to nearest 64k + newsize = ((newsize + 65535) >> 16) << 16; + gBaseAddr = newbase + newsize; +} + +static void +Usage() +{ + printf("Usage: ReBase [-libs library-path] dlls...\n"); +} + +int +main(int argc, char** argv) +{ + now = time(0); + int i; + for (i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + if (strcmp(argv[i], "-libs") == 0) { + if (i == argc - 1) { + Usage(); + return -1; + } + gSymbolPath = argv[++i]; + } + else { + Usage(); + return -1; + } + } + else + break; + } + + if (i < argc) { + printf("Library OldBase OldSize NewBase NewSize\n"); + printf("------- ------- ------- ------- -------\n"); + } + for (; i < argc; i++) { + ReBase(argv[i]); + } + return 0; +}