aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-gc/start3.d
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/start3.d
parent270f32fc50b465e84c214a17d4ad3aebc3161bae (diff)
downloadbinutils-5789f845fbf67d271e0f5ff154eb03319b551211.zip
binutils-5789f845fbf67d271e0f5ff154eb03319b551211.tar.gz
binutils-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/start3.d')
-rw-r--r--ld/testsuite/ld-gc/start3.d9
1 files changed, 9 insertions, 0 deletions
diff --git a/ld/testsuite/ld-gc/start3.d b/ld/testsuite/ld-gc/start3.d
new file mode 100644
index 0000000..a57dab1
--- /dev/null
+++ b/ld/testsuite/ld-gc/start3.d
@@ -0,0 +1,9 @@
+#name: --gc-sections with groups and start/stop syms
+#ld: --gc-sections -e _start
+#nm: -n
+#notarget: [is_generic]
+#xfail: bfin-*-*linux* frv-*-*linux* lm32-*-*linux*
+
+#...
+[0-9a-f]+ T +bar
+#...