PR30155, ld segfault in _bfd_nearby_section
authorAlan Modra <amodra@gmail.com>
Thu, 23 Feb 2023 07:53:12 +0000 (18:23 +1030)
committerAlan Modra <amodra@gmail.com>
Fri, 24 Feb 2023 07:50:49 +0000 (18:20 +1030)
commit18e7a6587e3f111e9367ea707f9eb21acf4b9af7
tree2cc8d599913c38ddc3bc86f6082edc8d0d478ef9
parent50980ba351856dff75bb0743bfca62f4c3ab19ff
PR30155, ld segfault in _bfd_nearby_section

The segfault was a symptom of messing with the absolute section next
field, confusing bfd_section_removed_from_list in linker.c:fix_syms.
That's not all that was going wrong.  The INSERT list of output
sections was being inserted into itself, ie. lost from the main
list of linker statements.

PR 30155
* ldlang.c (process_insert_statements): Handle pathological
case of the insert script being inserted before the first
output section statement in the default script.
(output_prev_sec_find): Don't test section owner here.
(insert_os_after): Change parameter to a list union pointer.
(lang_insert_orphan): Test section owner here and adjust
insert_os_after call.
ld/ldlang.c