bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gas/29551] Wrong relocations against _GLOBAL_OFFSET_TABLE_


From: hjl.tools at gmail dot com
Subject: [Bug gas/29551] Wrong relocations against _GLOBAL_OFFSET_TABLE_
Date: Tue, 06 Sep 2022 19:46:46 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=29551

--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
We can't change _GLOBAL_OFFSET_TABLE_ nor _GLOBAL_OFFSET_TABLE_(%rip).
_GLOBAL_OFFSET_TABLE_ generates GOTPC32 relocation. 
_GLOBAL_OFFSET_TABLE_(%rip)
generates GOTPC32 relocation which is the same as PC32 since symbol is GOT.

But we should handle _GLOBAL_OFFSET_TABLE_@GOTPCREL(%rip).
i386_displacement first generates BFD_RELOC_X86_64_GOTPCREL for
symbol@GOTPCREL(%rip).  Then i386_finalize_displacement changes it
to BFD_RELOC_32_PCREL.  Before i386_validate_fix changes BFD_RELOC_32_PCREL
back to BFD_RELOC_X86_64_GOTPCREL, output_disp changes BFD_RELOC_32_PCREL
to BFD_RELOC_X86_64_GOTPC32 because symbol == _GLOBAL_OFFSET_TABLE_.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]