This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: PATCH: PR gas/17598: R_X86_64_GOTPLT64 relocation isn't tested
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: Binutils <binutils at sourceware dot org>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 13 Nov 2014 11:30:52 -0800
- Subject: Re: PATCH: PR gas/17598: R_X86_64_GOTPLT64 relocation isn't tested
- Authentication-results: sourceware.org; auth=none
- References: <20141113191335 dot GA19846 at intel dot com>
On Thu, Nov 13, 2014 at 11:13 AM, H.J. Lu <hongjiu.lu@intel.com> wrote:
> Hi,
>
> R_X86_64_GOTPLT64 isn't necessary and R_X86_64_GOT64 should be used
> instead. I checked in this patch to add assembler support for @gotplt,
> but treat R_X86_64_GOTPLT64 the same R_X86_64_GOT64. There should be
> no impact on GCC since GCC never generates R_X86_64_GOTPLT64 and
> R_X86_64_GOT64 is optimal anyway.
>
>
> H.J.
> ---
> bfd/
>
> PR gas/17598
> * elf64-x86-64.c (elf_x86_64_check_relocs): Treat
> R_X86_64_GOTPLT64 the same as R_X86_64_GOT64.
> (elf_x86_64_relocate_section): Likewise.
>
> gas/
>
> PR gas/17598
> * config/tc-i386.c (reloc): Support BFD_RELOC_X86_64_GOTPLT64.
>
> gas/testsuite/
>
> PR gas/17598
> * gas/i386/reloc64.s: Add @gotplt check.
>
> * gas/i386/reloc64.d: Updated.
> * gas/i386/reloc64.l: Likewise.
>
> ld/testsuite/
>
> PR gas/17598
> * ld-x86-64/x86-64.exp: Run gotplt1.
>
> * ld-x86-64/gotplt1.d: New file.
> * ld-x86-64/gotplt1.s: Likewise.
I checked in this patch to mark R_X86_64_GOTPLT64 obsolete.
--
H.J.
--
diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog
index 001a940..aaee35d 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -1,3 +1,7 @@
+2014-11-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ * x86-64.h (R_X86_64_GOTPLT64): Mark it obsolete.
+
2014-10-17 Jose E. Marchesi <jose.marchesi@oracle.com>
* sparc.h (ELF_SPARC_HWCAP2_VIS3B): Documentation improved.
diff --git a/include/elf/x86-64.h b/include/elf/x86-64.h
index d0dda47..13f87b2 100644
--- a/include/elf/x86-64.h
+++ b/include/elf/x86-64.h
@@ -58,8 +58,7 @@ START_RELOC_NUMBERS (elf_x86_64_reloc_type)
offset to GOT entry */
RELOC_NUMBER (R_X86_64_GOTPC64, 29) /* 64 bit signed pc relative
offset to GOT */
- RELOC_NUMBER (R_X86_64_GOTPLT64, 30) /* like GOT64, but indicates
- that PLT entry is needed */
+ RELOC_NUMBER (R_X86_64_GOTPLT64, 30) /* Obsolete. The same
as GOT64. */
RELOC_NUMBER (R_X86_64_PLTOFF64, 31) /* 64 bit GOT relative offset
to PLT entry */
RELOC_NUMBER (R_X86_64_SIZE32, 32) /* 32-bit symbol size */