This is the mail archive of the cygwin-developers@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: dll base address


On Mon, Jun 11, 2001 at 12:09:34PM +1000, Robert Collins wrote:
>> >The only time that it will work well is when _every_ program run within
>> >that session (following a chain of fork() and spawn() calls) has _no_
>> >conflicting dlls in the same address space.
>>
>> Right, and, I use software on a regular basis which injects a DLL into
>> every executable that runs on the system.  I don't know where that DLL
>> loads now.  If it happens to load in the 0x61* range, I'm potentially
>> out of luck.
>
>Sorry, I was unclear. I meant that the existing behaviour of cygwin is
>such that it will only work when _every_ program .... address space.
>
>I.e. that you are _already_ out of luck with your injecting .dll tool
>because cygwin will be at 0x61*, or you would be observing the problem
>with differing map address's cross process.

I think I understood what you meant.  The software may well be injecting
its DLL into the 0x61* address.  I wouldn't know because every process on
the system uses this DLL.  The cygwin DLL should be automatically and
consistently relocating elsewhere.  I don't do any debugging on this
system so I wouldn't know for sure.

In this case, I guess the only thing we have to worry about is that
the other DLL isn't also marked unrelocatable.  I guess I'm just
reluctant to take this step because I don't know how common this
scenario might be.

I actually changed cygwin's base address to 61000000 back in 1997 or so
because of a similar scenario.  It used to be at the default 1000000 (or
whatever it is) and it was consistently getting relocated.  I thought
that this was probably resulting in a performance hit so I read up on
the algorithm for choosing where it should be loading, based on DLL
name, found that it should be something like 60000000 but that was
already populated by some other popular dll.  So I bumped the base to
61000000.

>> Of course, I'm not aware of any way to do this in ld, so this may all
>> be a moot discussion anyway.
>
>I'll go off and research that, if you are considering allowing it?

I guess I'd consider it if it were an option.  Otherwise, it is not
yet worth discussing in cygwin-developers.  It should be a binutils
mailing list topic.

cgf


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]