mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
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.
This commit is contained in:
parent
44301db1ac
commit
8a1b824af7
@ -1,3 +1,9 @@
|
||||
2018-01-20 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/22721
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_check_relocs): Check the
|
||||
versioned __tls_get_addr symbol.
|
||||
|
||||
2018-01-19 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* po/fr.po: Updated French translation.
|
||||
|
@ -856,8 +856,17 @@ _bfd_x86_elf_link_check_relocs (bfd *abfd, struct bfd_link_info *info)
|
||||
htab->tls_get_addr,
|
||||
FALSE, FALSE, FALSE);
|
||||
if (h != NULL)
|
||||
{
|
||||
elf_x86_hash_entry (h)->tls_get_addr = 1;
|
||||
|
||||
/* Check the versioned __tls_get_addr symbol. */
|
||||
while (h->root.type == bfd_link_hash_indirect)
|
||||
{
|
||||
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
||||
elf_x86_hash_entry (h)->tls_get_addr = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* "__ehdr_start" will be defined by linker as a hidden symbol
|
||||
later if it is referenced and not defined. */
|
||||
h = elf_link_hash_lookup (elf_hash_table (info),
|
||||
|
@ -1,3 +1,11 @@
|
||||
2018-01-20 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
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.
|
||||
|
||||
2018-01-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* testsuite/ld-elf/group1.d: Also xfail Solaris.
|
||||
|
@ -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"]
|
||||
|
7
ld/testsuite/ld-plugin/pr22721.t
Normal file
7
ld/testsuite/ld-plugin/pr22721.t
Normal file
@ -0,0 +1,7 @@
|
||||
SUNWprivate_1.1 {
|
||||
global:
|
||||
__tls_get_addr;
|
||||
___tls_get_addr;
|
||||
local:
|
||||
*;
|
||||
};
|
8
ld/testsuite/ld-plugin/pr22721a.s
Normal file
8
ld/testsuite/ld-plugin/pr22721a.s
Normal file
@ -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
|
7
ld/testsuite/ld-plugin/pr22721b.c
Normal file
7
ld/testsuite/ld-plugin/pr22721b.c
Normal file
@ -0,0 +1,7 @@
|
||||
__thread int foo_var = 1;
|
||||
|
||||
int
|
||||
_start (void)
|
||||
{
|
||||
return foo_var;
|
||||
}
|
Loading…
Reference in New Issue
Block a user