x86: Put back BFD_RELOC_X86_64_GOTPCREL
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 9 Dec 2018 15:22:14 +0000 (07:22 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 9 Dec 2018 15:22:14 +0000 (07:22 -0800)
Put back BFD_RELOC_X86_64_GOTPCREL in TC_FORCE_RELOCATION_LOCAL, which
was removed by

commit 56ceb5b5405af23eddd12e12d8ba849010120324
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Oct 22 04:49:20 2015 -0700

    Add R_X86_64_[REX_]GOTPCRELX support to gas and ld

by accident.

gas/ChangeLog
gas/config/tc-i386.h
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-gotpcrel-2.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-gotpcrel-2.s [new file with mode: 0644]

index 10eede5ce4b70ae78626efcfcf7cc0e62ed0db7f..586823ac80a60b833a0340f452ee1546e05681ae 100644 (file)
@@ -1,3 +1,13 @@
+2018-12-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/pr23968
+       * config/tc-i386.h (TC_FORCE_RELOCATION_LOCAL): Put back
+       BFD_RELOC_X86_64_GOTPCREL.
+       * testsuite/gas/i386/i386.exp: Run x86-64-gotpcrel-2.
+       * testsuite/gas/i386/x86-64-gotpcrel-2.d: New file.
+       * testsuite/gas/i386/x86-64-gotpcrel-2.s: Likewise.
+       * testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d: Likewise.
+
 2018-12-07  Jim Wilson  <jimw@sifive.com>
 
        PR gas/23956
index 5426301025cd19c21b81658802f61258b1d3d9f1..e172158799b463abe91f652fa0db131fcfd50761 100644 (file)
@@ -174,6 +174,7 @@ extern int tc_i386_fix_adjustable (struct fix *);
   (GENERIC_FORCE_RELOCATION_LOCAL (FIX)                                \
    || (FIX)->fx_r_type == BFD_RELOC_386_PLT32                  \
    || (FIX)->fx_r_type == BFD_RELOC_386_GOTPC                  \
+   || (FIX)->fx_r_type == BFD_RELOC_X86_64_GOTPCREL            \
    || (FIX)->fx_r_type == BFD_RELOC_X86_64_GOTPCRELX           \
    || (FIX)->fx_r_type == BFD_RELOC_X86_64_REX_GOTPCRELX)
 
index e3eeaf87ea5588040fc3e0b72fcd2eb51c64c361..e721069bab8b60e47cb6e6a19fff710a84b77c27 100644 (file)
@@ -1037,6 +1037,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
 
        run_dump_test "x86-64-gotpcrel"
        run_dump_test "x86-64-gotpcrel-no-relax"
+       run_dump_test "x86-64-gotpcrel-2"
 
        run_dump_test "x86-64-addend"
        run_dump_test "x86-64-nop-3"
diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d b/gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d
new file mode 100644 (file)
index 0000000..41b9ac2
--- /dev/null
@@ -0,0 +1,13 @@
+#source: ../x86-64-gotpcrel-2.s
+#as: --x32 -mrelax-relocations=no
+#objdump: -dwr
+#name: x86-64 (ILP32) gotpcrel (2)
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+ +[a-f0-9]+:   48 8b 05 00 00 00 00    mov    0x0\(%rip\),%rax        # 7 <foo\+0x7>   3: R_X86_64_GOTPCREL    foo-0x4
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-gotpcrel-2.d b/gas/testsuite/gas/i386/x86-64-gotpcrel-2.d
new file mode 100644 (file)
index 0000000..3d07631
--- /dev/null
@@ -0,0 +1,11 @@
+#as: -mrelax-relocations=no
+#objdump: -dwr
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <foo>:
+ +[a-f0-9]+:   48 8b 05 00 00 00 00    mov    0x0\(%rip\),%rax        # 7 <foo\+0x7>   3: R_X86_64_GOTPCREL    foo-0x4
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-gotpcrel-2.s b/gas/testsuite/gas/i386/x86-64-gotpcrel-2.s
new file mode 100644 (file)
index 0000000..db5ddf5
--- /dev/null
@@ -0,0 +1,3 @@
+       .text
+foo:
+       movq    foo@GOTPCREL(%rip), %rax