PR22150, ld keeps a version reference for gc'd symbols
authorAlan Modra <amodra@gmail.com>
Tue, 19 Sep 2017 02:29:30 +0000 (11:59 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 19 Sep 2017 02:48:49 +0000 (12:18 +0930)
commit3d13f3e9bda5aada68915f5d958f731ae79ed41d
tree9b9e1b4f3dec04148c1008f06dd9a4aee4119181
parentab502e635e78a6c6c9c8abf3072bfeedaca9c26f
PR22150, ld keeps a version reference for gc'd symbols

elf_gc_sweep_symbol should run after verdefs are calculated, since
the verdef code creates symbols for the versions.  However,
elf_gc_sweep_symbol needs to run before verrefs so as to not emit
useless verrefs for symbols that are gc'd.

I've also removed a _bfd_elf_link_renumber_dynsyms calls added by
Maciej after I fussed about it when reviewing.  On further examination
the call appears to be unnecessary.  Looking at renumber_dynsyms also
made me realize that the test to exclude .gnu.version has been wrong
since 2016-04-26 (git commit d5486c4372), so fix that too.

PR 22150
* elflink.c (bfd_elf_size_dynamic_sections): Garbage collect
symbols before calculating verrefs.  Don't renumber dynsyms
after gc.  Exclude .gnu.version when zero or one dynsym.
Localize some vars and reindent.
bfd/ChangeLog
bfd/elflink.c