Hide dynamic symbols in discarded sections
This is a followup to git commit
97196564c7 "Strip global symbol
defined in discarded section". If a symbol defined in a discarded
section was dynamic, that patch left .dynsym with holes (ie. all zero
entries). For example, the following from libstdc++.so:
Symbol table '.dynsym' contains 6090 entries:
Num: Value Size Type Bind Vis Ndx Name
0:
0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1:
00000000000a74e0 0 SECTION LOCAL DEFAULT 10
2:
0000000000264180 0 SECTION LOCAL DEFAULT 17
3:
0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_addUserCommitAction
4:
0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_memcpyRtWn
5:
0000000000000000 0 NOTYPE LOCAL DEFAULT UND
readelf: Warning: local symbol 5 found at index >= .dynsym's sh_info value of 3
6:
0000000000000000 0 NOTYPE LOCAL DEFAULT UND
readelf: Warning: local symbol 6 found at index >= .dynsym's sh_info value of 3
[snip]
This patch removes the symbols from .dynsym too.
PR 17550
* elflink.c (_bfd_elf_fix_symbol_flags): Hide dynamic symbols
in discarded sections.