Mail Archives: cygwin/2001/09/18/22:54:15
On Wed, Sep 19, 2001 at 12:47:32PM +1000, Robert Collins wrote:
>
>
>> -----Original Message-----
>> From: Charles Wilson [mailto:cwilson AT ece DOT gatech DOT edu]
>> > Solution: don't use auto-image-base. The overhead from relocation is
>> > quite low, why not let windows just do its thing.
>>
>>
>> Okay, suppose I have 5 dll's that are all based at the default,
>> 0x10000000. I start an exe that depends on those 5, so at
>> startup time
>> they all get relocated to (random) address in my exe's address space.
>> Then cygwin1.dll is loaded. But the random addresses chosen for the
>> relocation for the first 5 dlls MAY or may NOT conflict with
>> cygwin1.dll's *fixed* location.
>>
>> Boom (sometimes).
>>
>> How is this better than the current "boom (sometimes)"
>> behavior? What
>> am I missing?
>
>AFAIK Relocated .dll's will never push a .dll with a different base
>address out of the way. I.E. For that set of .dll's
>
>the program will get it's address 0x10000000, cygwin1.dll get's its base
>address, and the 5 .dll's get 5 other random address's.
>
>How is it better? With a .dll that conflicts with cygwin1.dll, it's boom
>(everytime) :].
Just in case anyone knows how to do this:
If I could *reserve* but not allocate a fixed amount of memory for the
cygwin heap on DLL load, this would fix the problem. I could
conceivably add another 512K of allocated memory to the end of every
cygwin DLL load but that just didn't seem right.
I played around with a lot of ld script file settings trying to achieve
this effect but I could never do it. I wouldn't be surprised that
Windows doesn't allow actually it because the concept requires a
sophisticated run time loader.
cgf
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -