PR24511, nm should not mark symbols in .init_array as "t"
authorAlan Modra <amodra@gmail.com>
Fri, 3 May 2019 12:06:46 +0000 (21:36 +0930)
committerAlan Modra <amodra@gmail.com>
Sat, 4 May 2019 07:27:33 +0000 (16:57 +0930)
commita288c270991de1578ad28ac312120f4167347234
treea20874b7ba76dddaed092039d5efb3d6615798f6
parent66452beb773568c7f60dbc6b7c70f671a8c9cf4b
PR24511, nm should not mark symbols in .init_array as "t"

This patch restricts the section names matched in coff_section_type,
a function that translates section names to symbol type, and arranges
to translate section flags to symbol type before looking at names.
The latter change resulted in various test failures due to improper
section flags being used in tests, and by the plugin support, so fix
that too.

The new test fails on many ELF targets that lack .init/fini_array
in their scripts.  I've just xfailed those.  pru-elf oddly defines
__init_array_begin rather than __init_array_start.  I've left that
target as a FAIL, and pj-elf too which reports an error for undefined
weak symbols.

bfd/
PR 24511
* syms.c (coff_section_type): Only allow '.', '$' and numeric
following the standard section names.
(bfd_decode_symclass): Prioritize section flag tests in
decode_section_type before name tests in coff_section_type.
* plugin.c (bfd_plugin_canonicalize_symtab): Init fake_section
and fake_common_section using BFD_FAKE_SECTION.  Use "fake" as
their names and choose standard .text section flags for
fake_section.
ld/
PR 24511
* testsuite/ld-elf/pr14156a.d: Allow for .init/.fini being a
data section on hppa64.
* testsuite/ld-elf/pr14156b.d: Likewise.
* testsuite/ld-scripts/pr18963.t: Map standard sections to set
output section flags.
* testsuite/ld-scripts/sane1.t: Likewise.
* testsuite/ld-elf/init-fini-arrays.s: Reference __init_array_start
and __fini_array_start.  Define __start et al.
* testsuite/ld-elf/pr24511.d: New test.
bfd/ChangeLog
bfd/plugin.c
bfd/syms.c
ld/ChangeLog
ld/testsuite/ld-elf/init-fini-arrays.s
ld/testsuite/ld-elf/pr14156a.d
ld/testsuite/ld-elf/pr14156b.d
ld/testsuite/ld-elf/pr24511.d [new file with mode: 0644]
ld/testsuite/ld-scripts/pr18963.t
ld/testsuite/ld-scripts/sane1.t