Mailing-List: contact cygwin-help@sourceware.cygnus.com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe@sources.redhat.com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin@sources.redhat.com>
List-Help: <mailto:cygwin-help@sources.redhat.com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner@sources.redhat.com
Delivered-To: mailing list cygwin@sources.redhat.com
Date: Sun, 26 Aug 2001 02:13:56 -0400
Message-Id: <200108260613.CAA28557@envy.delorie.com>
X-Authentication-Warning: envy.delorie.com: dj set sender to dj@envy.delorie.com using -f
From: DJ Delorie <dj@delorie.com>
To: cwilson@ece.gatech.edu
CC: binutils@sources.redhat.com, cygwin@cygwin.com
In-reply-to: <3B888D76.6090102@ece.gatech.edu> (message from Charles Wilson on
	Sun, 26 Aug 2001 01:47:34 -0400)
Subject: Re: [aida_s@mx12.freecom.ne.jp: A serious bug of "ld --enable-auto-import"]
References: <3B8884F6.80708@ece.gatech.edu> <200108260530.BAA28221@envy.delorie.com> <3B888D76.6090102@ece.gatech.edu>


> Anyway, I'm confused.  The .o file already contains the "12" (actually, 
> 0c 00 00 00 in on-disk byte order), so gas has already done its work -- 
> properly.  The problem occurs during the linking step -- ld is ignoring 
> the offset stored within the opcode and is blindly stuffing in the 
> relocation address without adding the offset.

Ok, a couple of things:

In make_import_fixup in ld/emultempl/pe.em, it uses rel->addend
without also checking for the inline offset.  For formats that use an
inline addend, rel->addend may be zero.

Addends are very tricky in PE.  There's lots of comments about adding,
subtracting, adding, subtracting, etc, in various places in the code.

I don't think an import library *can* specify an offset to be added at
runtime.  From my understanding of the dll import/export system,
windows simply places the address of the thing being imported in the
location indicated.

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

