https://sourceware.org/bugzilla/show_bug.cgi?id=16835
Bug ID: 16835
Summary: PE/COFF: __image_base__ and __ImageBase have
different values
Product: binutils
Version: 2.25 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: corinna at vinschen dot de
Created attachment 7549
--> https://sourceware.org/bugzilla/attachment.cgi?id=7549&action=edit
Fix __ImageBase value for DLLs rebased to a fixed value in the .def file
When building DLLs with a .def file which also provides a fixed
image base address, then the values of __image_base__ and __ImageBase
differ.
The value of __image_base__ is correct (on 32 bit), the value of
__ImageBase looks weird.
The reason is that ld first evaluates the default address for
__image_base__ and then sets __ImageBase to the same value. However,
when ld encounters another image base address in the .def file, it
sets the value of __image_base__, but neglects to set __ImageBase
to the same value.
I attached a patch suggestion.
This patch does, of course, not fix the problem that both values,
__image_base__ as well as __ImageBase, are still truncated to 32 bit
on x86_64, if the DLL or executable is located at an address beyond
the lowest 32 bit memory address space.
Corinna
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils