aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-gc/start4.s
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2021-03-03 12:14:55 +1030
committerAlan Modra <amodra@gmail.com>2021-03-03 17:46:36 +1030
commit5789f845fbf67d271e0f5ff154eb03319b551211 (patch)
treed1cf1f67c603d4d4eb3ef237d7054fb351eeedbe /ld/testsuite/ld-gc/start4.s
parent270f32fc50b465e84c214a17d4ad3aebc3161bae (diff)
downloadgdb-5789f845fbf67d271e0f5ff154eb03319b551211.zip
gdb-5789f845fbf67d271e0f5ff154eb03319b551211.tar.gz
gdb-5789f845fbf67d271e0f5ff154eb03319b551211.tar.bz2
--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.
Diffstat (limited to 'ld/testsuite/ld-gc/start4.s')
-rw-r--r--ld/testsuite/ld-gc/start4.s19
1 files changed, 19 insertions, 0 deletions
diff --git a/ld/testsuite/ld-gc/start4.s b/ld/testsuite/ld-gc/start4.s
new file mode 100644
index 0000000..1aa9445
--- /dev/null
+++ b/ld/testsuite/ld-gc/start4.s
@@ -0,0 +1,19 @@
+ .text
+ .global _start
+_start:
+ .dc.a foo_xx
+ .ifdef UNDERSCORE
+ .dc.a ___start_xx, ___stop_xx
+ .else
+ .dc.a __start_xx, __stop_xx
+ .endif
+
+ .section xx,"a",%progbits,unique,0
+ .global foo_xx
+foo_xx:
+ .dc.a 1
+
+ .section xx,"a",%progbits,unique,1
+ .global bar_xx
+bar_xx:
+ .dc.a 3