Properly place the NULL STT_FILE symbol revistited
authorAlan Modra <amodra@gmail.com>
Mon, 16 Feb 2015 22:44:59 +0000 (09:14 +1030)
committerAlan Modra <amodra@gmail.com>
Tue, 17 Feb 2015 14:01:52 +0000 (00:31 +1030)
commit2ec55de302e4a6c49a06c673c8262a119fa6226f
treef70feefc1fc7d5694f3f3b702e2e05cd68b35e1d
parent69efdff130b843838e791065335b44d5f91f7075
Properly place the NULL STT_FILE symbol revistited

I was having a little closer look at what is going on here and noticed
that HJ unconditionally emits a NULL STT_FILE symbol before emitting
forced local symbols.  That means we really don't need a second pass
over forced local symbols.  The only reason for two passes is when
some forced local symbol can be emitted before the NULL STT_FILE.  So
I set about removing the second pass, updating the testsuite all over
again.  It's also unnecessary to emit the NULL STT_FILE when no
previous file symbol has been emitted.

bfd/
PR ld/17975
* elflink.c (struct elf_outext_info): Remove need_second_pass
and second_pass.
(elf_link_output_extsym): Delete code handling second forced
local pass.  Move code emitting NULL STT_FILE symbol later, so
that it can be omitted if forced local is stripped.  Don't
emit the NULL STT_FILE if no file symbols have been output.
(bfd_elf_final_link): Remove second forced local pass.
* elf32-ppc.c (add_stub_sym): Set linker_def on linker syms.
(ppc_elf_size_dynamic_sections): Likewise.
* elf64-ppc.c (ppc_build_one_stub): Likewise.
(build_global_entry_stubs): Likewise.
(ppc64_elf_build_stubs): Likewise.
ld/testsuite/
PR ld/17975
* ld-aarch64/gc-tls-relocs.d, * ld-alpha/tlspic.rd,
* ld-cris/libdso-2.d, * ld-i386/tlsdesc-nacl.rd, * ld-i386/tlsdesc.rd,
* ld-i386/tlsnopic-nacl.rd, * ld-i386/tlsnopic.rd,
* ld-i386/tlspic-nacl.rd, * ld-i386/tlspic.rd, * ld-ia64/tlspic.rd,
* ld-powerpc/tlsexe.r, * ld-powerpc/tlsexetoc.r,
* ld-powerpc/tlsso.r, * ld-powerpc/tlstocso.r,
* ld-s390/tlspic.rd, * ld-s390/tlspic_64.rd,
* ld-sparc/tlssunnopic32.rd, * ld-sparc/tlssunnopic64.rd,
* ld-sparc/tlssunpic32.rd, * ld-sparc/tlssunpic64.rd,
* ld-tic6x/shlib-1.rd, * ld-tic6x/shlib-1b.rd, * ld-tic6x/shlib-1r.rd,
* ld-tic6x/shlib-1rb.rd, * ld-tic6x/shlib-noindex.rd,
* ld-x86-64/tlsdesc-nacl.rd, * ld-x86-64/tlsdesc.rd,
* ld-x86-64/tlspic-nacl.rd, * ld-x86-64/tlspic.rd: Update.
33 files changed:
bfd/ChangeLog
bfd/elf32-ppc.c
bfd/elf64-ppc.c
bfd/elflink.c
ld/testsuite/ChangeLog
ld/testsuite/ld-aarch64/gc-tls-relocs.d
ld/testsuite/ld-alpha/tlspic.rd
ld/testsuite/ld-i386/tlsdesc-nacl.rd
ld/testsuite/ld-i386/tlsdesc.rd
ld/testsuite/ld-i386/tlsnopic-nacl.rd
ld/testsuite/ld-i386/tlsnopic.rd
ld/testsuite/ld-i386/tlspic-nacl.rd
ld/testsuite/ld-i386/tlspic.rd
ld/testsuite/ld-ia64/tlspic.rd
ld/testsuite/ld-powerpc/tlsexe.r
ld/testsuite/ld-powerpc/tlsexetoc.r
ld/testsuite/ld-powerpc/tlsso.r
ld/testsuite/ld-powerpc/tlstocso.r
ld/testsuite/ld-s390/tlspic.rd
ld/testsuite/ld-s390/tlspic_64.rd
ld/testsuite/ld-sparc/tlssunnopic32.rd
ld/testsuite/ld-sparc/tlssunnopic64.rd
ld/testsuite/ld-sparc/tlssunpic32.rd
ld/testsuite/ld-sparc/tlssunpic64.rd
ld/testsuite/ld-tic6x/shlib-1.rd
ld/testsuite/ld-tic6x/shlib-1b.rd
ld/testsuite/ld-tic6x/shlib-1r.rd
ld/testsuite/ld-tic6x/shlib-1rb.rd
ld/testsuite/ld-tic6x/shlib-noindex.rd
ld/testsuite/ld-x86-64/tlsdesc-nacl.rd
ld/testsuite/ld-x86-64/tlsdesc.rd
ld/testsuite/ld-x86-64/tlspic-nacl.rd
ld/testsuite/ld-x86-64/tlspic.rd