XCOFF ld segfaults when running ld testsuite
authorAlan Modra <amodra@gmail.com>
Tue, 7 Jul 2020 00:28:10 +0000 (09:58 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 7 Jul 2020 08:56:33 +0000 (18:26 +0930)
commit23f5e55ed170c58c66437cc234887cecd5a11866
tree18b44f85ca2f28968ede60e9db3f426d70daf8e8
parentc800188601ee6f537d268fcadfbac7be0389ced7
XCOFF ld segfaults when running ld testsuite

The binutils XCOFF support doesn't handle random linker scripts very
well at all.  These tweaks to final_link fix segfaults when some
linker created sections are discarded due to "/DISCARD/ : { *(.*) }"
in scripts.  The xcoff_mark change is necessary to not segfault on
symbols defined in scripts, which may be bfd_link_hash_defined yet
have u.def.section set to bfd_und_section_ptr.  (Which might seem odd,
but occurs during early stages of linking before input sections are
mapped.)

* xcofflink.c (xcoff_mark): Don't mark const sections.
(bfd_xcoff_record_link_assignment): Add FIXME.
(_bfd_xcoff_bfd_final_link): Don't segfault on assorted magic
sections being discarded by linker script.
bfd/ChangeLog
bfd/xcofflink.c