[2/3] gas/ELF: warn upon non-default visibility of local symbols
Checks
| Context |
Check |
Description |
| linaro-tcwg-bot/tcwg_binutils_build--master-arm |
success
|
Build passed
|
| linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 |
success
|
Build passed
|
| linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 |
success
|
Test passed
|
| linaro-tcwg-bot/tcwg_binutils_check--master-arm |
success
|
Test passed
|
Commit Message
The spec explicitly precludes STB_LOCAL together with STV_PROTECTED (and,
implicity, STV_HIDDEN or STV_INTERNAL), so we better wouldn't entirely
silently write out symbols violating this.
LoongArch's tc_symbol_new_hook() simply needs dropping. If FAKE_LABEL_NAME
symbols can end up global, marking them hidden would need doing elsewhere.
There not being a need to make any testsuite adjustments suggests though
that this won't normally (ever?) happen.
A couple of testcases then also need adjustment.
---
It would be nice to re-use an existing loop, yet the one in
elf_frob_file_before_adjust() comes too early, as does elf_frob_symbol().
An alternative may be to imply .global from .hidden etc also for defined
symbols (as looks to have been implied by some of the testcases being
adjusted). This would then require to reject .local when a visibility was
already set.
I wonder what purpose STV_* serve with e.g. STT_SECTION. Yet I also wonder
what purpose STB_* other than STB_LOCAL serve with STT_SECTION (seeing how
bfd/elf.c:swap_out_syms() explicitly uses STB_GLOBAL).
The TI C6x testcase adjustments suggest that PLT relocations are
needlessly emitted by gas for non-default visibility globals.
Comments
On 10/04/2026 14:31, Jan Beulich wrote:
> The spec explicitly precludes STB_LOCAL together with STV_PROTECTED (and,
> implicity, STV_HIDDEN or STV_INTERNAL), so we better wouldn't entirely
> silently write out symbols violating this.
>
> LoongArch's tc_symbol_new_hook() simply needs dropping. If FAKE_LABEL_NAME
> symbols can end up global, marking them hidden would need doing elsewhere.
> There not being a need to make any testsuite adjustments suggests though
> that this won't normally (ever?) happen.
>
> A couple of testcases then also need adjustment.
> ---
> It would be nice to re-use an existing loop, yet the one in
> elf_frob_file_before_adjust() comes too early, as does elf_frob_symbol().
>
> An alternative may be to imply .global from .hidden etc also for defined
> symbols (as looks to have been implied by some of the testcases being
> adjusted). This would then require to reject .local when a visibility was
> already set.
>
> I wonder what purpose STV_* serve with e.g. STT_SECTION. Yet I also wonder
> what purpose STB_* other than STB_LOCAL serve with STT_SECTION (seeing how
> bfd/elf.c:swap_out_syms() explicitly uses STB_GLOBAL).
>
> The TI C6x testcase adjustments suggest that PLT relocations are
> needlessly emitted by gas for non-default visibility globals.
Do we know that this won't cause issues for real code out in the wild? Might it not be better to just treat .hidden as making the symbol global, but hidden?
R.
>
> --- a/binutils/testsuite/binutils-all/localize-hidden-1.d
> +++ b/binutils/testsuite/binutils-all/localize-hidden-1.d
> @@ -2,6 +2,7 @@
> #objdump: --syms
> #objcopy: --localize-hidden
> #name: --localize-hidden test 1
> +#warning_output: localize-hidden-1.l
> #...
> 0+1200 l .*\*ABS\* 0+ \.hidden Lhidden
> 0+1300 l .*\*ABS\* 0+ \.internal Linternal
> --- /dev/null
> +++ b/binutils/testsuite/binutils-all/localize-hidden-1.l
> @@ -0,0 +1,4 @@
> +[^:]*: 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
> --- a/binutils/testsuite/binutils-all/nm-ver.s
> +++ b/binutils/testsuite/binutils-all/nm-ver.s
> @@ -1,5 +1,7 @@
> .symver foo_old,foo@VER_1
> + .global "foo@VER_1"
> .hidden foo_old
> + .global foo_old
> foo_old:
> .dc.b 0
>
> --- a/gas/config/obj-elf.c
> +++ b/gas/config/obj-elf.c
> @@ -2730,6 +2730,23 @@ elf_adjust_symtab (void)
> {
> unsigned int i;
>
> + if (!had_errors ())
> + for (symbolS *symp = symbol_rootP; symp; symp = symbol_next (symp))
> + if (!symbol_removed_p (symp)
> + && S_IS_DEFINED (symp)
> + && (bfd_keep_unused_section_symbols (stdoutput)
> + || !symbol_section_p (symp)
> + || symbol_used_in_reloc_p (symp)))
> + {
> + 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)
> + && !(bfdsym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)))
> + as_warn (_("local symbol `%s' has non-default visibility"),
> + S_GET_NAME (symp));
> + }
> +
> /* Make the SHT_GROUP sections that describe each section group. We
> can't set up the section contents here yet, because elf section
> indices have yet to be calculated. elf.c:set_group_contents does
> --- a/gas/config/tc-loongarch.h
> +++ b/gas/config/tc-loongarch.h
> @@ -121,10 +121,6 @@ extern void tc_loongarch_parse_to_dw2reg
>
> extern int tc_loongarch_regname_to_dw2regnum (char *);
>
> -#define tc_symbol_new_hook(sym) \
> - if (0 == strcmp (sym->bsym->name, FAKE_LABEL_NAME)) \
> - S_SET_OTHER (sym, STV_HIDDEN);
> -
> extern void loongarch_pre_output_hook (void);
> #define md_pre_output_hook loongarch_pre_output_hook ()
> #define GAS_SORT_RELOCS 1
> --- a/gas/testsuite/gas/elf/visibility.l
> +++ b/gas/testsuite/gas/elf/visibility.l
> @@ -3,3 +3,6 @@
> [^:]*: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
> --- a/gas/testsuite/gas/elf/visibility.s
> +++ b/gas/testsuite/gas/elf/visibility.s
> @@ -26,3 +26,12 @@ gu: .dc.b 0
> .protected we
> .p2align 3
> .dc.a we
> +
> + .internal li
> +li: .dc.b 0
> +
> + .hidden lh
> +lh: .dc.b 0
> +
> + .protected lp
> +lp: .dc.b 0
> --- a/gas/testsuite/gas/i386/tlsnopic.s
> +++ b/gas/testsuite/gas/i386/tlsnopic.s
> @@ -2,6 +2,7 @@
> .globl baz
> .hidden baz
> .globl var
> + .globl var2
> .hidden var2
> bar: .long 27
> baz: .long 29
> --- a/ld/testsuite/ld-aarch64/ifunc-21.s
> +++ b/ld/testsuite/ld-aarch64/ifunc-21.s
> @@ -1,5 +1,6 @@
> .text
> .type ifunc, @gnu_indirect_function
> + .global ifunc
> .hidden ifunc
> ifunc:
> ret
> --- 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 0001b0 10 15 21 4
> + \[14\] \.symtab SYMTAB 00000000 00214c 000190 10 15 19 4
> \[15\] \.strtab STRTAB .*
> \[16\] \.shstrtab STRTAB .*
> Key to Flags:
> @@ -90,7 +90,7 @@ Symbol table '\.dynsym' contains 12 entr
> 10: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
> 11: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
>
> -Symbol table '\.symtab' contains 27 entries:
> +Symbol table '\.symtab' contains 25 entries:
> Num: Value Size Type Bind Vis Ndx Name
> 0: 00000000 0 NOTYPE LOCAL DEFAULT UND
> 1: 00008000 0 SECTION LOCAL DEFAULT 1.*
> @@ -106,16 +106,14 @@ Symbol table '\.symtab' contains 27 entr
> 11: 10000128 0 SECTION LOCAL DEFAULT 11.*
> 12: 10000130 0 SECTION LOCAL DEFAULT 12.*
> 13: 00000000 0 SECTION LOCAL DEFAULT 13.*
> - 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
> + 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
> --- a/ld/testsuite/ld-tic6x/shlib-1.s
> +++ b/ld/testsuite/ld-tic6x/shlib-1.s
> @@ -1,6 +1,7 @@
> .text
> .nocmp
> .align 2
> + .global sub1
> .hidden sub1
> .type sub1, @function
> sub1:
> --- 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 0001b0 10 15 21 4
> + \[14\] \.symtab SYMTAB 00000000 00214c 000190 10 15 19 4
> \[15\] \.strtab STRTAB .*
> \[16\] \.shstrtab STRTAB .*
> Key to Flags:
> @@ -90,7 +90,7 @@ Symbol table '\.dynsym' contains 12 entr
> 10: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
> 11: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
>
> -Symbol table '\.symtab' contains 27 entries:
> +Symbol table '\.symtab' contains 25 entries:
> Num: Value Size Type Bind Vis Ndx Name
> 0: 00000000 0 NOTYPE LOCAL DEFAULT UND
> 1: 00008000 0 SECTION LOCAL DEFAULT 1.*
> @@ -106,16 +106,14 @@ Symbol table '\.symtab' contains 27 entr
> 11: 10000128 0 SECTION LOCAL DEFAULT 11.*
> 12: 10000130 0 SECTION LOCAL DEFAULT 12.*
> 13: 00000000 0 SECTION LOCAL DEFAULT 13.*
> - 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
> + 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
> --- 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]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
> +100000a0:[ \t]*0ffff812[ \t]*b \.S2 10000060 <sub(1@plt|@plt\+0x10)>
> 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
> --- 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 0001b0 10 15 21 4
> + \[14\] \.symtab SYMTAB 00000000 00214c 000190 10 15 19 4
> \[15\] \.strtab STRTAB .*
> \[16\] \.shstrtab STRTAB .*
> Key to Flags:
> @@ -90,7 +90,7 @@ Symbol table '\.dynsym' contains 12 entr
> 10: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
> 11: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
>
> -Symbol table '\.symtab' contains 27 entries:
> +Symbol table '\.symtab' contains 25 entries:
> Num: Value Size Type Bind Vis Ndx Name
> 0: 00000000 0 NOTYPE LOCAL DEFAULT UND
> 1: 00008000 0 SECTION LOCAL DEFAULT 1.*
> @@ -106,16 +106,14 @@ Symbol table '\.symtab' contains 27 entr
> 11: 10000128 0 SECTION LOCAL DEFAULT 11.*
> 12: 10000130 0 SECTION LOCAL DEFAULT 12.*
> 13: 00000000 0 SECTION LOCAL DEFAULT 13.*
> - 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
> + 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
> --- 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]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
> +100000a0:[ \t]*0ffff812[ \t]*b \.S2 10000060 <sub(1@plt|@plt\+0x10)>
> 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
> --- 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 0001b0 10 15 21 4
> + \[14\] \.symtab SYMTAB 00000000 00214c 000190 10 15 19 4
> \[15\] \.strtab STRTAB .*
> \[16\] \.shstrtab STRTAB .*
> Key to Flags:
> @@ -90,7 +90,7 @@ Symbol table '\.dynsym' contains 12 entr
> 10: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
> 11: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
>
> -Symbol table '\.symtab' contains 27 entries:
> +Symbol table '\.symtab' contains 25 entries:
> Num: Value Size Type Bind Vis Ndx Name
> 0: 00000000 0 NOTYPE LOCAL DEFAULT UND
> 1: 00008000 0 SECTION LOCAL DEFAULT 1.*
> @@ -106,16 +106,14 @@ Symbol table '\.symtab' contains 27 entr
> 11: 10000128 0 SECTION LOCAL DEFAULT 11.*
> 12: 10000130 0 SECTION LOCAL DEFAULT 12.*
> 13: 00000000 0 SECTION LOCAL DEFAULT 13.*
> - 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
> + 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
> --- 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 0001c0 10 16 22 4
> + \[15\] \.symtab SYMTAB 00000000 00214c 0001a0 10 16 20 4
> \[16\] \.strtab STRTAB .*
> \[17\] \.shstrtab STRTAB .*
> Key to Flags:
> @@ -96,7 +96,7 @@ Symbol table '\.dynsym' contains 12 entr
> 10: 10000128 4 OBJECT GLOBAL DEFAULT 12 a
> 11: 100000c0 52 FUNC GLOBAL DEFAULT 10 sub
>
> -Symbol table '\.symtab' contains 28 entries:
> +Symbol table '\.symtab' contains 26 entries:
> Num: Value Size Type Bind Vis Ndx Name
> 0: 00000000 0 NOTYPE LOCAL DEFAULT UND
> 1: 00008000 0 SECTION LOCAL DEFAULT 1.*
> @@ -113,16 +113,14 @@ Symbol table '\.symtab' contains 28 entr
> 12: 10000128 0 SECTION LOCAL DEFAULT 12.*
> 13: 10000130 0 SECTION LOCAL DEFAULT 13.*
> 14: 00000000 0 SECTION LOCAL DEFAULT 14.*
> - 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
> + 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
> --- 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]* 0001c0 10 13 22 4
> + \[12\] \.symtab SYMTAB 00000000 [0-9a-f]* 0001b0 10 13 20 4
> \[13\] \.strtab STRTAB .*
> \[14\] \.shstrtab STRTAB .*
> Key to Flags:
> @@ -78,7 +78,7 @@ Symbol table '\.dynsym' contains 8 entri
> 6: 00000000 0 NOTYPE WEAK DEFAULT UND g1
> 7: [0-9a-f]* 4 OBJECT GLOBAL DEFAULT 9 a
>
> -Symbol table '\.symtab' contains 28 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.*
> @@ -92,19 +92,18 @@ Symbol table '\.symtab' contains 28 entr
> 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-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
> + 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
> --- 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]* 0001c0 10 13 22 4
> + \[12\] \.symtab SYMTAB 00000000 [0-9a-f]* 0001b0 10 13 20 4
> \[13\] \.strtab STRTAB .*
> \[14\] \.shstrtab STRTAB .*
> Key to Flags:
> @@ -78,7 +78,7 @@ Symbol table '\.dynsym' contains 8 entri
> 6: 00000000 0 NOTYPE WEAK DEFAULT UND g1
> 7: [0-9a-f]* 4 OBJECT GLOBAL DEFAULT 9 a
>
> -Symbol table '\.symtab' contains 28 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.*
> @@ -92,19 +92,18 @@ Symbol table '\.symtab' contains 28 entr
> 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-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
> + 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
> --- 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]*0ffffc12[ \t]*b \.S2 10000000 <sub1>
> +10000020:[ \t]*0ffff812[ \t]*b \.S2 [0-9a-f]+ <_DYNAMIC\+0x[0-9a-f]+>
> 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
> --- 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]* 0001b0 10 13 21 4
> + \[12\] \.symtab SYMTAB 00000000 [0-9a-f]* 0001a0 10 13 19 4
> \[13\] \.strtab STRTAB .*
> \[14\] \.shstrtab STRTAB .*
> Key to Flags:
> @@ -76,7 +76,7 @@ Symbol table '\.dynsym' contains 8 entri
> 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 26 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,18 +90,17 @@ Symbol table '\.symtab' contains 27 entr
> 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-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
> + 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
> --- 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]*0ffffc12[ \t]*b \.S2 10000000 <sub1>
> +10000020:[ \t]*0ffff812[ \t]*b \.S2 [0-9a-f]+ <_DYNAMIC\+0x[0-9a-f]+>
> 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
> --- 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]* 0001b0 10 13 21 4
> + \[12\] \.symtab SYMTAB 00000000 [0-9a-f]* 0001a0 10 13 19 4
> \[13\] \.strtab STRTAB .*
> \[14\] \.shstrtab STRTAB .*
> Key to Flags:
> @@ -76,7 +76,7 @@ Symbol table '\.dynsym' contains 8 entri
> 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 26 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,18 +90,17 @@ Symbol table '\.symtab' contains 27 entr
> 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-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
> + 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
>
On 10.04.2026 15:35, Richard Earnshaw (foss) wrote:
> On 10/04/2026 14:31, Jan Beulich wrote:
>> The spec explicitly precludes STB_LOCAL together with STV_PROTECTED (and,
>> implicity, STV_HIDDEN or STV_INTERNAL), so we better wouldn't entirely
>> silently write out symbols violating this.
>>
>> LoongArch's tc_symbol_new_hook() simply needs dropping. If FAKE_LABEL_NAME
>> symbols can end up global, marking them hidden would need doing elsewhere.
>> There not being a need to make any testsuite adjustments suggests though
>> that this won't normally (ever?) happen.
>>
>> A couple of testcases then also need adjustment.
>> ---
>> It would be nice to re-use an existing loop, yet the one in
>> elf_frob_file_before_adjust() comes too early, as does elf_frob_symbol().
>>
>> An alternative may be to imply .global from .hidden etc also for defined
>> symbols (as looks to have been implied by some of the testcases being
>> adjusted). This would then require to reject .local when a visibility was
>> already set.
As you can see from this, ...
>> I wonder what purpose STV_* serve with e.g. STT_SECTION. Yet I also wonder
>> what purpose STB_* other than STB_LOCAL serve with STT_SECTION (seeing how
>> bfd/elf.c:swap_out_syms() explicitly uses STB_GLOBAL).
>>
>> The TI C6x testcase adjustments suggest that PLT relocations are
>> needlessly emitted by gas for non-default visibility globals.
>
>
> Do we know that this won't cause issues for real code out in the wild? Might it not be better to just treat .hidden as making the symbol global, but hidden?
... I'm wondering the same. I meant to be conservative (as to exposing new
globals) for v1. If collectively we think changing the behavior that way
makes sense, I'll be happy to try that out for v2.
Jan
On 10.04.2026 16:17, Jan Beulich wrote:
> On 10.04.2026 15:35, Richard Earnshaw (foss) wrote:
>> On 10/04/2026 14:31, Jan Beulich wrote:
>>> The spec explicitly precludes STB_LOCAL together with STV_PROTECTED (and,
>>> implicity, STV_HIDDEN or STV_INTERNAL), so we better wouldn't entirely
>>> silently write out symbols violating this.
>>>
>>> LoongArch's tc_symbol_new_hook() simply needs dropping. If FAKE_LABEL_NAME
>>> symbols can end up global, marking them hidden would need doing elsewhere.
>>> There not being a need to make any testsuite adjustments suggests though
>>> that this won't normally (ever?) happen.
>>>
>>> A couple of testcases then also need adjustment.
>>> ---
>>> It would be nice to re-use an existing loop, yet the one in
>>> elf_frob_file_before_adjust() comes too early, as does elf_frob_symbol().
>>>
>>> An alternative may be to imply .global from .hidden etc also for defined
>>> symbols (as looks to have been implied by some of the testcases being
>>> adjusted). This would then require to reject .local when a visibility was
>>> already set.
>
> As you can see from this, ...
>
>>> I wonder what purpose STV_* serve with e.g. STT_SECTION. Yet I also wonder
>>> what purpose STB_* other than STB_LOCAL serve with STT_SECTION (seeing how
>>> bfd/elf.c:swap_out_syms() explicitly uses STB_GLOBAL).
>>>
>>> The TI C6x testcase adjustments suggest that PLT relocations are
>>> needlessly emitted by gas for non-default visibility globals.
>>
>>
>> Do we know that this won't cause issues for real code out in the wild? Might it not be better to just treat .hidden as making the symbol global, but hidden?
>
> ... I'm wondering the same. I meant to be conservative (as to exposing new
> globals) for v1. If collectively we think changing the behavior that way
> makes sense, I'll be happy to try that out for v2.
Having thought about this more, implying global from hidden (etc) feels more
risky than keeping things as they are in v1: People suddenly may face
duplicate symbol linker errors that way. Short of any other comments /
opinions, I'll get the series in as is.
Jan
@@ -2,6 +2,7 @@
#objdump: --syms
#objcopy: --localize-hidden
#name: --localize-hidden test 1
+#warning_output: localize-hidden-1.l
#...
0+1200 l .*\*ABS\* 0+ \.hidden Lhidden
0+1300 l .*\*ABS\* 0+ \.internal Linternal
@@ -0,0 +1,4 @@
+[^:]*: 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
@@ -1,5 +1,7 @@
.symver foo_old,foo@VER_1
+ .global "foo@VER_1"
.hidden foo_old
+ .global foo_old
foo_old:
.dc.b 0
@@ -2730,6 +2730,23 @@ elf_adjust_symtab (void)
{
unsigned int i;
+ if (!had_errors ())
+ for (symbolS *symp = symbol_rootP; symp; symp = symbol_next (symp))
+ if (!symbol_removed_p (symp)
+ && S_IS_DEFINED (symp)
+ && (bfd_keep_unused_section_symbols (stdoutput)
+ || !symbol_section_p (symp)
+ || symbol_used_in_reloc_p (symp)))
+ {
+ 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)
+ && !(bfdsym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)))
+ as_warn (_("local symbol `%s' has non-default visibility"),
+ S_GET_NAME (symp));
+ }
+
/* Make the SHT_GROUP sections that describe each section group. We
can't set up the section contents here yet, because elf section
indices have yet to be calculated. elf.c:set_group_contents does
@@ -121,10 +121,6 @@ extern void tc_loongarch_parse_to_dw2reg
extern int tc_loongarch_regname_to_dw2regnum (char *);
-#define tc_symbol_new_hook(sym) \
- if (0 == strcmp (sym->bsym->name, FAKE_LABEL_NAME)) \
- S_SET_OTHER (sym, STV_HIDDEN);
-
extern void loongarch_pre_output_hook (void);
#define md_pre_output_hook loongarch_pre_output_hook ()
#define GAS_SORT_RELOCS 1
@@ -3,3 +3,6 @@
[^:]*: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
@@ -26,3 +26,12 @@ gu: .dc.b 0
.protected we
.p2align 3
.dc.a we
+
+ .internal li
+li: .dc.b 0
+
+ .hidden lh
+lh: .dc.b 0
+
+ .protected lp
+lp: .dc.b 0
@@ -2,6 +2,7 @@
.globl baz
.hidden baz
.globl var
+ .globl var2
.hidden var2
bar: .long 27
baz: .long 29
@@ -1,5 +1,6 @@
.text
.type ifunc, @gnu_indirect_function
+ .global ifunc
.hidden ifunc
ifunc:
ret
@@ -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 0001b0 10 15 21 4
+ \[14\] \.symtab SYMTAB 00000000 00214c 000190 10 15 19 4
\[15\] \.strtab STRTAB .*
\[16\] \.shstrtab STRTAB .*
Key to Flags:
@@ -90,7 +90,7 @@ Symbol table '\.dynsym' contains 12 entr
10: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
11: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
-Symbol table '\.symtab' contains 27 entries:
+Symbol table '\.symtab' contains 25 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00008000 0 SECTION LOCAL DEFAULT 1.*
@@ -106,16 +106,14 @@ Symbol table '\.symtab' contains 27 entr
11: 10000128 0 SECTION LOCAL DEFAULT 11.*
12: 10000130 0 SECTION LOCAL DEFAULT 12.*
13: 00000000 0 SECTION LOCAL DEFAULT 13.*
- 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
+ 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
@@ -1,6 +1,7 @@
.text
.nocmp
.align 2
+ .global sub1
.hidden sub1
.type sub1, @function
sub1:
@@ -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 0001b0 10 15 21 4
+ \[14\] \.symtab SYMTAB 00000000 00214c 000190 10 15 19 4
\[15\] \.strtab STRTAB .*
\[16\] \.shstrtab STRTAB .*
Key to Flags:
@@ -90,7 +90,7 @@ Symbol table '\.dynsym' contains 12 entr
10: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
11: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
-Symbol table '\.symtab' contains 27 entries:
+Symbol table '\.symtab' contains 25 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00008000 0 SECTION LOCAL DEFAULT 1.*
@@ -106,16 +106,14 @@ Symbol table '\.symtab' contains 27 entr
11: 10000128 0 SECTION LOCAL DEFAULT 11.*
12: 10000130 0 SECTION LOCAL DEFAULT 12.*
13: 00000000 0 SECTION LOCAL DEFAULT 13.*
- 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
+ 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
@@ -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]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
+100000a0:[ \t]*0ffff812[ \t]*b \.S2 10000060 <sub(1@plt|@plt\+0x10)>
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
@@ -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 0001b0 10 15 21 4
+ \[14\] \.symtab SYMTAB 00000000 00214c 000190 10 15 19 4
\[15\] \.strtab STRTAB .*
\[16\] \.shstrtab STRTAB .*
Key to Flags:
@@ -90,7 +90,7 @@ Symbol table '\.dynsym' contains 12 entr
10: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
11: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
-Symbol table '\.symtab' contains 27 entries:
+Symbol table '\.symtab' contains 25 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00008000 0 SECTION LOCAL DEFAULT 1.*
@@ -106,16 +106,14 @@ Symbol table '\.symtab' contains 27 entr
11: 10000128 0 SECTION LOCAL DEFAULT 11.*
12: 10000130 0 SECTION LOCAL DEFAULT 12.*
13: 00000000 0 SECTION LOCAL DEFAULT 13.*
- 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
+ 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
@@ -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]*0ffffc12[ \t]*b \.S2 10000080 <sub1>
+100000a0:[ \t]*0ffff812[ \t]*b \.S2 10000060 <sub(1@plt|@plt\+0x10)>
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
@@ -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 0001b0 10 15 21 4
+ \[14\] \.symtab SYMTAB 00000000 00214c 000190 10 15 19 4
\[15\] \.strtab STRTAB .*
\[16\] \.shstrtab STRTAB .*
Key to Flags:
@@ -90,7 +90,7 @@ Symbol table '\.dynsym' contains 12 entr
10: 10000128 4 OBJECT GLOBAL DEFAULT 11 a
11: 100000c0 52 FUNC GLOBAL DEFAULT 9 sub
-Symbol table '\.symtab' contains 27 entries:
+Symbol table '\.symtab' contains 25 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00008000 0 SECTION LOCAL DEFAULT 1.*
@@ -106,16 +106,14 @@ Symbol table '\.symtab' contains 27 entr
11: 10000128 0 SECTION LOCAL DEFAULT 11.*
12: 10000130 0 SECTION LOCAL DEFAULT 12.*
13: 00000000 0 SECTION LOCAL DEFAULT 13.*
- 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
+ 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
@@ -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 0001c0 10 16 22 4
+ \[15\] \.symtab SYMTAB 00000000 00214c 0001a0 10 16 20 4
\[16\] \.strtab STRTAB .*
\[17\] \.shstrtab STRTAB .*
Key to Flags:
@@ -96,7 +96,7 @@ Symbol table '\.dynsym' contains 12 entr
10: 10000128 4 OBJECT GLOBAL DEFAULT 12 a
11: 100000c0 52 FUNC GLOBAL DEFAULT 10 sub
-Symbol table '\.symtab' contains 28 entries:
+Symbol table '\.symtab' contains 26 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00008000 0 SECTION LOCAL DEFAULT 1.*
@@ -113,16 +113,14 @@ Symbol table '\.symtab' contains 28 entr
12: 10000128 0 SECTION LOCAL DEFAULT 12.*
13: 10000130 0 SECTION LOCAL DEFAULT 13.*
14: 00000000 0 SECTION LOCAL DEFAULT 14.*
- 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
+ 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
@@ -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]* 0001c0 10 13 22 4
+ \[12\] \.symtab SYMTAB 00000000 [0-9a-f]* 0001b0 10 13 20 4
\[13\] \.strtab STRTAB .*
\[14\] \.shstrtab STRTAB .*
Key to Flags:
@@ -78,7 +78,7 @@ Symbol table '\.dynsym' contains 8 entri
6: 00000000 0 NOTYPE WEAK DEFAULT UND g1
7: [0-9a-f]* 4 OBJECT GLOBAL DEFAULT 9 a
-Symbol table '\.symtab' contains 28 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.*
@@ -92,19 +92,18 @@ Symbol table '\.symtab' contains 28 entr
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-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
+ 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
@@ -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]* 0001c0 10 13 22 4
+ \[12\] \.symtab SYMTAB 00000000 [0-9a-f]* 0001b0 10 13 20 4
\[13\] \.strtab STRTAB .*
\[14\] \.shstrtab STRTAB .*
Key to Flags:
@@ -78,7 +78,7 @@ Symbol table '\.dynsym' contains 8 entri
6: 00000000 0 NOTYPE WEAK DEFAULT UND g1
7: [0-9a-f]* 4 OBJECT GLOBAL DEFAULT 9 a
-Symbol table '\.symtab' contains 28 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.*
@@ -92,19 +92,18 @@ Symbol table '\.symtab' contains 28 entr
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-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
+ 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
@@ -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]*0ffffc12[ \t]*b \.S2 10000000 <sub1>
+10000020:[ \t]*0ffff812[ \t]*b \.S2 [0-9a-f]+ <_DYNAMIC\+0x[0-9a-f]+>
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
@@ -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]* 0001b0 10 13 21 4
+ \[12\] \.symtab SYMTAB 00000000 [0-9a-f]* 0001a0 10 13 19 4
\[13\] \.strtab STRTAB .*
\[14\] \.shstrtab STRTAB .*
Key to Flags:
@@ -76,7 +76,7 @@ Symbol table '\.dynsym' contains 8 entri
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 26 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,18 +90,17 @@ Symbol table '\.symtab' contains 27 entr
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-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
+ 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
@@ -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]*0ffffc12[ \t]*b \.S2 10000000 <sub1>
+10000020:[ \t]*0ffff812[ \t]*b \.S2 [0-9a-f]+ <_DYNAMIC\+0x[0-9a-f]+>
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
@@ -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]* 0001b0 10 13 21 4
+ \[12\] \.symtab SYMTAB 00000000 [0-9a-f]* 0001a0 10 13 19 4
\[13\] \.strtab STRTAB .*
\[14\] \.shstrtab STRTAB .*
Key to Flags:
@@ -76,7 +76,7 @@ Symbol table '\.dynsym' contains 8 entri
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 26 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,18 +90,17 @@ Symbol table '\.symtab' contains 27 entr
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-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
+ 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