--gc-sections with groups and start/stop syms
authorAlan Modra <amodra@gmail.com>
Wed, 3 Mar 2021 01:44:55 +0000 (12:14 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 3 Mar 2021 07:16:36 +0000 (17:46 +1030)
commit5789f845fbf67d271e0f5ff154eb03319b551211
treed1cf1f67c603d4d4eb3ef237d7054fb351eeedbe
parent270f32fc50b465e84c214a17d4ad3aebc3161bae
--gc-sections with groups and start/stop syms

The testcases added here show situations where synthesized start/stop
symbols don't cause their associated input sections to be marked.
Fixed with the elflink.c and ldlang.c changes.

bfd/
PR 27500
* elflink.c (_bfd_elf_gc_mark_rsec): Do special start/stop
processing not when start/stop symbol section is unmarked but
on first time a start/stop symbol is processed.
ld/
* ldlang.c (insert_undefined): Don't mark symbols here.
(lang_mark_undefineds): Do so here instead, new function.
(lang_process): Call lang_mark_undefineds.
* testsuite/ld-gc/start3.d,
* testsuite/ld-gc/start3.s: New test.
* testsuite/ld-gc/start4.d,
* testsuite/ld-gc/start4.s: New test.
* testsuite/ld-gc/gc.exp: Run them.
bfd/ChangeLog
bfd/elflink.c
ld/ChangeLog
ld/ldlang.c
ld/testsuite/ld-gc/gc.exp
ld/testsuite/ld-gc/start3.d [new file with mode: 0644]
ld/testsuite/ld-gc/start3.s [new file with mode: 0644]
ld/testsuite/ld-gc/start4.d [new file with mode: 0644]
ld/testsuite/ld-gc/start4.s [new file with mode: 0644]