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 Date: Sun, 10 Jun 2001 22:05:32 -0400 From: Christopher Faylor To: cygwin-developers AT cygwin DOT com Subject: Re: dll base address Message-ID: <20010610220532.A9806@redhat.com> Reply-To: cygwin-developers AT cygwin DOT com Mail-Followup-To: cygwin-developers AT cygwin DOT com References: <001f01c0f0e6$72b8ec80$0200a8c0 AT lifelesswks> <20010610004015 DOT D29231 AT redhat DOT com> <23114413578 DOT 20010610185633 AT logos-m DOT ru> <20010610120846 DOT B5292 AT redhat DOT com> <027801c0f210$d1e7c5c0$0200a8c0 AT lifelesswks> <20010610211823 DOT A9379 AT redhat DOT com> <02ee01c0f214$e27d63f0$0200a8c0 AT lifelesswks> <20010610214736 DOT B9379 AT redhat DOT com> <032101c0f219$b7d04dc0$0200a8c0 AT lifelesswks> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.11i In-Reply-To: <032101c0f219$b7d04dc0$0200a8c0@lifelesswks>; from robert.collins@itdomain.com.au on Mon, Jun 11, 2001 at 11:56:22AM +1000 On Mon, Jun 11, 2001 at 11:56:22AM +1000, Robert Collins wrote: >----- Original Message ----- >From: "Christopher Faylor" >To: >Sent: Monday, June 11, 2001 11:47 AM >Subject: Re: dll base address > > > >>>Trivial testcase: build a dll with normal ld witha base address of >>>0x610c0000. When linking against that .dll have that .dll listed >>>before cygwin1.dll in the imports section. >>> >>>Run that program from bash. Watch cpu hit 100%. Run that program from >>>cmd.exe. Watch it work :]. >>> >>> >> >>But, marking the DLL as unrelocatable will mean that the DLL will never >>be able to be relocated even when it will work perfectly well. > >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. >In a nutshell we have three options: >1) Make cygwin1.dll handle different base address cross-process >properly. >2) Mark cygwin1.dll non-relocatable until time and techniques to >implement 1) are found. >3) Ignore the issue until 1) occurs. > >I'm very happy to hear of other ways around the issue... but I think a >quite, easy and not dirty fix is entirely appropriate. After all the NT >Kernel address space is not relocatable, and we are performing similar >tasks :]. Of course, I'm not aware of any way to do this in ld, so this may all be a moot discussion anyway. cgf