delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/01/04/13:50:04

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Date: Fri, 4 Jan 2002 13:53:55 -0500
From: Jason Tishler <jason AT tishler DOT net>
To: Cygwin <cygwin AT sources DOT redhat DOT com>
Cc: "Roth, Kevin P." <KPRoth AT MarathonOil DOT com>
Subject: Re: rebase for setup (curl)
Message-ID: <20020104185355.GA2172@dothill.com>
Mail-Followup-To: Cygwin <cygwin AT sources DOT redhat DOT com>,
"Roth, Kevin P." <KPRoth AT MarathonOil DOT com>
References: <6EB31774D39507408D04392F40A10B2BC1FEA4 AT FDYEXC202 DOT mgroupnet DOT com>
Mime-Version: 1.0
In-Reply-To: <6EB31774D39507408D04392F40A10B2BC1FEA4@FDYEXC202.mgroupnet.com>
User-Agent: Mutt/1.3.24i

On Fri, Jan 04, 2002 at 11:47:32AM -0500, Roth, Kevin P. wrote:
> Negative - I get no warnings at all during the building of
> cygcurl-2.dll.

Thanks for the confirmation.

> Here's the gcc line that actually dumps out the dll:
> 
> $  gcc -Wl,--base-file,.libs/cygcurl-2.dll-base -Wl,--dll -nostartfiles
> -Wl,-e, __cygwin_dll_entry AT 12 -o .libs/cygcurl-2.dll file.lo ...
> 
> I can send more of the build output if you'd like, or feel free to grab
> the source and run it yourself if you like (my commands, straight-forward
> though they may be, are all documented in my readme).

Actually, the above was very useful -- it got me thinking about PostgreSQL
DLLs, since they are made in an unconventional way.

Sure enough, rebase breaks pq.dll (one of the PostgreSQL DLLs) in exactly
the same way as cygcurl-2.dll:

    $ file pq.dll 
    pq.dll: MS Windows PE Intel 80386 console DLL
    $ objdump -p pq.dll | fgrep ImageBase
    ImageBase               67980000
    $ rebase -d -b 0x68000000 pq.dll 
    pq.dll: new base = 68000000, new size = 20000
    $ objdump -p pq.dll | fgrep ImageBase
    objdump: pq.dll: File format not recognized
    $ file pq.dll 
    pq.dll: MS-DOS executable (EXE), OS/2 or MS Windows

All PostgreSQL DLLs are created with dllwrap.  If I invoke dllwrap with
the verbose flag, we get the following:

    $ dllwrap -v -o pq.dll --dllname pq.dll --def pq.def fe-auth.o ...
    DLLTOOL name    : dlltool
    DLLTOOL options :  -v --dllname pq.dll --exclude-symbol=_cygwin_dll_entry AT 12 --def pq.def
    DRIVER name     : gcc
    DRIVER options  : -Wl,--dll -nostartfiles -o pq.dll -Wl,-e,__cygwin_dll_entry AT 12 -Wl,--image-base,0x67980000
    ...

So, the options passed to ld are the same for cygcurl-2.dll and pq.dll
except for the slight variation of --base-file versus --image-base.

I decided to table the search for the "offending" ld option(s) because
of the following gloomy thought:

    Given that rebase can break certain DLLs and that it is nearly
    impossible to control how arbitrary packages create their DLLs,
    can setup.exe's proposed rebase solution deal with this problem?
    Or, is the rebase solution doomed to failure?

Does anyone have any bright ideas?

Thanks,
Jason

--
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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019