[v2] gas/ELF: Allow local symbol with non-protected visibility

Message ID CAMe9rOrLRxD0iA3gjQhi=Qh_iRbHhuV2EkKu1u7UuzbS2fAzpA@mail.gmail.com
State New
Headers
Series [v2] gas/ELF: Allow local symbol with non-protected visibility |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply

Commit Message

H.J. Lu June 24, 2026, 10:37 a.m. UTC
  On Wed, Jun 24, 2026 at 1:59 PM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 24.06.2026 02:23, H.J. Lu wrote:
> > On Tue, Jun 23, 2026 at 10:22 PM Jan Beulich <jbeulich@suse.com> wrote:
> >>
> >> On 23.06.2026 15:54, Michael Matz wrote:
> >>> On Tue, 23 Jun 2026, Jan Beulich wrote:
> >>>>> I think that's a misinterpretation.  "a symbol is protected" is different
> >>>>> from "a symbol has STV_PROTECTED visibility".  The former is defined in
> >>>>> the section for the latter:
> >>>>>
> >>>>>   A symbol defined in the current component is protected if it is visible
> >>>>>   in other components but cannot be preempted. Any reference to such a
> >>>>>   symbol from within the defining component must be resolved to the
> >>>>>   definition in that component, even if there is a definition in another
> >>>>>   component that would interpose by the default rules. A symbol with
> >>>>>   STB_LOCAL binding will not have STV_PROTECTED visibility.
> >>>>>
> >>>>> and _that definition_ is invoked by STV_HIDDEN:
> >>>>>
> >>>>>   A symbol defined in the current component is hidden if its name is not
> >>>>>   visible to other components. Such a symbol is necessarily protected.
> >>>>>
> >>>>> IMHO it's clear that a symbol hence "can be protected" without having its
> >>>>> visibility be STV_PROTECTED.  Namely when it is STV_HIDDEN: its then
> >>>>> protected _and_ hidden (which is of course redundant, because hidden
> >>>>> implies protected, but as we are word-smithing, lets be precise).
> >>>>>
> >>>>> That a STB_LOCAL symbol cannot have STV_PROTECTED visibility doesn't
> >>>>> transfer to STV_HIDDEN from this wording, and from nothing else either,
> >>>>> conceptually binding and visibility are orthogonal concepts and this
> >>>>> specific disallowance for the STB_LOCAL+STV_PROTECTED combination is ...
> >>>>> well, specific.  That is the wart, not that STB_LOCAL+STV_HIDDEN was
> >>>>> "forgotten" to be disallowed.
> >>>>
> >>>> IOW what you're suggesting as interpretation is that while STV_PROTECTED
> >>>> and STB_LOCAL may not combine, the visibility-wise more restricting
> >>>> STV_HIDDEN may combine with STB_LOCAL?
> >>>
> >>> Yes.
> >>>
> >>>> Make no sense to me, I'm afraid.
> >>>
> >>> That may be, and I agree that creating such situation willingly would
> >>> be suspect.  But as we just saw, such combinations might be created
> >>> by an unlucky reality.
> >>
> >> Because of shortcomings in the tools used. I bet if there had been a
> >> warning, the approach chosen would have been a different one. (The
> >> approach chosen also isn't portable to non-ELF targets.)
> >>
> >>>  And again: binding and visiblity are _orthogonal_.
> >>> One is for link-editing, the other for runtime linking.  In principle all
> >>> combinations are "okay" (if questionable), and have obvious
> >>> implementations.  But it's only that specific combination
> >>> STB_LOCAL+STV_PROTECTED that is explicitely made ill-formed in the spec
> >>> (despite it being also obviously implementable).  So, sure, warning on
> >>> that combination can be done on the grounds of following the spec.  But no
> >>> other combination is so spelled out, so there's no basis for trying to
> >>> disallow them.
> >>
> >> As with many things in specs, what's spelled out and what's implied
> >> is a matter of interpretation. As I think follows from earlier replies,
> >> I can see that there is room for interpretation here, and hence mine
> >> may not match what was intended. Yet we won't know for any other
> >> interpretation either, seeing the state the ELF spec is in.
> >>
> >> If others are in favor of following your interpretation, then I'm not
> >> going to stand in the way. But as of now it's not going to be me to
> >> make a patch to that effect. I simply couldn't write a description
> >> for it in good faith.
> >>
> >>>> (And would also make the implementation harder.)
> >>>
> >>> If a warning is too costly to implement, then it shouldn't be there.
> >>> Though it seems surprising that checking for "is_local && is_protected"
> >>> should be materially more difficult than for "is_local && !is_default_vis".
> >>> (I haven't looked at the concrete patch, though).
> >>
> >> Well, you may be right and it's not really more complex.
> >>
> >> Jan
> >
> > Here is the patch.
>
> The "& ~STV_HIDDEN" is clearly bogus there. If we follow that alternative
> interpretation of the spec, no warning should be issued for STV_INTERNAL
> either. I'm also surprised you don't undo more of the respective testsuite
> changes then (i.e. about everywhere I had added .global to avoid the
> warning).
>
> Jan

Here is the v2 path to partially revert:

commit c4150acbda1b3ce0602f79cbb7700b39e577be7e
Author: Jan Beulich <jbeulich@suse.com>
Date:   Fri May 8 11:45:04 2026 +0200

    gas/ELF: warn upon non-default visibility of local symbols

and update elf_adjust_symtab to only warn local symbol with protected
visibility.
  

Comments

Jan Beulich June 24, 2026, 12:37 p.m. UTC | #1
On 24.06.2026 12:37, H.J. Lu wrote:
> Here is the v2 path to partially revert:
> 
> commit c4150acbda1b3ce0602f79cbb7700b39e577be7e
> Author: Jan Beulich <jbeulich@suse.com>
> Date:   Fri May 8 11:45:04 2026 +0200
> 
>     gas/ELF: warn upon non-default visibility of local symbols
> 
> and update elf_adjust_symtab to only warn local symbol with protected
> visibility.

Looks plausible to me now, yet as indicated I'm not going to approve it.
I'm merely not going to stand in the way.

Jan
  
Alan Modra June 25, 2026, 1:30 a.m. UTC | #2
On Wed, Jun 24, 2026 at 06:37:57PM +0800, H.J. Lu wrote:
> Here is the v2 path to partially revert:
> 
> commit c4150acbda1b3ce0602f79cbb7700b39e577be7e
> Author: Jan Beulich <jbeulich@suse.com>
> Date:   Fri May 8 11:45:04 2026 +0200
> 
>     gas/ELF: warn upon non-default visibility of local symbols
> 
> and update elf_adjust_symtab to only warn local symbol with protected
> visibility.

OK if this has been tested over a reasonable set of targets, ie. not
just x86.
  
H.J. Lu June 25, 2026, 2:11 a.m. UTC | #3
On Thu, Jun 25, 2026 at 9:30 AM Alan Modra <amodra@gmail.com> wrote:
>
> On Wed, Jun 24, 2026 at 06:37:57PM +0800, H.J. Lu wrote:
> > Here is the v2 path to partially revert:
> >
> > commit c4150acbda1b3ce0602f79cbb7700b39e577be7e
> > Author: Jan Beulich <jbeulich@suse.com>
> > Date:   Fri May 8 11:45:04 2026 +0200
> >
> >     gas/ELF: warn upon non-default visibility of local symbols
> >
> > and update elf_adjust_symtab to only warn local symbol with protected
> > visibility.
>
> OK if this has been tested over a reasonable set of targets, ie. not
> just x86.
>
> --
> Alan Modra

I also tested it with aarch64-linux-gnu and tic6x-elf.  No regressions.
I am checking it in.
  

Patch

From 4178c82b7401bca7c62f4790d5b8c555b38db1c0 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Wed, 24 Jun 2026 08:09:56 +0800
Subject: [PATCH v2] gas/ELF: Allow local symbol with non-protected visibility

In the source code extracted from glibc:

extern void _dl_sysinfo_int80 (void)
  __attribute__ ((visibility ("hidden")));

asm (".text\n\t"
     ".type _dl_sysinfo_int80,@function\n"
     "_dl_sysinfo_int80:\n\t"
     "int $0x80;\n\t"
     "ret");

uintptr_t
foo ()
{
  return (uintptr_t) _dl_sysinfo_int80;
}

_dl_sysinfo_int80 is a local function, but it is defined in an asm
statement.  Since it is referenced in C, it is declared as hidden,
which leads to an assembler warning:

Warning: local symbol `_dl_sysinfo_int80' has non-default visibility

Symbol binding and visiblity are orthogonal.  One is for link-editing,
the other for runtime linking.  In principle, all combinations are "okay"
(if questionable), and have obvious implementations.  But it's only that
specific combination STB_LOCAL+STV_PROTECTED that is explicitely made
ill-formed in the spec (despite it being also obviously implementable).
Warning on that combination can be done on the grounds of following the
spec.  But no other combination is so spelled out, so there's no basis
for trying to disallow them.

Partially revert:

commit c4150acbda1b3ce0602f79cbb7700b39e577be7e
Author: Jan Beulich <jbeulich@suse.com>
Date:   Fri May 8 11:45:04 2026 +0200

    gas/ELF: warn upon non-default visibility of local symbols

and update elf_adjust_symtab to only warn local symbol with protected
visibility.

binutils/

	PR gas/34312
	* testsuite/binutils-all/localize-hidden-1.l: Adjusted.
	* testsuite/binutils-all/nm-ver.s: Revert commit c4150acbda1.

gas/

	PR gas/34312
	* config/obj-elf.c (elf_adjust_symtab): Allow local symbol with
	non-protected visibility.
	* testsuite/gas/elf/visibility.l: Adjusted.
	* testsuite/gas/i386/tlsnopic.s: Revert commit c4150acbda1.

ld/

	PR gas/34312
	* testsuite/ld-aarch64/ifunc-21.s: Revert commit c4150acbda1.
	* testsuite/ld-aarch64/ifunc-21.s: Likewise.
	* testsuite/ld-tic6x/shlib-1.rd: Likewise.
	* testsuite/ld-tic6x/shlib-1.s: Likewise.
	* testsuite/ld-tic6x/shlib-1b.rd: Likewise.
	* testsuite/ld-tic6x/shlib-1r.dd: Likewise.
	* testsuite/ld-tic6x/shlib-1r.rd: Likewise.
	* testsuite/ld-tic6x/shlib-1rb.dd: Likewise.
	* testsuite/ld-tic6x/shlib-1rb.rd: Likewise.
	* testsuite/ld-tic6x/shlib-noindex.rd: Likewise.
	* testsuite/ld-tic6x/static-app-1.rd: Likewise.
	* testsuite/ld-tic6x/static-app-1b.rd: Likewise.
	* testsuite/ld-tic6x/static-app-1r.dd: Likewise.
	* testsuite/ld-tic6x/static-app-1r.rd: Likewise.
	* testsuite/ld-tic6x/static-app-1rb.dd: Likewise.
	* testsuite/ld-tic6x/static-app-1rb.rd: Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
---
 .../binutils-all/localize-hidden-1.l          |  4 +--
 binutils/testsuite/binutils-all/nm-ver.s      |  2 --
 gas/config/obj-elf.c                          |  7 ++--
 gas/testsuite/gas/elf/visibility.l            |  4 +--
 gas/testsuite/gas/i386/tlsnopic.s             |  1 -
 ld/testsuite/ld-aarch64/ifunc-21.s            |  1 -
 ld/testsuite/ld-tic6x/shlib-1.rd              | 28 ++++++++-------
 ld/testsuite/ld-tic6x/shlib-1.s               |  1 -
 ld/testsuite/ld-tic6x/shlib-1b.rd             | 28 ++++++++-------
 ld/testsuite/ld-tic6x/shlib-1r.dd             |  2 +-
 ld/testsuite/ld-tic6x/shlib-1r.rd             | 28 ++++++++-------
 ld/testsuite/ld-tic6x/shlib-1rb.dd            |  2 +-
 ld/testsuite/ld-tic6x/shlib-1rb.rd            | 28 ++++++++-------
 ld/testsuite/ld-tic6x/shlib-noindex.rd        | 28 ++++++++-------
 ld/testsuite/ld-tic6x/static-app-1.rd         | 35 ++++++++++---------
 ld/testsuite/ld-tic6x/static-app-1b.rd        | 35 ++++++++++---------
 ld/testsuite/ld-tic6x/static-app-1r.dd        |  2 +-
 ld/testsuite/ld-tic6x/static-app-1r.rd        | 33 ++++++++---------
 ld/testsuite/ld-tic6x/static-app-1rb.dd       |  2 +-
 ld/testsuite/ld-tic6x/static-app-1rb.rd       | 33 ++++++++---------
 20 files changed, 156 insertions(+), 148 deletions(-)

diff --git a/binutils/testsuite/binutils-all/localize-hidden-1.l b/binutils/testsuite/binutils-all/localize-hidden-1.l
index 2ae5910037b..b14b766009e 100644
--- a/binutils/testsuite/binutils-all/localize-hidden-1.l
+++ b/binutils/testsuite/binutils-all/localize-hidden-1.l
@@ -1,4 +1,2 @@ 
 [^:]*: Assembler messages:
-[^:]*: Warning: local symbol .Lhidden. has non-default visibility
-[^:]*: Warning: local symbol .Linternal. has non-default visibility
-[^:]*: Warning: local symbol .Lprotected. has non-default visibility
+[^:]*: Warning: local symbol .Lprotected. has protected visibility
diff --git a/binutils/testsuite/binutils-all/nm-ver.s b/binutils/testsuite/binutils-all/nm-ver.s
index a8803c1651a..e68c45a9dfd 100644
--- a/binutils/testsuite/binutils-all/nm-ver.s
+++ b/binutils/testsuite/binutils-all/nm-ver.s
@@ -1,7 +1,5 @@ 
 	.symver foo_old,foo@VER_1
-	.global "foo@VER_1"
 	.hidden foo_old
-	.global foo_old
 foo_old:
 	.dc.b 0
 
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 6850cab1902..2e15b25150b 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -2756,9 +2756,12 @@  elf_adjust_symtab (void)
 	  const asymbol *bfdsym = symbol_get_bfdsym (symp);
 	  elf_symbol_type *elfsym = elf_symbol_from (bfdsym);
 
-	  if (ELF_ST_VISIBILITY (elfsym->internal_elf_sym.st_other)
+	  /* Allow local symbol with non-protected visibility:
+	     https://sourceware.org/bugzilla/show_bug.cgi?id=34312 */
+	  if ((ELF_ST_VISIBILITY (elfsym->internal_elf_sym.st_other)
+	       == STV_PROTECTED)
 	      && !(bfdsym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)))
-	    as_warn (_("local symbol `%s' has non-default visibility"),
+	    as_warn (_("local symbol `%s' has protected visibility"),
 		     S_GET_NAME (symp));
 	}
 
diff --git a/gas/testsuite/gas/elf/visibility.l b/gas/testsuite/gas/elf/visibility.l
index 4abd55d9ff5..8933defb910 100644
--- a/gas/testsuite/gas/elf/visibility.l
+++ b/gas/testsuite/gas/elf/visibility.l
@@ -3,6 +3,4 @@ 
 [^:]*:5: Warning: visibility of .gd. is already .internal.
 [^:]*:21: Warning: visibility of .ge. is already .hidden.
 [^:]*:26: Warning: visibility of .we. is already .hidden.
-[^:]*: Warning: local symbol .li. has non-default visibility
-[^:]*: Warning: local symbol .lh. has non-default visibility
-[^:]*: Warning: local symbol .lp. has non-default visibility
+[^:]*: Warning: local symbol .lp. has protected visibility
diff --git a/gas/testsuite/gas/i386/tlsnopic.s b/gas/testsuite/gas/i386/tlsnopic.s
index 596e6288f63..3a8b794195d 100644
--- a/gas/testsuite/gas/i386/tlsnopic.s
+++ b/gas/testsuite/gas/i386/tlsnopic.s
@@ -2,7 +2,6 @@ 
 	.globl baz
 	.hidden baz
 	.globl var
-	.globl var2
 	.hidden var2
 bar:	.long 27
 baz:	.long 29
diff --git a/ld/testsuite/ld-aarch64/ifunc-21.s b/ld/testsuite/ld-aarch64/ifunc-21.s
index 5e7c315b5e9..a1563dcbbdd 100644
--- a/ld/testsuite/ld-aarch64/ifunc-21.s
+++ b/ld/testsuite/ld-aarch64/ifunc-21.s
@@ -1,6 +1,5 @@ 
 	.text
 	.type ifunc, @gnu_indirect_function
-	.global ifunc
 	.hidden ifunc
 ifunc:
 	ret
diff --git a/ld/testsuite/ld-tic6x/shlib-1.rd b/ld/testsuite/ld-tic6x/shlib-1.rd
index e8181604f27..cf1f34689f1 100644
--- a/ld/testsuite/ld-tic6x/shlib-1.rd
+++ b/ld/testsuite/ld-tic6x/shlib-1.rd
@@ -16,7 +16,7 @@  Section Headers:
   \[11\] \.neardata         PROGBITS        10000128 002128 000008 00  WA  0   0  4
   \[12\] \.bss              NOBITS          10000130 002130 000004 00  WA  0   0  4
   \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00      0   0  1
-  \[14\] \.symtab           SYMTAB          00000000 00214c 000190 10     15  19  4
+  \[14\] \.symtab           SYMTAB          00000000 00214c 0001b0 10     15  21  4
   \[15\] \.strtab           STRTAB .*
   \[16\] \.shstrtab         STRTAB .*
 Key to Flags:
@@ -90,7 +90,7 @@  Symbol table '\.dynsym' contains 12 entries:
     10: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
     11: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
 
-Symbol table '\.symtab' contains 25 entries:
+Symbol table '\.symtab' contains 27 entries:
    Num:    Value  Size Type    Bind   Vis      Ndx Name
      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
      1: 00008000     0 SECTION LOCAL  DEFAULT    1.*
@@ -106,14 +106,16 @@  Symbol table '\.symtab' contains 25 entries:
     11: 10000128     0 SECTION LOCAL  DEFAULT   11.*
     12: 10000130     0 SECTION LOCAL  DEFAULT   12.*
     13: 00000000     0 SECTION LOCAL  DEFAULT   13.*
-    14: 10000080     0 FUNC    LOCAL  DEFAULT    9 sub1
-    15: 00008154     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
-    16: 10000130     4 OBJECT  LOCAL  DEFAULT   12 c
-    17: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
-    18: 10000100     0 NOTYPE  LOCAL  DEFAULT   10 __c6xabi_DSBT_BASE
-    19: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
-    20: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
-    21: 1000012c     4 OBJECT  GLOBAL DEFAULT   11 g2
-    22: 10000088    52 FUNC    GLOBAL DEFAULT    9 sub0
-    23: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
-    24: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
+    14: 00000000     0 FILE    LOCAL  DEFAULT  ABS .*shlib-1\.o
+    15: 10000080     0 FUNC    LOCAL  HIDDEN     9 sub1
+    16: 00000000     0 FILE    LOCAL  DEFAULT  ABS 
+    17: 00008154     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
+    18: 10000130     4 OBJECT  LOCAL  DEFAULT   12 c
+    19: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+    20: 10000100     0 NOTYPE  LOCAL  DEFAULT   10 __c6xabi_DSBT_BASE
+    21: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
+    22: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
+    23: 1000012c     4 OBJECT  GLOBAL DEFAULT   11 g2
+    24: 10000088    52 FUNC    GLOBAL DEFAULT    9 sub0
+    25: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
+    26: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
diff --git a/ld/testsuite/ld-tic6x/shlib-1.s b/ld/testsuite/ld-tic6x/shlib-1.s
index 7d2f4c016ea..058bcbc69ff 100644
--- a/ld/testsuite/ld-tic6x/shlib-1.s
+++ b/ld/testsuite/ld-tic6x/shlib-1.s
@@ -1,7 +1,6 @@ 
 	.text
 	.nocmp
 	.align	2
-	.global	sub1
 	.hidden	sub1
 	.type	sub1, @function
 sub1:
diff --git a/ld/testsuite/ld-tic6x/shlib-1b.rd b/ld/testsuite/ld-tic6x/shlib-1b.rd
index e8181604f27..cf1f34689f1 100644
--- a/ld/testsuite/ld-tic6x/shlib-1b.rd
+++ b/ld/testsuite/ld-tic6x/shlib-1b.rd
@@ -16,7 +16,7 @@  Section Headers:
   \[11\] \.neardata         PROGBITS        10000128 002128 000008 00  WA  0   0  4
   \[12\] \.bss              NOBITS          10000130 002130 000004 00  WA  0   0  4
   \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00      0   0  1
-  \[14\] \.symtab           SYMTAB          00000000 00214c 000190 10     15  19  4
+  \[14\] \.symtab           SYMTAB          00000000 00214c 0001b0 10     15  21  4
   \[15\] \.strtab           STRTAB .*
   \[16\] \.shstrtab         STRTAB .*
 Key to Flags:
@@ -90,7 +90,7 @@  Symbol table '\.dynsym' contains 12 entries:
     10: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
     11: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
 
-Symbol table '\.symtab' contains 25 entries:
+Symbol table '\.symtab' contains 27 entries:
    Num:    Value  Size Type    Bind   Vis      Ndx Name
      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
      1: 00008000     0 SECTION LOCAL  DEFAULT    1.*
@@ -106,14 +106,16 @@  Symbol table '\.symtab' contains 25 entries:
     11: 10000128     0 SECTION LOCAL  DEFAULT   11.*
     12: 10000130     0 SECTION LOCAL  DEFAULT   12.*
     13: 00000000     0 SECTION LOCAL  DEFAULT   13.*
-    14: 10000080     0 FUNC    LOCAL  DEFAULT    9 sub1
-    15: 00008154     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
-    16: 10000130     4 OBJECT  LOCAL  DEFAULT   12 c
-    17: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
-    18: 10000100     0 NOTYPE  LOCAL  DEFAULT   10 __c6xabi_DSBT_BASE
-    19: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
-    20: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
-    21: 1000012c     4 OBJECT  GLOBAL DEFAULT   11 g2
-    22: 10000088    52 FUNC    GLOBAL DEFAULT    9 sub0
-    23: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
-    24: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
+    14: 00000000     0 FILE    LOCAL  DEFAULT  ABS .*shlib-1\.o
+    15: 10000080     0 FUNC    LOCAL  HIDDEN     9 sub1
+    16: 00000000     0 FILE    LOCAL  DEFAULT  ABS 
+    17: 00008154     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
+    18: 10000130     4 OBJECT  LOCAL  DEFAULT   12 c
+    19: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+    20: 10000100     0 NOTYPE  LOCAL  DEFAULT   10 __c6xabi_DSBT_BASE
+    21: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
+    22: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
+    23: 1000012c     4 OBJECT  GLOBAL DEFAULT   11 g2
+    24: 10000088    52 FUNC    GLOBAL DEFAULT    9 sub0
+    25: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
+    26: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
diff --git a/ld/testsuite/ld-tic6x/shlib-1r.dd b/ld/testsuite/ld-tic6x/shlib-1r.dd
index 68caa87d14d..b9934b5d27b 100644
--- a/ld/testsuite/ld-tic6x/shlib-1r.dd
+++ b/ld/testsuite/ld-tic6x/shlib-1r.dd
@@ -42,7 +42,7 @@  Disassembly of section \.text:
 10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14
 10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt>
 1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt>
-100000a0:[ \t]*0ffff812[ \t]*b \.S2 10000060 <sub(1@plt|@plt\+0x10)>
+100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
 100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3
 100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14
 100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15
diff --git a/ld/testsuite/ld-tic6x/shlib-1r.rd b/ld/testsuite/ld-tic6x/shlib-1r.rd
index e8181604f27..cf1f34689f1 100644
--- a/ld/testsuite/ld-tic6x/shlib-1r.rd
+++ b/ld/testsuite/ld-tic6x/shlib-1r.rd
@@ -16,7 +16,7 @@  Section Headers:
   \[11\] \.neardata         PROGBITS        10000128 002128 000008 00  WA  0   0  4
   \[12\] \.bss              NOBITS          10000130 002130 000004 00  WA  0   0  4
   \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00      0   0  1
-  \[14\] \.symtab           SYMTAB          00000000 00214c 000190 10     15  19  4
+  \[14\] \.symtab           SYMTAB          00000000 00214c 0001b0 10     15  21  4
   \[15\] \.strtab           STRTAB .*
   \[16\] \.shstrtab         STRTAB .*
 Key to Flags:
@@ -90,7 +90,7 @@  Symbol table '\.dynsym' contains 12 entries:
     10: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
     11: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
 
-Symbol table '\.symtab' contains 25 entries:
+Symbol table '\.symtab' contains 27 entries:
    Num:    Value  Size Type    Bind   Vis      Ndx Name
      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
      1: 00008000     0 SECTION LOCAL  DEFAULT    1.*
@@ -106,14 +106,16 @@  Symbol table '\.symtab' contains 25 entries:
     11: 10000128     0 SECTION LOCAL  DEFAULT   11.*
     12: 10000130     0 SECTION LOCAL  DEFAULT   12.*
     13: 00000000     0 SECTION LOCAL  DEFAULT   13.*
-    14: 10000080     0 FUNC    LOCAL  DEFAULT    9 sub1
-    15: 00008154     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
-    16: 10000130     4 OBJECT  LOCAL  DEFAULT   12 c
-    17: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
-    18: 10000100     0 NOTYPE  LOCAL  DEFAULT   10 __c6xabi_DSBT_BASE
-    19: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
-    20: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
-    21: 1000012c     4 OBJECT  GLOBAL DEFAULT   11 g2
-    22: 10000088    52 FUNC    GLOBAL DEFAULT    9 sub0
-    23: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
-    24: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
+    14: 00000000     0 FILE    LOCAL  DEFAULT  ABS .*shlib-1\.o
+    15: 10000080     0 FUNC    LOCAL  HIDDEN     9 sub1
+    16: 00000000     0 FILE    LOCAL  DEFAULT  ABS 
+    17: 00008154     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
+    18: 10000130     4 OBJECT  LOCAL  DEFAULT   12 c
+    19: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+    20: 10000100     0 NOTYPE  LOCAL  DEFAULT   10 __c6xabi_DSBT_BASE
+    21: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
+    22: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
+    23: 1000012c     4 OBJECT  GLOBAL DEFAULT   11 g2
+    24: 10000088    52 FUNC    GLOBAL DEFAULT    9 sub0
+    25: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
+    26: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
diff --git a/ld/testsuite/ld-tic6x/shlib-1rb.dd b/ld/testsuite/ld-tic6x/shlib-1rb.dd
index c7d55075695..6b3a2c2464b 100644
--- a/ld/testsuite/ld-tic6x/shlib-1rb.dd
+++ b/ld/testsuite/ld-tic6x/shlib-1rb.dd
@@ -42,7 +42,7 @@  Disassembly of section \.text:
 10000094:[ \t]*0700026e[ \t]*ldw \.D2T2 \*\+b14\(8\),b14
 10000098:[ \t]*0ffffa12[ \t]*b \.S2 10000050 <sub@plt>
 1000009c:[ \t]*0ffff712[ \t]*b \.S2 10000038 <sub0@plt>
-100000a0:[ \t]*0ffff812[ \t]*b \.S2 10000060 <sub(1@plt|@plt\+0x10)>
+100000a0:[ \t]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
 100000a4:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3
 100000a8:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14
 100000ac:[ \t]*07800852[ \t]*addk \.S2 16,b15
diff --git a/ld/testsuite/ld-tic6x/shlib-1rb.rd b/ld/testsuite/ld-tic6x/shlib-1rb.rd
index e8181604f27..cf1f34689f1 100644
--- a/ld/testsuite/ld-tic6x/shlib-1rb.rd
+++ b/ld/testsuite/ld-tic6x/shlib-1rb.rd
@@ -16,7 +16,7 @@  Section Headers:
   \[11\] \.neardata         PROGBITS        10000128 002128 000008 00  WA  0   0  4
   \[12\] \.bss              NOBITS          10000130 002130 000004 00  WA  0   0  4
   \[13\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00      0   0  1
-  \[14\] \.symtab           SYMTAB          00000000 00214c 000190 10     15  19  4
+  \[14\] \.symtab           SYMTAB          00000000 00214c 0001b0 10     15  21  4
   \[15\] \.strtab           STRTAB .*
   \[16\] \.shstrtab         STRTAB .*
 Key to Flags:
@@ -90,7 +90,7 @@  Symbol table '\.dynsym' contains 12 entries:
     10: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
     11: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
 
-Symbol table '\.symtab' contains 25 entries:
+Symbol table '\.symtab' contains 27 entries:
    Num:    Value  Size Type    Bind   Vis      Ndx Name
      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
      1: 00008000     0 SECTION LOCAL  DEFAULT    1.*
@@ -106,14 +106,16 @@  Symbol table '\.symtab' contains 25 entries:
     11: 10000128     0 SECTION LOCAL  DEFAULT   11.*
     12: 10000130     0 SECTION LOCAL  DEFAULT   12.*
     13: 00000000     0 SECTION LOCAL  DEFAULT   13.*
-    14: 10000080     0 FUNC    LOCAL  DEFAULT    9 sub1
-    15: 00008154     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
-    16: 10000130     4 OBJECT  LOCAL  DEFAULT   12 c
-    17: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
-    18: 10000100     0 NOTYPE  LOCAL  DEFAULT   10 __c6xabi_DSBT_BASE
-    19: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
-    20: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
-    21: 1000012c     4 OBJECT  GLOBAL DEFAULT   11 g2
-    22: 10000088    52 FUNC    GLOBAL DEFAULT    9 sub0
-    23: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
-    24: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
+    14: 00000000     0 FILE    LOCAL  DEFAULT  ABS .*shlib-1\.o
+    15: 10000080     0 FUNC    LOCAL  HIDDEN     9 sub1
+    16: 00000000     0 FILE    LOCAL  DEFAULT  ABS 
+    17: 00008154     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
+    18: 10000130     4 OBJECT  LOCAL  DEFAULT   12 c
+    19: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+    20: 10000100     0 NOTYPE  LOCAL  DEFAULT   10 __c6xabi_DSBT_BASE
+    21: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
+    22: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
+    23: 1000012c     4 OBJECT  GLOBAL DEFAULT   11 g2
+    24: 10000088    52 FUNC    GLOBAL DEFAULT    9 sub0
+    25: 10000128     4 OBJECT  GLOBAL DEFAULT   11 a
+    26: 100000c0    52 FUNC    GLOBAL DEFAULT    9 sub
diff --git a/ld/testsuite/ld-tic6x/shlib-noindex.rd b/ld/testsuite/ld-tic6x/shlib-noindex.rd
index 76a26bd7847..52e433424f1 100644
--- a/ld/testsuite/ld-tic6x/shlib-noindex.rd
+++ b/ld/testsuite/ld-tic6x/shlib-noindex.rd
@@ -17,7 +17,7 @@  Section Headers:
   \[12\] \.neardata         PROGBITS        10000128 002128 000008 00  WA  0   0  4
   \[13\] \.bss              NOBITS          10000130 002130 000004 00  WA  0   0  4
   \[14\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 002130 000019 00      0   0  1
-  \[15\] \.symtab           SYMTAB          00000000 00214c 0001a0 10     16  20  4
+  \[15\] \.symtab           SYMTAB          00000000 00214c 0001c0 10     16  22  4
   \[16\] \.strtab           STRTAB .*
   \[17\] \.shstrtab         STRTAB .*
 Key to Flags:
@@ -96,7 +96,7 @@  Symbol table '\.dynsym' contains 12 entries:
     10: 10000128     4 OBJECT  GLOBAL DEFAULT   12 a
     11: 100000c0    52 FUNC    GLOBAL DEFAULT   10 sub
 
-Symbol table '\.symtab' contains 26 entries:
+Symbol table '\.symtab' contains 28 entries:
    Num:    Value  Size Type    Bind   Vis      Ndx Name
      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
      1: 00008000     0 SECTION LOCAL  DEFAULT    1.*
@@ -113,14 +113,16 @@  Symbol table '\.symtab' contains 26 entries:
     12: 10000128     0 SECTION LOCAL  DEFAULT   12.*
     13: 10000130     0 SECTION LOCAL  DEFAULT   13.*
     14: 00000000     0 SECTION LOCAL  DEFAULT   14.*
-    15: 10000080     0 FUNC    LOCAL  DEFAULT   10 sub1
-    16: 00008160     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
-    17: 10000130     4 OBJECT  LOCAL  DEFAULT   13 c
-    18: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
-    19: 10000100     0 NOTYPE  LOCAL  DEFAULT   11 __c6xabi_DSBT_BASE
-    20: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
-    21: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
-    22: 1000012c     4 OBJECT  GLOBAL DEFAULT   12 g2
-    23: 10000088    52 FUNC    GLOBAL DEFAULT   10 sub0
-    24: 10000128     4 OBJECT  GLOBAL DEFAULT   12 a
-    25: 100000c0    52 FUNC    GLOBAL DEFAULT   10 sub
+    15: 00000000     0 FILE    LOCAL  DEFAULT  ABS .*shlib-1\.o
+    16: 10000080     0 FUNC    LOCAL  HIDDEN    10 sub1
+    17: 00000000     0 FILE    LOCAL  DEFAULT  ABS 
+    18: 00008160     0 OBJECT  LOCAL  DEFAULT  ABS _DYNAMIC
+    19: 10000130     4 OBJECT  LOCAL  DEFAULT   13 c
+    20: 1000010c     0 OBJECT  LOCAL  DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+    21: 10000100     0 NOTYPE  LOCAL  DEFAULT   11 __c6xabi_DSBT_BASE
+    22: 00000000     0 NOTYPE  WEAK   DEFAULT  UND b
+    23: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
+    24: 1000012c     4 OBJECT  GLOBAL DEFAULT   12 g2
+    25: 10000088    52 FUNC    GLOBAL DEFAULT   10 sub0
+    26: 10000128     4 OBJECT  GLOBAL DEFAULT   12 a
+    27: 100000c0    52 FUNC    GLOBAL DEFAULT   10 sub
diff --git a/ld/testsuite/ld-tic6x/static-app-1.rd b/ld/testsuite/ld-tic6x/static-app-1.rd
index fbf453a09b1..cbb887c8114 100644
--- a/ld/testsuite/ld-tic6x/static-app-1.rd
+++ b/ld/testsuite/ld-tic6x/static-app-1.rd
@@ -14,7 +14,7 @@  Section Headers:
   \[ 9\] \.neardata         PROGBITS        [0-9a-f]* [0-9a-f]* 000014 00  WA  0   0  4
   \[10\] \.bss              NOBITS          [0-9a-f]* [0-9a-f]* 000004 00  WA  0   0  4
   \[11\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 [0-9a-f]* 000019 00      0   0  1
-  \[12\] \.symtab           SYMTAB          00000000 [0-9a-f]* 0001b0 10     13  20  4
+  \[12\] \.symtab           SYMTAB          00000000 [0-9a-f]* 0001c0 10     13  22  4
   \[13\] \.strtab           STRTAB .*
   \[14\] \.shstrtab         STRTAB .*
 Key to Flags:
@@ -78,7 +78,7 @@  Symbol table '\.dynsym' contains 8 entries:
      6: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
      7: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
 
-Symbol table '\.symtab' contains 27 entries:
+Symbol table '\.symtab' contains 28 entries:
    Num:    Value  Size Type    Bind   Vis      Ndx Name
      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
      1: [0-9a-f]*     0 SECTION LOCAL  DEFAULT    1.*
@@ -92,18 +92,19 @@  Symbol table '\.symtab' contains 27 entries:
      9: [0-9a-f]*     0 SECTION LOCAL  DEFAULT    9.*
     10: [0-9a-f]*     0 SECTION LOCAL  DEFAULT   10.*
     11: [0-9a-f]*     0 SECTION LOCAL  DEFAULT   11.*
-    12: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-app-1\.o
-    13: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    7 fish
-    14: [0-9a-f]*     8 OBJECT  LOCAL  DEFAULT    9 w
-    15: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS ?
-    16: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    6 _DYNAMIC
-    17: [0-9a-f]*     4 OBJECT  LOCAL  DEFAULT   10 c
-    18: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    8 _GLOBAL_OFFSET_TABLE_
-    19: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    8 __c6xabi_DSBT_BASE
-    20: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 b
-    21: [0-9a-f]*     0 FUNC    GLOBAL HIDDEN     7 sub1
-    22: [0-9a-f]*     0 NOTYPE  WEAK   DEFAULT  UND g1
-    23: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 g2
-    24: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub0
-    25: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
-    26: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub
+    12: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-1\.o
+    13: [0-9a-f]*     0 FUNC    LOCAL  HIDDEN     7 sub1
+    14: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-app-1\.o
+    15: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    7 fish
+    16: [0-9a-f]*     8 OBJECT  LOCAL  DEFAULT    9 w
+    17: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS 
+    18: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    6 _DYNAMIC
+    19: [0-9a-f]*     4 OBJECT  LOCAL  DEFAULT   10 c
+    20: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    8 _GLOBAL_OFFSET_TABLE_
+    21: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    8 __c6xabi_DSBT_BASE
+    22: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 b
+    23: [0-9a-f]*     0 NOTYPE  WEAK   DEFAULT  UND g1
+    24: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 g2
+    25: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub0
+    26: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
+    27: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub
diff --git a/ld/testsuite/ld-tic6x/static-app-1b.rd b/ld/testsuite/ld-tic6x/static-app-1b.rd
index fbf453a09b1..cbb887c8114 100644
--- a/ld/testsuite/ld-tic6x/static-app-1b.rd
+++ b/ld/testsuite/ld-tic6x/static-app-1b.rd
@@ -14,7 +14,7 @@  Section Headers:
   \[ 9\] \.neardata         PROGBITS        [0-9a-f]* [0-9a-f]* 000014 00  WA  0   0  4
   \[10\] \.bss              NOBITS          [0-9a-f]* [0-9a-f]* 000004 00  WA  0   0  4
   \[11\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 [0-9a-f]* 000019 00      0   0  1
-  \[12\] \.symtab           SYMTAB          00000000 [0-9a-f]* 0001b0 10     13  20  4
+  \[12\] \.symtab           SYMTAB          00000000 [0-9a-f]* 0001c0 10     13  22  4
   \[13\] \.strtab           STRTAB .*
   \[14\] \.shstrtab         STRTAB .*
 Key to Flags:
@@ -78,7 +78,7 @@  Symbol table '\.dynsym' contains 8 entries:
      6: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
      7: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
 
-Symbol table '\.symtab' contains 27 entries:
+Symbol table '\.symtab' contains 28 entries:
    Num:    Value  Size Type    Bind   Vis      Ndx Name
      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
      1: [0-9a-f]*     0 SECTION LOCAL  DEFAULT    1.*
@@ -92,18 +92,19 @@  Symbol table '\.symtab' contains 27 entries:
      9: [0-9a-f]*     0 SECTION LOCAL  DEFAULT    9.*
     10: [0-9a-f]*     0 SECTION LOCAL  DEFAULT   10.*
     11: [0-9a-f]*     0 SECTION LOCAL  DEFAULT   11.*
-    12: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-app-1\.o
-    13: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    7 fish
-    14: [0-9a-f]*     8 OBJECT  LOCAL  DEFAULT    9 w
-    15: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS ?
-    16: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    6 _DYNAMIC
-    17: [0-9a-f]*     4 OBJECT  LOCAL  DEFAULT   10 c
-    18: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    8 _GLOBAL_OFFSET_TABLE_
-    19: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    8 __c6xabi_DSBT_BASE
-    20: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 b
-    21: [0-9a-f]*     0 FUNC    GLOBAL HIDDEN     7 sub1
-    22: [0-9a-f]*     0 NOTYPE  WEAK   DEFAULT  UND g1
-    23: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 g2
-    24: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub0
-    25: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
-    26: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub
+    12: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-1\.o
+    13: [0-9a-f]*     0 FUNC    LOCAL  HIDDEN     7 sub1
+    14: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-app-1\.o
+    15: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    7 fish
+    16: [0-9a-f]*     8 OBJECT  LOCAL  DEFAULT    9 w
+    17: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS 
+    18: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    6 _DYNAMIC
+    19: [0-9a-f]*     4 OBJECT  LOCAL  DEFAULT   10 c
+    20: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    8 _GLOBAL_OFFSET_TABLE_
+    21: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    8 __c6xabi_DSBT_BASE
+    22: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 b
+    23: [0-9a-f]*     0 NOTYPE  WEAK   DEFAULT  UND g1
+    24: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 g2
+    25: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub0
+    26: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
+    27: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub
diff --git a/ld/testsuite/ld-tic6x/static-app-1r.dd b/ld/testsuite/ld-tic6x/static-app-1r.dd
index f494d91faab..82b3ecd13c3 100644
--- a/ld/testsuite/ld-tic6x/static-app-1r.dd
+++ b/ld/testsuite/ld-tic6x/static-app-1r.dd
@@ -15,7 +15,7 @@  Disassembly of section \.text:
 10000014:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14
 10000018:[ \t]*00000812[ \t]*b \.S2 10000040 <sub>
 1000001c:[ \t]*00000112[ \t]*b \.S2 10000008 <sub0>
-10000020:[ \t]*0ffff812[ \t]*b \.S2 [0-9a-f]+ <_DYNAMIC\+0x[0-9a-f]+>
+10000020:[ \t]*0ffffc12[ \t]*b \.S2 10000000 <sub1>
 10000024:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3
 10000028:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14
 1000002c:[ \t]*07800852[ \t]*addk \.S2 16,b15
diff --git a/ld/testsuite/ld-tic6x/static-app-1r.rd b/ld/testsuite/ld-tic6x/static-app-1r.rd
index 9c71915871a..9b6d21169d1 100644
--- a/ld/testsuite/ld-tic6x/static-app-1r.rd
+++ b/ld/testsuite/ld-tic6x/static-app-1r.rd
@@ -14,7 +14,7 @@  Section Headers:
   \[ 9\] \.neardata         PROGBITS        [0-9a-f]* [0-9a-f]* 00000c 00  WA  0   0  4
   \[10\] \.bss              NOBITS          [0-9a-f]* [0-9a-f]* 000004 00  WA  0   0  4
   \[11\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 [0-9a-f]* 000019 00      0   0  1
-  \[12\] \.symtab           SYMTAB          00000000 [0-9a-f]* 0001a0 10     13  19  4
+  \[12\] \.symtab           SYMTAB          00000000 [0-9a-f]* 0001b0 10     13  21  4
   \[13\] \.strtab           STRTAB .*
   \[14\] \.shstrtab         STRTAB .*
 Key to Flags:
@@ -76,7 +76,7 @@  Symbol table '\.dynsym' contains 8 entries:
      6: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
      7: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
 
-Symbol table '\.symtab' contains 26 entries:
+Symbol table '\.symtab' contains 27 entries:
    Num:    Value  Size Type    Bind   Vis      Ndx Name
      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
      1: [0-9a-f]*     0 SECTION LOCAL  DEFAULT    1.*
@@ -90,17 +90,18 @@  Symbol table '\.symtab' contains 26 entries:
      9: [0-9a-f]*     0 SECTION LOCAL  DEFAULT    9.*
     10: [0-9a-f]*     0 SECTION LOCAL  DEFAULT   10.*
     11: [0-9a-f]*     0 SECTION LOCAL  DEFAULT   11.*
-    12: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-app-1r\.o
-    13: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    7 fish
-    14: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS ?
-    15: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    6 _DYNAMIC
-    16: [0-9a-f]*     4 OBJECT  LOCAL  DEFAULT   10 c
-    17: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    8 _GLOBAL_OFFSET_TABLE_
-    18: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    8 __c6xabi_DSBT_BASE
-    19: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 b
-    20: [0-9a-f]*     0 FUNC    GLOBAL HIDDEN     7 sub1
-    21: [0-9a-f]*     0 NOTYPE  WEAK   DEFAULT  UND g1
-    22: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 g2
-    23: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub0
-    24: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
-    25: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub
+    12: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-1\.o
+    13: [0-9a-f]*     0 FUNC    LOCAL  HIDDEN     7 sub1
+    14: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-app-1r\.o
+    15: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    7 fish
+    16: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS 
+    17: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    6 _DYNAMIC
+    18: [0-9a-f]*     4 OBJECT  LOCAL  DEFAULT   10 c
+    19: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    8 _GLOBAL_OFFSET_TABLE_
+    20: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    8 __c6xabi_DSBT_BASE
+    21: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 b
+    22: [0-9a-f]*     0 NOTYPE  WEAK   DEFAULT  UND g1
+    23: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 g2
+    24: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub0
+    25: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
+    26: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub
diff --git a/ld/testsuite/ld-tic6x/static-app-1rb.dd b/ld/testsuite/ld-tic6x/static-app-1rb.dd
index 901a62d1ad8..9e211ca489b 100644
--- a/ld/testsuite/ld-tic6x/static-app-1rb.dd
+++ b/ld/testsuite/ld-tic6x/static-app-1rb.dd
@@ -15,7 +15,7 @@  Disassembly of section \.text:
 10000014:[ \t]*0700006e[ \t]*ldw \.D2T2 \*\+b14\(0\),b14
 10000018:[ \t]*00000812[ \t]*b \.S2 10000040 <sub>
 1000001c:[ \t]*00000112[ \t]*b \.S2 10000008 <sub0>
-10000020:[ \t]*0ffff812[ \t]*b \.S2 [0-9a-f]+ <_DYNAMIC\+0x[0-9a-f]+>
+10000020:[ \t]*0ffffc12[ \t]*b \.S2 10000000 <sub1>
 10000024:[ \t]*01bc62e6[ \t]*ldw \.D2T2 \*\+b15\(12\),b3
 10000028:[ \t]*073c82e6[ \t]*ldw \.D2T2 \*\+b15\(16\),b14
 1000002c:[ \t]*07800852[ \t]*addk \.S2 16,b15
diff --git a/ld/testsuite/ld-tic6x/static-app-1rb.rd b/ld/testsuite/ld-tic6x/static-app-1rb.rd
index 9c71915871a..9b6d21169d1 100644
--- a/ld/testsuite/ld-tic6x/static-app-1rb.rd
+++ b/ld/testsuite/ld-tic6x/static-app-1rb.rd
@@ -14,7 +14,7 @@  Section Headers:
   \[ 9\] \.neardata         PROGBITS        [0-9a-f]* [0-9a-f]* 00000c 00  WA  0   0  4
   \[10\] \.bss              NOBITS          [0-9a-f]* [0-9a-f]* 000004 00  WA  0   0  4
   \[11\] \.c6xabi\.attributes C6000_ATTRIBUTES 00000000 [0-9a-f]* 000019 00      0   0  1
-  \[12\] \.symtab           SYMTAB          00000000 [0-9a-f]* 0001a0 10     13  19  4
+  \[12\] \.symtab           SYMTAB          00000000 [0-9a-f]* 0001b0 10     13  21  4
   \[13\] \.strtab           STRTAB .*
   \[14\] \.shstrtab         STRTAB .*
 Key to Flags:
@@ -76,7 +76,7 @@  Symbol table '\.dynsym' contains 8 entries:
      6: 00000000     0 NOTYPE  WEAK   DEFAULT  UND g1
      7: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
 
-Symbol table '\.symtab' contains 26 entries:
+Symbol table '\.symtab' contains 27 entries:
    Num:    Value  Size Type    Bind   Vis      Ndx Name
      0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
      1: [0-9a-f]*     0 SECTION LOCAL  DEFAULT    1.*
@@ -90,17 +90,18 @@  Symbol table '\.symtab' contains 26 entries:
      9: [0-9a-f]*     0 SECTION LOCAL  DEFAULT    9.*
     10: [0-9a-f]*     0 SECTION LOCAL  DEFAULT   10.*
     11: [0-9a-f]*     0 SECTION LOCAL  DEFAULT   11.*
-    12: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-app-1r\.o
-    13: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    7 fish
-    14: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS ?
-    15: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    6 _DYNAMIC
-    16: [0-9a-f]*     4 OBJECT  LOCAL  DEFAULT   10 c
-    17: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    8 _GLOBAL_OFFSET_TABLE_
-    18: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    8 __c6xabi_DSBT_BASE
-    19: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 b
-    20: [0-9a-f]*     0 FUNC    GLOBAL HIDDEN     7 sub1
-    21: [0-9a-f]*     0 NOTYPE  WEAK   DEFAULT  UND g1
-    22: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 g2
-    23: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub0
-    24: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
-    25: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub
+    12: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-1\.o
+    13: [0-9a-f]*     0 FUNC    LOCAL  HIDDEN     7 sub1
+    14: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS .*shlib-app-1r\.o
+    15: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    7 fish
+    16: [0-9a-f]*     0 FILE    LOCAL  DEFAULT  ABS 
+    17: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    6 _DYNAMIC
+    18: [0-9a-f]*     4 OBJECT  LOCAL  DEFAULT   10 c
+    19: [0-9a-f]*     0 OBJECT  LOCAL  DEFAULT    8 _GLOBAL_OFFSET_TABLE_
+    20: [0-9a-f]*     0 NOTYPE  LOCAL  DEFAULT    8 __c6xabi_DSBT_BASE
+    21: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 b
+    22: [0-9a-f]*     0 NOTYPE  WEAK   DEFAULT  UND g1
+    23: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 g2
+    24: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub0
+    25: [0-9a-f]*     4 OBJECT  GLOBAL DEFAULT    9 a
+    26: [0-9a-f]*    52 FUNC    GLOBAL DEFAULT    7 sub
-- 
2.54.0