summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2015-02-17 09:14:59 +1030
committerAlan Modra <amodra@gmail.com>2015-02-18 00:31:52 +1030
commit2ec55de302e4a6c49a06c673c8262a119fa6226f (patch)
treef70feefc1fc7d5694f3f3b702e2e05cd68b35e1d
parent69efdff130b843838e791065335b44d5f91f7075 (diff)
downloadbinutils-gdb-2ec55de302e4a6c49a06c673c8262a119fa6226f.tar.gz
Properly place the NULL STT_FILE symbol revistited
I was having a little closer look at what is going on here and noticed that HJ unconditionally emits a NULL STT_FILE symbol before emitting forced local symbols. That means we really don't need a second pass over forced local symbols. The only reason for two passes is when some forced local symbol can be emitted before the NULL STT_FILE. So I set about removing the second pass, updating the testsuite all over again. It's also unnecessary to emit the NULL STT_FILE when no previous file symbol has been emitted. bfd/ PR ld/17975 * elflink.c (struct elf_outext_info): Remove need_second_pass and second_pass. (elf_link_output_extsym): Delete code handling second forced local pass. Move code emitting NULL STT_FILE symbol later, so that it can be omitted if forced local is stripped. Don't emit the NULL STT_FILE if no file symbols have been output. (bfd_elf_final_link): Remove second forced local pass. * elf32-ppc.c (add_stub_sym): Set linker_def on linker syms. (ppc_elf_size_dynamic_sections): Likewise. * elf64-ppc.c (ppc_build_one_stub): Likewise. (build_global_entry_stubs): Likewise. (ppc64_elf_build_stubs): Likewise. ld/testsuite/ PR ld/17975 * ld-aarch64/gc-tls-relocs.d, * ld-alpha/tlspic.rd, * ld-cris/libdso-2.d, * ld-i386/tlsdesc-nacl.rd, * ld-i386/tlsdesc.rd, * ld-i386/tlsnopic-nacl.rd, * ld-i386/tlsnopic.rd, * ld-i386/tlspic-nacl.rd, * ld-i386/tlspic.rd, * ld-ia64/tlspic.rd, * ld-powerpc/tlsexe.r, * ld-powerpc/tlsexetoc.r, * ld-powerpc/tlsso.r, * ld-powerpc/tlstocso.r, * ld-s390/tlspic.rd, * ld-s390/tlspic_64.rd, * ld-sparc/tlssunnopic32.rd, * ld-sparc/tlssunnopic64.rd, * ld-sparc/tlssunpic32.rd, * ld-sparc/tlssunpic64.rd, * ld-tic6x/shlib-1.rd, * ld-tic6x/shlib-1b.rd, * ld-tic6x/shlib-1r.rd, * ld-tic6x/shlib-1rb.rd, * ld-tic6x/shlib-noindex.rd, * ld-x86-64/tlsdesc-nacl.rd, * ld-x86-64/tlsdesc.rd, * ld-x86-64/tlspic-nacl.rd, * ld-x86-64/tlspic.rd: Update.
-rw-r--r--bfd/ChangeLog16
-rw-r--r--bfd/elf32-ppc.c3
-rw-r--r--bfd/elf64-ppc.c3
-rw-r--r--bfd/elflink.c64
-rw-r--r--ld/testsuite/ChangeLog17
-rw-r--r--ld/testsuite/ld-aarch64/gc-tls-relocs.d2
-rw-r--r--ld/testsuite/ld-alpha/tlspic.rd6
-rw-r--r--ld/testsuite/ld-i386/tlsdesc-nacl.rd4
-rw-r--r--ld/testsuite/ld-i386/tlsdesc.rd4
-rw-r--r--ld/testsuite/ld-i386/tlsnopic-nacl.rd2
-rw-r--r--ld/testsuite/ld-i386/tlsnopic.rd2
-rw-r--r--ld/testsuite/ld-i386/tlspic-nacl.rd4
-rw-r--r--ld/testsuite/ld-i386/tlspic.rd4
-rw-r--r--ld/testsuite/ld-ia64/tlspic.rd6
-rw-r--r--ld/testsuite/ld-powerpc/tlsexe.r6
-rw-r--r--ld/testsuite/ld-powerpc/tlsexetoc.r6
-rw-r--r--ld/testsuite/ld-powerpc/tlsso.r2
-rw-r--r--ld/testsuite/ld-powerpc/tlstocso.r2
-rw-r--r--ld/testsuite/ld-s390/tlspic.rd4
-rw-r--r--ld/testsuite/ld-s390/tlspic_64.rd4
-rw-r--r--ld/testsuite/ld-sparc/tlssunnopic32.rd4
-rw-r--r--ld/testsuite/ld-sparc/tlssunnopic64.rd4
-rw-r--r--ld/testsuite/ld-sparc/tlssunpic32.rd6
-rw-r--r--ld/testsuite/ld-sparc/tlssunpic64.rd6
-rw-r--r--ld/testsuite/ld-tic6x/shlib-1.rd2
-rw-r--r--ld/testsuite/ld-tic6x/shlib-1b.rd2
-rw-r--r--ld/testsuite/ld-tic6x/shlib-1r.rd2
-rw-r--r--ld/testsuite/ld-tic6x/shlib-1rb.rd2
-rw-r--r--ld/testsuite/ld-tic6x/shlib-noindex.rd2
-rw-r--r--ld/testsuite/ld-x86-64/tlsdesc-nacl.rd4
-rw-r--r--ld/testsuite/ld-x86-64/tlsdesc.rd4
-rw-r--r--ld/testsuite/ld-x86-64/tlspic-nacl.rd4
-rw-r--r--ld/testsuite/ld-x86-64/tlspic.rd4
33 files changed, 114 insertions, 93 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0cd8bbd1805..44fc2bb83ed 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,19 @@
+2015-02-17 Alan Modra <amodra@gmail.com>
+
+ PR ld/17975
+ * elflink.c (struct elf_outext_info): Remove need_second_pass
+ and second_pass.
+ (elf_link_output_extsym): Delete code handling second forced
+ local pass. Move code emitting NULL STT_FILE symbol later, so
+ that it can be omitted if forced local is stripped. Don't
+ emit the NULL STT_FILE if no file symbols have been output.
+ (bfd_elf_final_link): Remove second forced local pass.
+ * elf32-ppc.c (add_stub_sym): Set linker_def on linker syms.
+ (ppc_elf_size_dynamic_sections): Likewise.
+ * elf64-ppc.c (ppc_build_one_stub): Likewise.
+ (build_global_entry_stubs): Likewise.
+ (ppc64_elf_build_stubs): Likewise.
+
2015-02-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17975
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 8d8167a4253..33f59c82b20 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -5685,6 +5685,7 @@ add_stub_sym (struct plt_entry *ent,
sh->ref_regular_nonweak = 1;
sh->forced_local = 1;
sh->non_elf = 0;
+ sh->root.linker_def = 1;
}
return TRUE;
}
@@ -6366,6 +6367,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd,
sh->ref_regular_nonweak = 1;
sh->forced_local = 1;
sh->non_elf = 0;
+ sh->root.linker_def = 1;
}
sh = elf_link_hash_lookup (&htab->elf, "__glink_PLTresolve",
TRUE, FALSE, FALSE);
@@ -6381,6 +6383,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd,
sh->ref_regular_nonweak = 1;
sh->forced_local = 1;
sh->non_elf = 0;
+ sh->root.linker_def = 1;
}
}
}
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 38bc3fb392a..a2ddb41a402 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -10950,6 +10950,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
h->ref_regular_nonweak = 1;
h->forced_local = 1;
h->non_elf = 0;
+ h->root.linker_def = 1;
}
}
@@ -12653,6 +12654,7 @@ build_global_entry_stubs (struct elf_link_hash_entry *h, void *inf)
h->ref_regular_nonweak = 1;
h->forced_local = 1;
h->non_elf = 0;
+ h->root.linker_def = 1;
}
}
@@ -12726,6 +12728,7 @@ ppc64_elf_build_stubs (struct bfd_link_info *info,
h->ref_regular_nonweak = 1;
h->forced_local = 1;
h->non_elf = 0;
+ h->root.linker_def = 1;
}
}
plt0 = (htab->elf.splt->output_section->vma
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 541129a56a9..038e43d3834 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -7441,8 +7441,6 @@ struct elf_outext_info
{
bfd_boolean failed;
bfd_boolean localsyms;
- bfd_boolean need_second_pass;
- bfd_boolean second_pass;
bfd_boolean file_sym_done;
struct elf_final_link_info *flinfo;
};
@@ -8821,25 +8819,6 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
{
if (!h->forced_local)
return TRUE;
- if (eoinfo->second_pass
- && !((h->root.type == bfd_link_hash_defined
- || h->root.type == bfd_link_hash_defweak)
- && h->root.u.def.section->output_section != NULL))
- return TRUE;
-
- if (!eoinfo->file_sym_done && eoinfo->flinfo->filesym_count)
- {
- /* Output a FILE symbol so that following locals are not associated
- with the wrong input file. */
- memset (&sym, 0, sizeof (sym));
- sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FILE);
- sym.st_shndx = SHN_ABS;
- if (!elf_link_output_sym (eoinfo->flinfo, NULL, &sym,
- bfd_und_section_ptr, NULL))
- return FALSE;
-
- eoinfo->file_sym_done = TRUE;
- }
}
else
{
@@ -9001,16 +8980,6 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
input_sec = h->root.u.def.section;
if (input_sec->output_section != NULL)
{
- if (eoinfo->localsyms && flinfo->filesym_count == 1)
- {
- bfd_boolean second_pass_sym
- = h->forced_local && !h->root.linker_def;
-
- eoinfo->need_second_pass |= second_pass_sym;
- if (eoinfo->second_pass != second_pass_sym)
- return TRUE;
- }
-
sym.st_shndx =
_bfd_elf_section_from_bfd_section (flinfo->output_bfd,
input_sec->output_section);
@@ -9241,6 +9210,29 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
if (strip || (input_sec->flags & SEC_EXCLUDE) != 0)
return TRUE;
+ /* Output a FILE symbol so that following locals are not associated
+ with the wrong input file. We need one for forced local symbols
+ if we've seen more than one FILE symbol or when we have exactly
+ one FILE symbol but global symbols are present in a file other
+ than the one with the FILE symbol. We also need one if linker
+ defined symbols are present. In practice these conditions are
+ always met, so just emit the FILE symbol unconditionally. */
+ if (eoinfo->localsyms
+ && !eoinfo->file_sym_done
+ && eoinfo->flinfo->filesym_count != 0)
+ {
+ Elf_Internal_Sym fsym;
+
+ memset (&fsym, 0, sizeof (fsym));
+ fsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FILE);
+ fsym.st_shndx = SHN_ABS;
+ if (!elf_link_output_sym (eoinfo->flinfo, NULL, &fsym,
+ bfd_und_section_ptr, NULL))
+ return FALSE;
+
+ eoinfo->file_sym_done = TRUE;
+ }
+
indx = bfd_get_symcount (flinfo->output_bfd);
ret = elf_link_output_sym (flinfo, h->root.root.string, &sym, input_sec, h);
if (ret == 0)
@@ -11153,21 +11145,11 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
eoinfo.failed = FALSE;
eoinfo.flinfo = &flinfo;
eoinfo.localsyms = TRUE;
- eoinfo.need_second_pass = FALSE;
- eoinfo.second_pass = FALSE;
eoinfo.file_sym_done = FALSE;
bfd_hash_traverse (&info->hash->table, elf_link_output_extsym, &eoinfo);
if (eoinfo.failed)
return FALSE;
- if (eoinfo.need_second_pass)
- {
- eoinfo.second_pass = TRUE;
- bfd_hash_traverse (&info->hash->table, elf_link_output_extsym, &eoinfo);
- if (eoinfo.failed)
- return FALSE;
- }
-
/* If backend needs to output some local symbols not present in the hash
table, do it now. */
if (bed->elf_backend_output_arch_local_syms
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 46f951843ee..64f08714a2d 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,20 @@
+2015-02-17 Alan Modra <amodra@gmail.com>
+
+ PR ld/17975
+ * ld-aarch64/gc-tls-relocs.d, * ld-alpha/tlspic.rd,
+ * ld-cris/libdso-2.d, * ld-i386/tlsdesc-nacl.rd, * ld-i386/tlsdesc.rd,
+ * ld-i386/tlsnopic-nacl.rd, * ld-i386/tlsnopic.rd,
+ * ld-i386/tlspic-nacl.rd, * ld-i386/tlspic.rd, * ld-ia64/tlspic.rd,
+ * ld-powerpc/tlsexe.r, * ld-powerpc/tlsexetoc.r,
+ * ld-powerpc/tlsso.r, * ld-powerpc/tlstocso.r,
+ * ld-s390/tlspic.rd, * ld-s390/tlspic_64.rd,
+ * ld-sparc/tlssunnopic32.rd, * ld-sparc/tlssunnopic64.rd,
+ * ld-sparc/tlssunpic32.rd, * ld-sparc/tlssunpic64.rd,
+ * ld-tic6x/shlib-1.rd, * ld-tic6x/shlib-1b.rd, * ld-tic6x/shlib-1r.rd,
+ * ld-tic6x/shlib-1rb.rd, * ld-tic6x/shlib-noindex.rd,
+ * ld-x86-64/tlsdesc-nacl.rd, * ld-x86-64/tlsdesc.rd,
+ * ld-x86-64/tlspic-nacl.rd, * ld-x86-64/tlspic.rd: Update.
+
2015-02-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17975
diff --git a/ld/testsuite/ld-aarch64/gc-tls-relocs.d b/ld/testsuite/ld-aarch64/gc-tls-relocs.d
index 5380bc02207..191647ca310 100644
--- a/ld/testsuite/ld-aarch64/gc-tls-relocs.d
+++ b/ld/testsuite/ld-aarch64/gc-tls-relocs.d
@@ -16,8 +16,8 @@ SYMBOL TABLE:
0+8000 l d \.text 0+ \.text
0+9000 l d \.got 0+ \.got
0+0000 l df \*ABS\* 0+ .*
-0+0000 l \*UND\* 0+ __tls_get_addr
0+0000 l df \*ABS\* 0+
+0+0000 l \*UND\* 0+ __tls_get_addr
0+9000 l O \.got 0+ _GLOBAL_OFFSET_TABLE_
0+8000 g \.text 0+ _start
diff --git a/ld/testsuite/ld-alpha/tlspic.rd b/ld/testsuite/ld-alpha/tlspic.rd
index cedd2d63b25..7a978475de6 100644
--- a/ld/testsuite/ld-alpha/tlspic.rd
+++ b/ld/testsuite/ld-alpha/tlspic.rd
@@ -96,13 +96,12 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +9 sl7
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +9 sl8
.* FILE +LOCAL +DEFAULT +ABS
-.* [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
-.* [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
-.* [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +10 sH1
+.* [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +9 sh3
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +10 sH2
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +10 sH7
+.* [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +9 sh7
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +9 sh8
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +10 sH4
@@ -113,6 +112,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +10 sH6
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +10 sH8
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +9 sh1
+.* [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +9 sh2
.* [0-9a-f]+ +0 +TLS +LOCAL +DEFAULT +9 sh6
.* [0-9a-f]+ +0 +TLS +GLOBAL +DEFAULT +9 sg8
diff --git a/ld/testsuite/ld-i386/tlsdesc-nacl.rd b/ld/testsuite/ld-i386/tlsdesc-nacl.rd
index 6e6df1b8500..c8c82f3efe6 100644
--- a/ld/testsuite/ld-i386/tlsdesc-nacl.rd
+++ b/ld/testsuite/ld-i386/tlsdesc-nacl.rd
@@ -120,10 +120,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+38 +0 +TLS +LOCAL +DEFAULT +7 sl7
+[0-9]+: 0+3c +0 +TLS +LOCAL +DEFAULT +7 sl8
.* FILE +LOCAL +DEFAULT +ABS
+ +[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +8 sH1
+[0-9]+: 0+ +0 +TLS +LOCAL +DEFAULT +7 _TLS_MODULE_BASE_
+[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +9 _DYNAMIC
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +11 _GLOBAL_OFFSET_TABLE_
- +[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +8 sH1
+[0-9]+: 0+48 +0 +TLS +LOCAL +DEFAULT +7 sh3
+[0-9]+: 0+64 +0 +TLS +LOCAL +DEFAULT +8 sH2
+[0-9]+: 0+78 +0 +TLS +LOCAL +DEFAULT +8 sH7
@@ -137,6 +136,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+74 +0 +TLS +LOCAL +DEFAULT +8 sH6
+[0-9]+: 0+7c +0 +TLS +LOCAL +DEFAULT +8 sH8
+[0-9]+: 0+40 +0 +TLS +LOCAL +DEFAULT +7 sh1
+ +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +11 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+44 +0 +TLS +LOCAL +DEFAULT +7 sh2
+[0-9]+: 0+54 +0 +TLS +LOCAL +DEFAULT +7 sh6
+[0-9]+: 0+1c +0 +TLS +GLOBAL +DEFAULT +7 sg8
diff --git a/ld/testsuite/ld-i386/tlsdesc.rd b/ld/testsuite/ld-i386/tlsdesc.rd
index e57ec0727e1..9b00c3923e7 100644
--- a/ld/testsuite/ld-i386/tlsdesc.rd
+++ b/ld/testsuite/ld-i386/tlsdesc.rd
@@ -118,10 +118,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+38 +0 +TLS +LOCAL +DEFAULT +7 sl7
+[0-9]+: 0+3c +0 +TLS +LOCAL +DEFAULT +7 sl8
.* FILE +LOCAL +DEFAULT +ABS
+ +[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +8 sH1
+[0-9]+: 0+ +0 +TLS +LOCAL +DEFAULT +7 _TLS_MODULE_BASE_
+[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +9 _DYNAMIC
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +11 _GLOBAL_OFFSET_TABLE_
- +[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +8 sH1
+[0-9]+: 0+48 +0 +TLS +LOCAL +DEFAULT +7 sh3
+[0-9]+: 0+64 +0 +TLS +LOCAL +DEFAULT +8 sH2
+[0-9]+: 0+78 +0 +TLS +LOCAL +DEFAULT +8 sH7
@@ -135,6 +134,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+74 +0 +TLS +LOCAL +DEFAULT +8 sH6
+[0-9]+: 0+7c +0 +TLS +LOCAL +DEFAULT +8 sH8
+[0-9]+: 0+40 +0 +TLS +LOCAL +DEFAULT +7 sh1
+ +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +11 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+44 +0 +TLS +LOCAL +DEFAULT +7 sh2
+[0-9]+: 0+54 +0 +TLS +LOCAL +DEFAULT +7 sh6
+[0-9]+: 0+1c +0 +TLS +GLOBAL +DEFAULT +7 sg8
diff --git a/ld/testsuite/ld-i386/tlsnopic-nacl.rd b/ld/testsuite/ld-i386/tlsnopic-nacl.rd
index a458bb698e9..d3fe642cd91 100644
--- a/ld/testsuite/ld-i386/tlsnopic-nacl.rd
+++ b/ld/testsuite/ld-i386/tlsnopic-nacl.rd
@@ -104,10 +104,10 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+10 +0 +TLS +LOCAL +DEFAULT +6 bl5
.* FILE +LOCAL +DEFAULT +ABS
+[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +7 _DYNAMIC
- +[0-9]+: 0*1001031c +0 +OBJECT +LOCAL +DEFAULT +9 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+1c +0 +TLS +LOCAL +DEFAULT +6 sh3
+[0-9]+: 0+20 +0 +TLS +LOCAL +DEFAULT +6 sh4
+[0-9]+: 0+14 +0 +TLS +LOCAL +DEFAULT +6 sh1
+ +[0-9]+: 0*1001031c +0 +OBJECT +LOCAL +DEFAULT +9 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+18 +0 +TLS +LOCAL +DEFAULT +6 sh2
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sg3
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sg4
diff --git a/ld/testsuite/ld-i386/tlsnopic.rd b/ld/testsuite/ld-i386/tlsnopic.rd
index 01edba99625..9b163c8f2ae 100644
--- a/ld/testsuite/ld-i386/tlsnopic.rd
+++ b/ld/testsuite/ld-i386/tlsnopic.rd
@@ -102,10 +102,10 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+10 +0 +TLS +LOCAL +DEFAULT +6 bl5
.* FILE +LOCAL +DEFAULT +ABS
+[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +7 _DYNAMIC
- +[0-9]+: 0+218c +0 +OBJECT +LOCAL +DEFAULT +9 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+1c +0 +TLS +LOCAL +DEFAULT +6 sh3
+[0-9]+: 0+20 +0 +TLS +LOCAL +DEFAULT +6 sh4
+[0-9]+: 0+14 +0 +TLS +LOCAL +DEFAULT +6 sh1
+ +[0-9]+: 0+218c +0 +OBJECT +LOCAL +DEFAULT +9 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+18 +0 +TLS +LOCAL +DEFAULT +6 sh2
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sg3
+[0-9]+: 0+ +0 +TLS +GLOBAL +DEFAULT +UND sg4
diff --git a/ld/testsuite/ld-i386/tlspic-nacl.rd b/ld/testsuite/ld-i386/tlspic-nacl.rd
index 4a8797f9214..77dd9ce9a00 100644
--- a/ld/testsuite/ld-i386/tlspic-nacl.rd
+++ b/ld/testsuite/ld-i386/tlspic-nacl.rd
@@ -125,9 +125,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+38 +0 +TLS +LOCAL +DEFAULT +8 sl7
+[0-9]+: 0+3c +0 +TLS +LOCAL +DEFAULT +8 sl8
.* FILE +LOCAL +DEFAULT +ABS
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +9 sH1
+ +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
+[0-9]+: 0+48 +0 +TLS +LOCAL +DEFAULT +8 sh3
+[0-9]+: 0+64 +0 +TLS +LOCAL +DEFAULT +9 sH2
+[0-9]+: 0+78 +0 +TLS +LOCAL +DEFAULT +9 sH7
@@ -141,6 +140,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+74 +0 +TLS +LOCAL +DEFAULT +9 sH6
+[0-9]+: 0+7c +0 +TLS +LOCAL +DEFAULT +9 sH8
+[0-9]+: 0+40 +0 +TLS +LOCAL +DEFAULT +8 sh1
+ +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+44 +0 +TLS +LOCAL +DEFAULT +8 sh2
+[0-9]+: 0+54 +0 +TLS +LOCAL +DEFAULT +8 sh6
+[0-9]+: 0+1c +0 +TLS +GLOBAL +DEFAULT +8 sg8
diff --git a/ld/testsuite/ld-i386/tlspic.rd b/ld/testsuite/ld-i386/tlspic.rd
index 68697fc4214..e26dc70834a 100644
--- a/ld/testsuite/ld-i386/tlspic.rd
+++ b/ld/testsuite/ld-i386/tlspic.rd
@@ -123,9 +123,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+38 +0 +TLS +LOCAL +DEFAULT +8 sl7
+[0-9]+: 0+3c +0 +TLS +LOCAL +DEFAULT +8 sl8
.* FILE +LOCAL +DEFAULT +ABS
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
- +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +9 sH1
+ +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
+[0-9]+: 0+48 +0 +TLS +LOCAL +DEFAULT +8 sh3
+[0-9]+: 0+64 +0 +TLS +LOCAL +DEFAULT +9 sH2
+[0-9]+: 0+78 +0 +TLS +LOCAL +DEFAULT +9 sH7
@@ -139,6 +138,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+74 +0 +TLS +LOCAL +DEFAULT +9 sH6
+[0-9]+: 0+7c +0 +TLS +LOCAL +DEFAULT +9 sH8
+[0-9]+: 0+40 +0 +TLS +LOCAL +DEFAULT +8 sh1
+ +[0-9]+: [0-9a-f]+ +0 +OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+44 +0 +TLS +LOCAL +DEFAULT +8 sh2
+[0-9]+: 0+54 +0 +TLS +LOCAL +DEFAULT +8 sh6
+[0-9]+: 0+1c +0 +TLS +GLOBAL +DEFAULT +8 sg8
diff --git a/ld/testsuite/ld-ia64/tlspic.rd b/ld/testsuite/ld-ia64/tlspic.rd
index 7abf82d1071..9666f8631fe 100644
--- a/ld/testsuite/ld-ia64/tlspic.rd
+++ b/ld/testsuite/ld-ia64/tlspic.rd
@@ -99,7 +99,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +10 sl6
.* TLS +LOCAL +DEFAULT +10 sl7
.* TLS +LOCAL +DEFAULT +10 sl8
+.* FILE +LOCAL +DEFAULT +ABS
.* TLS +LOCAL +DEFAULT +11 sH1
+.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +10 sh3
.* TLS +LOCAL +DEFAULT +11 sH2
.* TLS +LOCAL +DEFAULT +11 sH7
@@ -113,11 +115,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +11 sH6
.* TLS +LOCAL +DEFAULT +11 sH8
.* TLS +LOCAL +DEFAULT +10 sh1
+.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +10 sh2
.* TLS +LOCAL +DEFAULT +10 sh6
-.* FILE +LOCAL +DEFAULT +ABS .*
-.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
-.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +GLOBAL +DEFAULT +10 sg8
.* TLS +GLOBAL +DEFAULT +10 sg3
.* TLS +GLOBAL +DEFAULT +10 sg4
diff --git a/ld/testsuite/ld-powerpc/tlsexe.r b/ld/testsuite/ld-powerpc/tlsexe.r
index 9ce45e0aa37..443bae872b6 100644
--- a/ld/testsuite/ld-powerpc/tlsexe.r
+++ b/ld/testsuite/ld-powerpc/tlsexe.r
@@ -98,9 +98,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +8 le5
.* FILE +LOCAL +DEFAULT +ABS
.* OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
-.* (FUNC|NOTYPE) +LOCAL +DEFAULT +UND \.__tls_get_addr(|_opt)
-.* NOTYPE +LOCAL +DEFAULT +7 __glink_PLTresolve
-.* NOTYPE +LOCAL +DEFAULT +7 .*\.plt_call\.__tls_get_addr(|_opt)
+.* (NOTYPE +LOCAL +DEFAULT +7 __glink_PLTresolve|(FUNC|NOTYPE) +LOCAL +DEFAULT +UND \.__tls_get_addr(|_opt))
+.* (NOTYPE +LOCAL +DEFAULT +7 .*\.plt_call\.__tls_get_addr(|_opt)|NOTYPE +LOCAL +DEFAULT +7 __glink_PLTresolve)
+.* ((FUNC|NOTYPE) +LOCAL +DEFAULT +UND \.__tls_get_addr(|_opt)|NOTYPE +LOCAL +DEFAULT +7 .*\.plt_call\.__tls_get_addr(|_opt))
.* GLOBAL +DEFAULT +UND gd
.* GLOBAL +DEFAULT +9 le0
.* GLOBAL +DEFAULT +9 ld0
diff --git a/ld/testsuite/ld-powerpc/tlsexetoc.r b/ld/testsuite/ld-powerpc/tlsexetoc.r
index eed4589b0a3..bb6462f6b34 100644
--- a/ld/testsuite/ld-powerpc/tlsexetoc.r
+++ b/ld/testsuite/ld-powerpc/tlsexetoc.r
@@ -98,9 +98,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* NOTYPE +LOCAL +DEFAULT +12 \.Lie0
.* FILE +LOCAL +DEFAULT +ABS
.* OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
-.* (FUNC|NOTYPE) +LOCAL +DEFAULT +UND \.__tls_get_addr(|_opt)
-.* NOTYPE +LOCAL +DEFAULT +7 __glink_PLTresolve
-.* NOTYPE +LOCAL +DEFAULT +7 .*\.plt_call\.__tls_get_addr(|_opt)
+.* (NOTYPE +LOCAL +DEFAULT +7 __glink_PLTresolve|(FUNC|NOTYPE) +LOCAL +DEFAULT +UND \.__tls_get_addr(|_opt))
+.* (NOTYPE +LOCAL +DEFAULT +7 .*\.plt_call\.__tls_get_addr(|_opt)|NOTYPE +LOCAL +DEFAULT +7 __glink_PLTresolve)
+.* ((FUNC|NOTYPE) +LOCAL +DEFAULT +UND \.__tls_get_addr(|_opt)|NOTYPE +LOCAL +DEFAULT +7 .*\.plt_call\.__tls_get_addr(|_opt))
.* TLS +GLOBAL +DEFAULT +UND gd
.* TLS +GLOBAL +DEFAULT +9 le0
.* TLS +GLOBAL +DEFAULT +9 ld0
diff --git a/ld/testsuite/ld-powerpc/tlsso.r b/ld/testsuite/ld-powerpc/tlsso.r
index 870bd0f7e0c..3a5b8089233 100644
--- a/ld/testsuite/ld-powerpc/tlsso.r
+++ b/ld/testsuite/ld-powerpc/tlsso.r
@@ -114,9 +114,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +7 le5
.* FILE +LOCAL +DEFAULT +ABS
.* OBJECT +LOCAL +DEFAULT +9 _DYNAMIC
-.* NOTYPE +LOCAL +DEFAULT +UND \.__tls_get_addr
.* NOTYPE +LOCAL +DEFAULT +6 .*\.plt_call\.__tls_get_addr
.* NOTYPE +LOCAL +DEFAULT +6 __glink_PLTresolve
+.* NOTYPE +LOCAL +DEFAULT +UND \.__tls_get_addr
.* TLS +GLOBAL +DEFAULT +UND gd
.* TLS +GLOBAL +DEFAULT +8 le0
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr
diff --git a/ld/testsuite/ld-powerpc/tlstocso.r b/ld/testsuite/ld-powerpc/tlstocso.r
index 16423276252..075e3037585 100644
--- a/ld/testsuite/ld-powerpc/tlstocso.r
+++ b/ld/testsuite/ld-powerpc/tlstocso.r
@@ -110,9 +110,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* NOTYPE +LOCAL +DEFAULT +11 \.Lie0
.* FILE +LOCAL +DEFAULT +ABS
.* OBJECT +LOCAL +DEFAULT +9 _DYNAMIC
-.* NOTYPE +LOCAL +DEFAULT +UND \.__tls_get_addr
.* NOTYPE +LOCAL +DEFAULT +6 .*\.plt_call\.__tls_get_addr
.* NOTYPE +LOCAL +DEFAULT +6 __glink_PLTresolve
+.* NOTYPE +LOCAL +DEFAULT +UND \.__tls_get_addr
.* TLS +GLOBAL +DEFAULT +UND gd
.* TLS +GLOBAL +DEFAULT +8 le0
.* NOTYPE +GLOBAL +DEFAULT +UND __tls_get_addr
diff --git a/ld/testsuite/ld-s390/tlspic.rd b/ld/testsuite/ld-s390/tlspic.rd
index d1be91946b8..37ebe47f438 100644
--- a/ld/testsuite/ld-s390/tlspic.rd
+++ b/ld/testsuite/ld-s390/tlspic.rd
@@ -111,9 +111,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +8 sl7
.* TLS +LOCAL +DEFAULT +8 sl8
.* FILE +LOCAL +DEFAULT +ABS
-.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
-.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +9 sH1
+.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +8 sh3
.* TLS +LOCAL +DEFAULT +9 sH2
.* TLS +LOCAL +DEFAULT +9 sH7
@@ -127,6 +126,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +9 sH6
.* TLS +LOCAL +DEFAULT +9 sH8
.* TLS +LOCAL +DEFAULT +8 sh1
+.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +8 sh2
.* TLS +LOCAL +DEFAULT +8 sh6
.* TLS +GLOBAL +DEFAULT +8 sg8
diff --git a/ld/testsuite/ld-s390/tlspic_64.rd b/ld/testsuite/ld-s390/tlspic_64.rd
index 41124c510f9..9b4105c7139 100644
--- a/ld/testsuite/ld-s390/tlspic_64.rd
+++ b/ld/testsuite/ld-s390/tlspic_64.rd
@@ -111,9 +111,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +8 sl7
.* TLS +LOCAL +DEFAULT +8 sl8
.* FILE +LOCAL +DEFAULT +ABS
-.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
-.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +9 sH1
+.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +8 sh3
.* TLS +LOCAL +DEFAULT +9 sH2
.* TLS +LOCAL +DEFAULT +9 sH7
@@ -127,6 +126,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +9 sH6
.* TLS +LOCAL +DEFAULT +9 sH8
.* TLS +LOCAL +DEFAULT +8 sh1
+.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +8 sh2
.* TLS +LOCAL +DEFAULT +8 sh6
.* TLS +GLOBAL +DEFAULT +8 sg8
diff --git a/ld/testsuite/ld-sparc/tlssunnopic32.rd b/ld/testsuite/ld-sparc/tlssunnopic32.rd
index a04a8bc9972..21d07c0fdfe 100644
--- a/ld/testsuite/ld-sparc/tlssunnopic32.rd
+++ b/ld/testsuite/ld-sparc/tlssunnopic32.rd
@@ -81,11 +81,11 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +6 bl5
.* FILE +LOCAL +DEFAULT +ABS
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
-.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
-.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh3
+.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh4
.* TLS +LOCAL +DEFAULT +6 sh1
+.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh2
.* FUNC +GLOBAL +DEFAULT +5 fn3
.* TLS +GLOBAL +DEFAULT +UND sg1
diff --git a/ld/testsuite/ld-sparc/tlssunnopic64.rd b/ld/testsuite/ld-sparc/tlssunnopic64.rd
index 370191a3f0b..6825aa906ba 100644
--- a/ld/testsuite/ld-sparc/tlssunnopic64.rd
+++ b/ld/testsuite/ld-sparc/tlssunnopic64.rd
@@ -83,11 +83,11 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +6 bl5
.* FILE +LOCAL +DEFAULT +ABS
.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
-.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
-.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh3
+.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh4
.* TLS +LOCAL +DEFAULT +6 sh1
+.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +6 sh2
.* FUNC +GLOBAL +DEFAULT +5 fn3
.* TLS +GLOBAL +DEFAULT +UND sg1
diff --git a/ld/testsuite/ld-sparc/tlssunpic32.rd b/ld/testsuite/ld-sparc/tlssunpic32.rd
index d3b56217d85..4d9673671ea 100644
--- a/ld/testsuite/ld-sparc/tlssunpic32.rd
+++ b/ld/testsuite/ld-sparc/tlssunpic32.rd
@@ -103,13 +103,12 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +7 sl7
.* TLS +LOCAL +DEFAULT +7 sl8
.* FILE +LOCAL +DEFAULT +ABS
-.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
-.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
-.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +8 sH1
+.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +7 sh3
.* TLS +LOCAL +DEFAULT +8 sH2
.* TLS +LOCAL +DEFAULT +8 sH7
+.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* TLS +LOCAL +DEFAULT +7 sh7
.* TLS +LOCAL +DEFAULT +7 sh8
.* TLS +LOCAL +DEFAULT +8 sH4
@@ -120,6 +119,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +8 sH6
.* TLS +LOCAL +DEFAULT +8 sH8
.* TLS +LOCAL +DEFAULT +7 sh1
+.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +7 sh2
.* TLS +LOCAL +DEFAULT +7 sh6
.* TLS +GLOBAL +DEFAULT +7 sg8
diff --git a/ld/testsuite/ld-sparc/tlssunpic64.rd b/ld/testsuite/ld-sparc/tlssunpic64.rd
index 107ee68662f..6f91fee0f4c 100644
--- a/ld/testsuite/ld-sparc/tlssunpic64.rd
+++ b/ld/testsuite/ld-sparc/tlssunpic64.rd
@@ -103,13 +103,12 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +7 sl7
.* TLS +LOCAL +DEFAULT +7 sl8
.* FILE +LOCAL +DEFAULT +ABS
-.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
-.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
-.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +8 sH1
+.* OBJECT +LOCAL +DEFAULT +ABS _DYNAMIC
.* TLS +LOCAL +DEFAULT +7 sh3
.* TLS +LOCAL +DEFAULT +8 sH2
.* TLS +LOCAL +DEFAULT +8 sH7
+.* OBJECT +LOCAL +DEFAULT +ABS _PROCEDURE_LINKAGE_TABLE_
.* TLS +LOCAL +DEFAULT +7 sh7
.* TLS +LOCAL +DEFAULT +7 sh8
.* TLS +LOCAL +DEFAULT +8 sH4
@@ -120,6 +119,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +8 sH6
.* TLS +LOCAL +DEFAULT +8 sH8
.* TLS +LOCAL +DEFAULT +7 sh1
+.* OBJECT +LOCAL +DEFAULT +ABS _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +7 sh2
.* TLS +LOCAL +DEFAULT +7 sh6
.* TLS +GLOBAL +DEFAULT +7 sg8
diff --git a/ld/testsuite/ld-tic6x/shlib-1.rd b/ld/testsuite/ld-tic6x/shlib-1.rd
index f19d749c3c6..58183262061 100644
--- a/ld/testsuite/ld-tic6x/shlib-1.rd
+++ b/ld/testsuite/ld-tic6x/shlib-1.rd
@@ -113,8 +113,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* 10000080 0 FUNC LOCAL HIDDEN 9 sub1
.* 00000000 0 FILE LOCAL DEFAULT ABS
.* 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
-.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000130 4 OBJECT LOCAL DEFAULT 12 c
+.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000100 0 NOTYPE LOCAL DEFAULT 10 __c6xabi_DSBT_BASE
.* 00000000 0 NOTYPE WEAK DEFAULT UND b
.* 00000000 0 NOTYPE WEAK DEFAULT UND g1
diff --git a/ld/testsuite/ld-tic6x/shlib-1b.rd b/ld/testsuite/ld-tic6x/shlib-1b.rd
index f19d749c3c6..58183262061 100644
--- a/ld/testsuite/ld-tic6x/shlib-1b.rd
+++ b/ld/testsuite/ld-tic6x/shlib-1b.rd
@@ -113,8 +113,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* 10000080 0 FUNC LOCAL HIDDEN 9 sub1
.* 00000000 0 FILE LOCAL DEFAULT ABS
.* 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
-.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000130 4 OBJECT LOCAL DEFAULT 12 c
+.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000100 0 NOTYPE LOCAL DEFAULT 10 __c6xabi_DSBT_BASE
.* 00000000 0 NOTYPE WEAK DEFAULT UND b
.* 00000000 0 NOTYPE WEAK DEFAULT UND g1
diff --git a/ld/testsuite/ld-tic6x/shlib-1r.rd b/ld/testsuite/ld-tic6x/shlib-1r.rd
index f19d749c3c6..58183262061 100644
--- a/ld/testsuite/ld-tic6x/shlib-1r.rd
+++ b/ld/testsuite/ld-tic6x/shlib-1r.rd
@@ -113,8 +113,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* 10000080 0 FUNC LOCAL HIDDEN 9 sub1
.* 00000000 0 FILE LOCAL DEFAULT ABS
.* 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
-.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000130 4 OBJECT LOCAL DEFAULT 12 c
+.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000100 0 NOTYPE LOCAL DEFAULT 10 __c6xabi_DSBT_BASE
.* 00000000 0 NOTYPE WEAK DEFAULT UND b
.* 00000000 0 NOTYPE WEAK DEFAULT UND g1
diff --git a/ld/testsuite/ld-tic6x/shlib-1rb.rd b/ld/testsuite/ld-tic6x/shlib-1rb.rd
index f19d749c3c6..58183262061 100644
--- a/ld/testsuite/ld-tic6x/shlib-1rb.rd
+++ b/ld/testsuite/ld-tic6x/shlib-1rb.rd
@@ -113,8 +113,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* 10000080 0 FUNC LOCAL HIDDEN 9 sub1
.* 00000000 0 FILE LOCAL DEFAULT ABS
.* 0000817c 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
-.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000130 4 OBJECT LOCAL DEFAULT 12 c
+.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000100 0 NOTYPE LOCAL DEFAULT 10 __c6xabi_DSBT_BASE
.* 00000000 0 NOTYPE WEAK DEFAULT UND b
.* 00000000 0 NOTYPE WEAK DEFAULT UND g1
diff --git a/ld/testsuite/ld-tic6x/shlib-noindex.rd b/ld/testsuite/ld-tic6x/shlib-noindex.rd
index 39d151311b8..62d237b5e4d 100644
--- a/ld/testsuite/ld-tic6x/shlib-noindex.rd
+++ b/ld/testsuite/ld-tic6x/shlib-noindex.rd
@@ -120,8 +120,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* 10000080 0 FUNC LOCAL HIDDEN 10 sub1
.* 00000000 0 FILE LOCAL DEFAULT ABS
.* 00008188 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
-.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000130 4 OBJECT LOCAL DEFAULT 13 c
+.* 1000010c 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
.* 10000100 0 NOTYPE LOCAL DEFAULT 11 __c6xabi_DSBT_BASE
.* 00000000 0 NOTYPE WEAK DEFAULT UND b
.* 00000000 0 NOTYPE WEAK DEFAULT UND g1
diff --git a/ld/testsuite/ld-x86-64/tlsdesc-nacl.rd b/ld/testsuite/ld-x86-64/tlsdesc-nacl.rd
index d37f6b8e09a..25bbd9ba812 100644
--- a/ld/testsuite/ld-x86-64/tlsdesc-nacl.rd
+++ b/ld/testsuite/ld-x86-64/tlsdesc-nacl.rd
@@ -131,10 +131,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+38 +0 +TLS +LOCAL +DEFAULT +8 sl7
+[0-9]+: 0+3c +0 +TLS +LOCAL +DEFAULT +8 sl8
.* FILE +LOCAL +DEFAULT +ABS
+ +[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +9 sH1
+[0-9]+: 0+ +0 +TLS +LOCAL +DEFAULT +8 _TLS_MODULE_BASE_
+[0-9]+: 0+100104e8 +0 +OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
- +[0-9]+: 0+10010680 +0 +OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
- +[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +9 sH1
+[0-9]+: 0+48 +0 +TLS +LOCAL +DEFAULT +8 sh3
+[0-9]+: 0+64 +0 +TLS +LOCAL +DEFAULT +9 sH2
+[0-9]+: 0+78 +0 +TLS +LOCAL +DEFAULT +9 sH7
@@ -148,6 +147,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+74 +0 +TLS +LOCAL +DEFAULT +9 sH6
+[0-9]+: 0+7c +0 +TLS +LOCAL +DEFAULT +9 sH8
+[0-9]+: 0+40 +0 +TLS +LOCAL +DEFAULT +8 sh1
+ +[0-9]+: 0+10010680 +0 +OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+44 +0 +TLS +LOCAL +DEFAULT +8 sh2
+[0-9]+: 0+54 +0 +TLS +LOCAL +DEFAULT +8 sh6
+[0-9]+: 0+1c +0 +TLS +GLOBAL +DEFAULT +8 sg8
diff --git a/ld/testsuite/ld-x86-64/tlsdesc.rd b/ld/testsuite/ld-x86-64/tlsdesc.rd
index ebd25b1a9c6..1efea46ead5 100644
--- a/ld/testsuite/ld-x86-64/tlsdesc.rd
+++ b/ld/testsuite/ld-x86-64/tlsdesc.rd
@@ -129,10 +129,9 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+38 +0 +TLS +LOCAL +DEFAULT +8 sl7
+[0-9]+: 0+3c +0 +TLS +LOCAL +DEFAULT +8 sl8
.* FILE +LOCAL +DEFAULT +ABS
+ +[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +9 sH1
+[0-9]+: 0+ +0 +TLS +LOCAL +DEFAULT +8 _TLS_MODULE_BASE_
+[0-9]+: 0+2011b8 +0 +OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
- +[0-9]+: 0+201350 +0 +OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
- +[0-9]+: 0+60 +0 +TLS +LOCAL +DEFAULT +9 sH1
+[0-9]+: 0+48 +0 +TLS +LOCAL +DEFAULT +8 sh3
+[0-9]+: 0+64 +0 +TLS +LOCAL +DEFAULT +9 sH2
+[0-9]+: 0+78 +0 +TLS +LOCAL +DEFAULT +9 sH7
@@ -146,6 +145,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
+[0-9]+: 0+74 +0 +TLS +LOCAL +DEFAULT +9 sH6
+[0-9]+: 0+7c +0 +TLS +LOCAL +DEFAULT +9 sH8
+[0-9]+: 0+40 +0 +TLS +LOCAL +DEFAULT +8 sh1
+ +[0-9]+: 0+201350 +0 +OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
+[0-9]+: 0+44 +0 +TLS +LOCAL +DEFAULT +8 sh2
+[0-9]+: 0+54 +0 +TLS +LOCAL +DEFAULT +8 sh6
+[0-9]+: 0+1c +0 +TLS +GLOBAL +DEFAULT +8 sg8
diff --git a/ld/testsuite/ld-x86-64/tlspic-nacl.rd b/ld/testsuite/ld-x86-64/tlspic-nacl.rd
index 0cc79517bf7..22336903740 100644
--- a/ld/testsuite/ld-x86-64/tlspic-nacl.rd
+++ b/ld/testsuite/ld-x86-64/tlspic-nacl.rd
@@ -115,9 +115,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +8 sl7
.* TLS +LOCAL +DEFAULT +8 sl8
.* FILE +LOCAL +DEFAULT +ABS
-.* OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
-.* OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +9 sH1
+.* OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
.* TLS +LOCAL +DEFAULT +8 sh3
.* TLS +LOCAL +DEFAULT +9 sH2
.* TLS +LOCAL +DEFAULT +9 sH7
@@ -131,6 +130,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +9 sH6
.* TLS +LOCAL +DEFAULT +9 sH8
.* TLS +LOCAL +DEFAULT +8 sh1
+.* OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +8 sh2
.* TLS +LOCAL +DEFAULT +8 sh6
.* TLS +GLOBAL +DEFAULT +8 sg8
diff --git a/ld/testsuite/ld-x86-64/tlspic.rd b/ld/testsuite/ld-x86-64/tlspic.rd
index 57035a99d27..c2830e97b05 100644
--- a/ld/testsuite/ld-x86-64/tlspic.rd
+++ b/ld/testsuite/ld-x86-64/tlspic.rd
@@ -113,9 +113,8 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +8 sl7
.* TLS +LOCAL +DEFAULT +8 sl8
.* FILE +LOCAL +DEFAULT +ABS
-.* OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
-.* OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +9 sH1
+.* OBJECT +LOCAL +DEFAULT +10 _DYNAMIC
.* TLS +LOCAL +DEFAULT +8 sh3
.* TLS +LOCAL +DEFAULT +9 sH2
.* TLS +LOCAL +DEFAULT +9 sH7
@@ -129,6 +128,7 @@ Symbol table '\.symtab' contains [0-9]+ entries:
.* TLS +LOCAL +DEFAULT +9 sH6
.* TLS +LOCAL +DEFAULT +9 sH8
.* TLS +LOCAL +DEFAULT +8 sh1
+.* OBJECT +LOCAL +DEFAULT +12 _GLOBAL_OFFSET_TABLE_
.* TLS +LOCAL +DEFAULT +8 sh2
.* TLS +LOCAL +DEFAULT +8 sh6
.* TLS +GLOBAL +DEFAULT +8 sg8