PR27451, -z start_stop_gc for powerpc64

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.
This commit is contained in:
Alan Modra 2021-03-02 21:25:20 +10:30
parent f5b9c288a3
commit b80e421f91
7 changed files with 47 additions and 0 deletions

View File

@ -1,3 +1,9 @@
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

View File

@ -5749,6 +5749,9 @@ ppc64_elf_gc_mark_dynamic_ref (struct elf_link_hash_entry *h, void *inf)
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

View File

@ -1,3 +1,10 @@
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,

View File

@ -350,6 +350,9 @@ set ppc64elftests {
{"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 {

View File

@ -0,0 +1,10 @@
.*: 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)

View File

@ -0,0 +1,2 @@
There are no relocations in this file.

View File

@ -0,0 +1,16 @@
.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