aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2012-05-10 03:25:17 +0000
committerH.J. Lu <hjl.tools@gmail.com>2012-05-10 03:25:17 +0000
commit8cf0d2dd210b73dff4a2d63d60c49e42b86565a7 (patch)
treec73a06cc9dcf7ab583730ab2273ced526febf4cd /ld
parent968bf8f19d1668f5ad2b6cd6c7c251e72ed09756 (diff)
downloadgdb-8cf0d2dd210b73dff4a2d63d60c49e42b86565a7.zip
gdb-8cf0d2dd210b73dff4a2d63d60c49e42b86565a7.tar.gz
gdb-8cf0d2dd210b73dff4a2d63d60c49e42b86565a7.tar.bz2
Check 64-bit relocation addend overflow for x32
bfd/ * elf64-x86-64.c (elf_x86_64_relocate_section): Check addend overflow for R_X86_64_RELATIVE64. gas/ * config/tc-i386.c (tc_gen_reloc): Check x32 addend overflow for BFD_RELOC_64. gas/testsuite/ * gas/i386/ilp32/ilp32.exp: Run reloc64-inval. * gas/i386/ilp32/reloc64.s: Add tests for ".quad". * gas/i386/ilp32/reloc64.d: Updated. * gas/i386/ilp32/reloc64-inval.l: New file. * gas/i386/ilp32/reloc64-inval.s: Likewise. ld/testsuite/ * ld-x86-64/ilp32-11.d: New file. * ld-x86-64/ilp32-11.s: Likewise. * ld-x86-64/x86-64.exp: Run ilp32-11.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog7
-rw-r--r--ld/testsuite/ld-x86-64/ilp32-11.d3
-rw-r--r--ld/testsuite/ld-x86-64/ilp32-11.s9
-rw-r--r--ld/testsuite/ld-x86-64/x86-64.exp1
4 files changed, 20 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index ae46fd0..34e8d62 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2012-05-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ * ld-x86-64/ilp32-11.d: New file.
+ * ld-x86-64/ilp32-11.s: Likewise.
+
+ * ld-x86-64/x86-64.exp: Run ilp32-11.
+
2012-05-05 H.J. Lu <hongjiu.lu@intel.com>
PR ld/14052
diff --git a/ld/testsuite/ld-x86-64/ilp32-11.d b/ld/testsuite/ld-x86-64/ilp32-11.d
new file mode 100644
index 0000000..7240c58
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-11.d
@@ -0,0 +1,3 @@
+#as: --x32
+#ld: -shared -melf32_x86_64
+#error: .*addend 2147483647 in relocation R_X86_64_64 against symbol `.text' at 0x0 in section `.data.rel.local' is out of range
diff --git a/ld/testsuite/ld-x86-64/ilp32-11.s b/ld/testsuite/ld-x86-64/ilp32-11.s
new file mode 100644
index 0000000..2c85385
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-11.s
@@ -0,0 +1,9 @@
+ .section .data.rel.local,"aw",@progbits
+ .align 8
+.Ljmp:
+ .quad func + 0x7fffffff
+
+ .text
+ .type func, @function
+func:
+ ret
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index 27174d5..e8afbc2 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -253,6 +253,7 @@ run_dump_test "ilp32-7"
run_dump_test "ilp32-8"
run_dump_test "ilp32-9"
run_dump_test "ilp32-10"
+run_dump_test "ilp32-11"
run_dump_test "ia32-1"
run_dump_test "ia32-2"
run_dump_test "ia32-3"