PowerPC64 has its own gc_mark_dynamic_ref.
bfd/
PR 27451
* elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Ignore synthesized
linker defined start/stop symbols when start_stop_gc.
ld/
* testsuite/ld-powerpc/startstop.d,
* testsuite/ld-powerpc/startstop.r,
* testsuite/ld-powerpc/startstop.s: New test.
* testsuite/ld-powerpc/powerpc.exp: Run it.
+2021-03-02 Alan Modra <amodra@gmail.com>
+
+ PR 27451
+ * elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Ignore synthesized
+ linker defined start/stop symbols when start_stop_gc.
+
2021-03-02 Alan Modra <amodra@gmail.com>
* elf64-ppc.c (ppc64_elf_relocate_section): Don't optimise got
if ((eh->elf.root.type == bfd_link_hash_defined
|| eh->elf.root.type == bfd_link_hash_defweak)
+ && (!eh->elf.start_stop
+ || eh->elf.root.ldscript_def
+ || !info->start_stop_gc)
&& ((eh->elf.ref_dynamic && !eh->elf.forced_local)
|| ((eh->elf.def_regular || ELF_COMMON_DEF_P (&eh->elf))
&& ELF_ST_VISIBILITY (eh->elf.other) != STV_INTERNAL
+2021-03-02 Alan Modra <amodra@gmail.com>
+
+ * testsuite/ld-powerpc/startstop.d,
+ * testsuite/ld-powerpc/startstop.r,
+ * testsuite/ld-powerpc/startstop.s: New test.
+ * testsuite/ld-powerpc/powerpc.exp: Run it.
+
2021-03-02 Alan Modra <amodra@gmail.com>
* testsuite/ld-powerpc/weak1.d,
{"weak1.so" "-shared -melf64ppc --hash-style=both" ""
"-a64 -mpower10" {weak1.s}
{{objdump -d weak1so.d} {readelf {-srW} weak1so.r}} "weak1.so"}
+ {"startstop" "-shared -melf64ppc --hash-style=sysv --gc-sections -z start-stop-gc" ""
+ "-a64 -mpower10" {startstop.s}
+ {{objdump -d startstop.d} {readelf {-rW} startstop.r}} "startstop.so"}
}
set ppceabitests {
--- /dev/null
+
+.*: file format .*
+
+Disassembly of section \.text:
+
+0+140 <_start>:
+ 140: (04 10 00 01|01 00 10 04) pld r3,66000
+ 144: (e4 60 01 d0|d0 01 60 e4)
+ 148: (04 10 00 01|01 00 10 04) pld r4,65984
+ 14c: (e4 80 01 c0|c0 01 80 e4)
--- /dev/null
+
+There are no relocations in this file.
--- /dev/null
+ .weak __start_xx
+ .weak __stop_xx
+
+ .global _start
+_start:
+ pld 3,__start_xx@got@pcrel
+ pld 4,__stop_xx@got@pcrel
+
+ .section xx,"a",unique,0
+ .byte 0
+
+ .section xx,"a",unique,1
+ .byte 1
+
+ .section xx,"a",unique,2
+ .byte 2