x86: Don't define _TLS_MODULE_BASE_ for ld -r

bfd/

	PR ld/29820
	* elfxx-x86.c (_bfd_x86_elf_always_size_sections): Don't define
	 _TLS_MODULE_BASE_ for ld -r.

ld/

	PR ld/29820
	* testsuite/ld-x86-64/pr29820.d: New file.
	* testsuite/ld-x86-64/pr29820.s: Likewise.
	* testsuite/ld-x86-64/x86-64.ex: Run pr29820.
This commit is contained in:
H.J. Lu 2022-11-22 13:58:47 -08:00
parent 26c527e62e
commit 04ad71937f
4 changed files with 20 additions and 1 deletions

View file

@ -2932,7 +2932,7 @@ _bfd_x86_elf_always_size_sections (bfd *output_bfd,
{
asection *tls_sec = elf_hash_table (info)->tls_sec;
if (tls_sec)
if (tls_sec && !bfd_link_relocatable (info))
{
struct elf_link_hash_entry *tlsbase;

View file

@ -0,0 +1,6 @@
#ld: -r
#readelf: -s -W
#...
+[0-9]+: +0+ +0 +TLS +GLOBAL +DEFAULT +UND +_TLS_MODULE_BASE_
#pass

View file

@ -0,0 +1,12 @@
.text
leaq _TLS_MODULE_BASE_@tlsdesc(%rip), %rax
call *_TLS_MODULE_BASE_@tlscall(%rax)
movl %fs:a@dtpoff(%rax), %edx
addl %fs:b@dtpoff(%rax), %edx
.section .tbss
.zero 8
a:
.zero 4
b:
.zero 4

View file

@ -728,6 +728,7 @@ run_dump_test "pr27016a"
run_dump_test "pr27016b"
run_dump_test "report-reloc-1"
run_dump_test "report-reloc-1-x32"
run_dump_test "pr29820"
proc undefined_weak {cflags ldflags} {
set testname "Undefined weak symbol"