PE32+ binaries that use addresses > 1^32 have a problem in that the linker
authorNick Clifton <nickc@redhat.com>
Fri, 11 Apr 2014 15:02:52 +0000 (16:02 +0100)
committerNick Clifton <nickc@redhat.com>
Fri, 11 Apr 2014 15:02:52 +0000 (16:02 +0100)
commit32ae0d80cd430150ad9536aa160f34f504e129bc
tree76b9dab3571164bcc1e07302277c471a07ae7f68
parent58a84dcf29b735ee776536b4c51ba90b51612b71
PE32+ binaries that use addresses > 1^32 have a problem in that the linker
converts some address expressions into absolute values, but the PE format
only stores absolutes as 32-bits.  This is a partial solution which attempts
to convert such absolute values back to section relative ones instead.  It
fails for symbols like __image_base and ImageBase__, but it is unclear as to
whether these values are ever actually used by applications.

PR ld/16821
* peXXigen.c (abs_finder): New function.
(_bfd_XXi_swap_sym_out): For absolute symbols with values larger
than 1^32 try to convert them into section relative values
instead.
bfd/ChangeLog
bfd/peXXigen.c