Add another testcase for PR ld/19719
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 20 Apr 2016 03:11:55 +0000 (20:11 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 20 Apr 2016 03:11:55 +0000 (20:11 -0700)
This test checks run-time relocation overflow with GOT relocation and
32-bit relocation against the same symbol.

PR ld/19719
* testsuite/ld-x86-64/pr19719.d: New file.
* testsuite/ld-x86-64/pr19719.s: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run pr19719.

ld/ChangeLog
ld/testsuite/ld-x86-64/pr19719.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr19719.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp

index 0701b12..e206ea3 100644 (file)
@@ -1,3 +1,10 @@
+2016-04-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/19719
+       * testsuite/ld-x86-64/pr19719.d: New file.
+       * testsuite/ld-x86-64/pr19719.s: Likewise.
+       * testsuite/ld-x86-64/x86-64.exp: Run pr19719.
+
 2016-04-18  Matthew Fortune  <matthew.fortune@imgtec.com>
 
        * ld.texinfo: Document NOCROSSREFS_TO script command.
diff --git a/ld/testsuite/ld-x86-64/pr19719.d b/ld/testsuite/ld-x86-64/pr19719.d
new file mode 100644 (file)
index 0000000..b2daf0e
--- /dev/null
@@ -0,0 +1,3 @@
+#as: --64
+#ld: -pie -melf_x86_64
+#error: .*relocation R_X86_64_32 against undefined symbol `foo' can not be used when making a shared object; recompile with -fPIC
diff --git a/ld/testsuite/ld-x86-64/pr19719.s b/ld/testsuite/ld-x86-64/pr19719.s
new file mode 100644 (file)
index 0000000..f446782
--- /dev/null
@@ -0,0 +1,16 @@
+       .text
+       .globl  _start
+       .type   _start, @function
+_start:
+       movl    foo_p(%rip), %eax
+       movq    foo@GOTPCREL(%rip), %rax
+       ret
+       .size   _start, .-_start
+       .globl  foo_p
+       .data
+       .align 4
+       .type   foo_p, @object
+       .weak foo
+       .size   foo_p, 4
+foo_p:
+       .long   foo
index 3cec4dd..2dba81d 100644 (file)
@@ -440,6 +440,7 @@ run_dump_test "pr19609-7c"
 run_dump_test "pr19609-7d"
 run_dump_test "pr19939a"
 run_dump_test "pr19939b"
+run_dump_test "pr19719"
 
 proc undefined_weak {cflags ldflags} {
     set testname "Undefined weak symbol"