This is the mail archive of the
mailing list for the Cygwin project.
Re: [firstname.lastname@example.org: A serious bug of "ld --enable-auto-import"]
> 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
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html