PATCH: Invalid R_X86_64_GOTPCREL -> R_X86_64_PC32 conversions with binutils 2.24/2.25?

H.J. Lu hjl.tools@gmail.com
Wed Jun 24 17:25:00 GMT 2015


On Wed, Jun 24, 2015 at 4:26 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> I opened:
>
> https://sourceware.org/bugzilla/show_bug.cgi?id=18591
>
> H.J.
>

I checked in this patch to fix it.  Please it out.

Thanks.

H.J.
---
When converting "mov foo@GOTPCREL(%rip), %reg" to "lea foo(%rip), %reg"
with R_X86_64_PC32 relocation, it may overflow if the target section
is more than 2GB away.  This patch estimates distance between mov
instruction and the target section.  We convert R_X86_64_GOTPCREL to
R_X86_64_PC32 only if their distance is less than 2GB.

PR ld/18591
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Don't convert
R_X86_64_GOTPCREL to R_X86_64_PC32 if it will cause relocation
overflow.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Don-t-convert-R_X86_64_GOTPCREL-if-it-will-overflow.patch
Type: text/x-patch
Size: 8604 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20150624/18e46be8/attachment.bin>


More information about the Binutils mailing list