aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-plugin
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2018-01-20 14:25:24 -0800
committerH.J. Lu <hjl.tools@gmail.com>2018-01-20 14:29:36 -0800
commit8a1b824af786989f879ab1421a4279f60bba141a (patch)
treef65b22a2b06df3077fd57cb0978c81fc28d320ea /ld/testsuite/ld-plugin
parent44301db1ac68cd26c559df225fe6d1bbc96638a0 (diff)
downloadgdb-8a1b824af786989f879ab1421a4279f60bba141a.zip
gdb-8a1b824af786989f879ab1421a4279f60bba141a.tar.gz
gdb-8a1b824af786989f879ab1421a4279f60bba141a.tar.bz2
x86: Check the versioned __tls_get_addr symbol
We need to check the versioned __tls_get_addr symbol when looking up "__tls_get_addr". bfd/ PR ld/22721 * elfxx-x86.c (_bfd_x86_elf_link_check_relocs): Check the versioned __tls_get_addr symbol. ld/ PR ld/22721 * testsuite/ld-plugin/lto.exp: Run PR ld/22721 tests. * testsuite/ld-plugin/pr22721.t: New file. * testsuite/ld-plugin/pr22721a.s: Likewise. * testsuite/ld-plugin/pr22721b.c: Likewise.
Diffstat (limited to 'ld/testsuite/ld-plugin')
-rw-r--r--ld/testsuite/ld-plugin/lto.exp26
-rw-r--r--ld/testsuite/ld-plugin/pr22721.t7
-rw-r--r--ld/testsuite/ld-plugin/pr22721a.s8
-rw-r--r--ld/testsuite/ld-plugin/pr22721b.c7
4 files changed, 48 insertions, 0 deletions
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
index 93f9649..896f453 100644
--- a/ld/testsuite/ld-plugin/lto.exp
+++ b/ld/testsuite/ld-plugin/lto.exp
@@ -510,6 +510,32 @@ if { [at_least_gcc_version 4 7] } {
} {
fail $testname
}
+
+ run_cc_link_tests [list \
+ [list \
+ "Build pr22721a.so" \
+ "-shared -nostdlib -nostartfiles -Wl,-version-script,pr22721.t" \
+ "" \
+ {pr22721a.s} \
+ {} \
+ "pr22721a.so" \
+ ] \
+ [list \
+ "Build pr22721b.o" \
+ "$plug_opt" \
+ "-O2 -fPIC -flto $lto_no_fat" \
+ {pr22721b.c} \
+ ] \
+ [list \
+ "Build PR ld/pr22721" \
+ "-O2 -flto -fuse-linker-plugin -nostdlib -nostartfiles \
+ -Wl,-e,_start tmpdir/pr22721b.o tmpdir/pr22721a.so" \
+ "" \
+ {dummy.c} \
+ {} \
+ "pr22721.exe"
+ ] \
+ ]
}
set testname "PR ld/12942 (3)"
set exec_output [run_host_cmd "$CXX" "-O2 -flto -fuse-linker-plugin tmpdir/pr12942b.o tmpdir/pr12942a.o"]
diff --git a/ld/testsuite/ld-plugin/pr22721.t b/ld/testsuite/ld-plugin/pr22721.t
new file mode 100644
index 0000000..9269529
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr22721.t
@@ -0,0 +1,7 @@
+SUNWprivate_1.1 {
+global:
+ __tls_get_addr;
+ ___tls_get_addr;
+local:
+ *;
+};
diff --git a/ld/testsuite/ld-plugin/pr22721a.s b/ld/testsuite/ld-plugin/pr22721a.s
new file mode 100644
index 0000000..e06079e
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr22721a.s
@@ -0,0 +1,8 @@
+ .text
+ .globl __tls_get_addr
+ .globl ___tls_get_addr
+ .type __tls_get_addr,%function
+ .set ___tls_get_addr, __tls_get_addr
+__tls_get_addr:
+ .byte 0
+ .size __tls_get_addr, .-__tls_get_addr
diff --git a/ld/testsuite/ld-plugin/pr22721b.c b/ld/testsuite/ld-plugin/pr22721b.c
new file mode 100644
index 0000000..ec42cdc
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr22721b.c
@@ -0,0 +1,7 @@
+__thread int foo_var = 1;
+
+int
+_start (void)
+{
+ return foo_var;
+}