summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2018-12-09 07:22:14 -0800
committerH.J. Lu <hjl.tools@gmail.com>2018-12-09 07:34:33 -0800
commite8d7a880074c2fe2d552e850e7d53d492a9f4827 (patch)
tree96974da26a90884a97abe578f09d724d30e8fcd2
parent3050b43068674882b01a51351c5c39e950f0ee41 (diff)
downloadbinutils-gdb-e8d7a880074c2fe2d552e850e7d53d492a9f4827.tar.gz
x86: Put back BFD_RELOC_X86_64_GOTPCREL
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. (cherry picked from commit 9f52eab6a7a69870c7b5907a20b0305f30dbf2ae)
-rw-r--r--gas/ChangeLog10
-rw-r--r--gas/config/tc-i386.h1
-rw-r--r--gas/testsuite/gas/i386/i386.exp1
-rw-r--r--gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d13
-rw-r--r--gas/testsuite/gas/i386/x86-64-gotpcrel-2.d11
-rw-r--r--gas/testsuite/gas/i386/x86-64-gotpcrel-2.s3
6 files changed, 39 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 800cd69ba97..95ed8e4582e 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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-11-26 H.J. Lu <hongjiu.lu@intel.com>
PR gas/23854
diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h
index 6e4f440c094..db2e0f7fdb7 100644
--- a/gas/config/tc-i386.h
+++ b/gas/config/tc-i386.h
@@ -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)
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 40c5d127242..7514da6f5e8 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -953,6 +953,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"
}
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
index 00000000000..41b9ac2cc30
--- /dev/null
+++ b/gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d
@@ -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
index 00000000000..3d07631bd6a
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-gotpcrel-2.d
@@ -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
index 00000000000..db5ddf579a0
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-gotpcrel-2.s
@@ -0,0 +1,3 @@
+ .text
+foo:
+ movq foo@GOTPCREL(%rip), %rax