httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <wr...@lnd.com>
Subject RE: DLL Base addresses (was: .dsp link options)
Date Tue, 18 Apr 2000 14:06:12 GMT
> From: Tim Costello [mailto:timcostello@ozemail.com.au]
> Sent: Tuesday, April 18, 2000 8:34 AM
> 
> On Tue, 18 Apr 2000, Greg Stein wrote:
> > Euh... those conflicts are only for within an particular 
> .exe address
> > space. Apache DLLs are not going to conflict with Office97 
> -- they never
> > get loaded into an Office process.
> 
> Agreed. The LISTDLLS tool from SysInternals 
> (http://www.sysinternals.com/listdlls.htm) provides useful 
> output. So the question remains, why 0x27800000? 

Thank you!  Now I recall... the clashes I've witnessed are
over badly written kernel drivers and services... (that were
never rebased from 10000000)  That can be just about anything.
Although don't the rules change under the 9x architecture?
I really need to go do some homework in the msj articles cited.
 
> It's probably still a good idea to rebase though - especially 
> because we have two processes running (with the current WinNT MPM). 

Actually, -many- more once folks load in the addin modules!

Your remaining arguments are good and valid.

> I get a bad feeling from the fact that base addresses in all 
> the project files are now hard-coded, because it seems like 
> either quite a maintenance effort or the sort of thing that 
> will be overlooked in time. I've been using the following patch 
> for a little while to rebase all Apache DLLs after compilation 
> using EDITBIN - it calculates new addresses automatically given 
> a ceiling address, currently set to 0x70000000. 

I think the concept is EXCELLENT!  I share your concerns that 
coders forget as they add new modules, or a module grows by 
leaps and bounds and collides with the next.

I'm mostly concerned though, that the original addresses in
the exports .lib file may not be touched... are they?  What
happens to module authors presume that the export libraries
are authoritative, and aren't rebased in that editbin pass?
And, does Apache.exe now need fixups?

Don't worry today about stripping back out the base offsets in
the .dsp's... we can touch that later.

Can I suggest a small modification for legibility (I didn't see
aprlib in there on the first scan), provide this facility in all 
builds (including debug, it doesn't hurt anything) and change 
!MESSAGE to echo, since !message doesn't emit when expected?

Submitted by Tim Costello [mailto:timcostello@ozemail.com.au]

Index: apache-2.0/src/Makefile.win
===================================================================
RCS file: /cvs/apache/apache-2.0/src/Makefile.win,v
retrieving revision 1.8
diff -u -r1.8 Makefile.win
--- Makefile.win	2000/04/17 13:45:42	1.8
+++ Makefile.win	2000/04/18 05:04:39
@@ -16,6 +16,8 @@
 #
 # Note: this does *NOT* change the compiled in default "server root"
 
+TOP_DLL_LOCATION=0x70000000
+
 !IF "$(INSTDIR)" == ""
 INSTDIR=\Apache
 !MESSAGE Using default install directory \Apache
@@ -94,6 +96,23 @@
 #       cd modules\proxy
 #        nmake /nologo CFG="ApacheModuleProxy - Win32 $(LONG)" -f ApacheModuleProxy.mak RECURSE=0
$(CTARGET)
 #       cd ..\..
+        echo Rebasing DLLs from $(TOP_DLL_LOCATION) down.
+        editbin /REBASE:DOWN,BASE=$(TOP_DLL_LOCATION) \
+                lib\apr\$(LONG)\aprlib.dll \
+                Core$(SHORT)\ApacheCore.dll \
+                os\win32\ApacheModuleStatus$(SHORT)\ApacheModuleStatus.dll \
+#               os\win32\ApacheModuleInfo$(SHORT)\ApacheModuleInfo.dll \
+                os\win32\ApacheModuleAuthAnon$(SHORT)\ApacheModuleAuthAnon.dll \
+                os\win32\ApacheModuleDigest$(SHORT)\ApacheModuleDigest.dll \
+                os\win32\ApacheModuleCERNMeta$(SHORT)\ApacheModuleCERNMeta.dll \
+                os\win32\ApacheModuleExpires$(SHORT)\ApacheModuleExpires.dll \
+                os\win32\ApacheModuleHeaders$(SHORT)\ApacheModuleHeaders.dll \
+                os\win32\ApacheModuleRewrite$(SHORT)\ApacheModuleRewrite.dll \
+                os\win32\ApacheModuleSpeling$(SHORT)\ApacheModuleSpeling.dll \
+                os\win32\ApacheModuleUserTrack$(SHORT)\ApacheModuleUserTrack.dll \
+#               modules\proxy\$(LONG)\ApacheModuleProxy.dll
+                > NUL
+
 
 _install:
 	-mkdir $(INSTDIR)

Mime
View raw message