Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com Message-ID: <003901c0f174$cecc9bf0$0200a8c0@lifelesswks> From: "Robert Collins" To: References: <001f01c0f0e6$72b8ec80$0200a8c0 AT lifelesswks> <20010610004015 DOT D29231 AT redhat DOT com> Subject: Re: dll base address Date: Sun, 10 Jun 2001 16:15:54 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4133.2400 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-OriginalArrivalTime: 10 Jun 2001 06:05:52.0256 (UTC) FILETIME=[67463000:01C0F173] ----- Original Message ----- From: "Christopher Faylor" To: Sent: Sunday, June 10, 2001 2:40 PM Subject: Re: dll base address > On Sat, Jun 09, 2001 at 11:16:51PM +1000, Robert Collins wrote: > >I haven't fixed the problem I reported with Paul Solovoskys patched ld, > >but I have a lead... it seems to be that cygwin1.dll is loaded after a > >dll that I was linking to, and that cygwin1.dll is getting relocated : > > > >(gdb) info dll > >DLL Name Load Address > >f:/src/ldt/auto-import-sample/dll.dll 610c1000 > >e:/cygwin/bin/cygwin1.dll 02561000 > >e:/winnt/system32/kernel32.dll 77e81000 > >e:/winnt/system32/advapi32.dll 77db1000 > >e:/winnt/system32/rpcrt4.dll 77d41000 > >(gdb) print __cygwin_user_data > >Cannot access memory at address 0x610933a0 > > > >As you can see, cygwin1.dll has been loaded at 02561000. It seems to me > >that if __cygwin_user_data is a non-relocatble variable, that we should > >mark cygwin1.dll as non-relocatable. > > > >Thoughts? > > It's possible that this is just an artifact of faulty handling by gdb. > I'm not aware of any reason for cygwin1.dll to be unrelocatable. > > If you look at the definition of __cygwin_user_data you'll see that > there is nothing magic about it. Do we account for a different base address when spawn()ing and fork()ing? I haven't looked deep enough to tell, but I can assert that the trivial test case with Paul's ld works when spawn()ed when the .dll created has a non-colliding base address. Rob > Alternate theories is that there is either something wrong with gcc/binutils, > that we are missing something in the way that cygwin1.dll is linked, or > that there is something wrong with Paul's patched ld. > > cgf >