Fixes for "Ignore dynamic references on forced local symbols"

PowerPC64 has its own mark_dynamic_ref, which needs the same change as
made by d664fd41e1 to the generic ELF version.  Some other targets
discard more than just .data, so allow for that too in expected ld
messages.

bfd/
	PR ld/22649
	* elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Ignore dynamic
	references on forced local symbols.
ld/
	PR ld/22649
	* testsuite/ld-elf/pr22649.msg: Allow other messages.
	* testsuite/ld-elf/shared.exp: Check that --gc-sections is
	supported before running ld/22649 tests.
This commit is contained in:
Alan Modra 2018-01-12 16:58:04 +10:30
parent 58807c48a5
commit 87e79a6515
5 changed files with 57 additions and 37 deletions

View File

@ -1,3 +1,9 @@
2018-01-12 Alan Modra <amodra@gmail.com>
PR ld/22649
* elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Ignore dynamic
references on forced local symbols.
2018-01-12 Vlad Ivanov <vlad@ivanov.email>
* elfxx-mips.c (_bfd_mips_elf_final_link): Notify user when

View File

@ -6447,7 +6447,7 @@ 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.ref_dynamic
&& ((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
&& ELF_ST_VISIBILITY (eh->elf.other) != STV_HIDDEN

View File

@ -1,3 +1,10 @@
2018-01-12 Alan Modra <amodra@gmail.com>
PR ld/22649
* testsuite/ld-elf/pr22649.msg: Allow other messages.
* testsuite/ld-elf/shared.exp: Check that --gc-sections is
supported before running ld/22649 tests.
2018-01-12 Nick Clifton <nickc@redhat.com>
* emultempl/elf32.em (_handle_option): Add support for "-z undefs"

View File

@ -1 +1,3 @@
#...
.*: Removing unused section '\.data' in file 'tmpdir/pr22649-2.*\.o'
#pass

View File

@ -90,44 +90,49 @@ run_ld_link_tests [list \
{} \
"pr22649-1.so" \
] \
[list \
"Build pr22649-2a.so" \
"$LFLAGS -shared -gc-sections -print-gc-sections" \
"" \
"$AFLAGS_PIC" \
{pr22649-2a.s} \
{{ld pr22649.msg}} \
"pr22649-2a.so" \
] \
[list \
"Build pr22649-2b.so" \
"$LFLAGS -shared -gc-sections -print-gc-sections" \
"tmpdir/pr22649-1.so" \
"$AFLAGS_PIC" \
{pr22649-2a.s} \
{{ld pr22649.msg}} \
"pr22649-2b.so" \
] \
[list \
"Build pr22649-2c.so" \
"$LFLAGS -shared -gc-sections -print-gc-sections" \
"" \
"$AFLAGS_PIC" \
{pr22649-2b.s} \
{} \
"pr22649-2b.so" \
] \
[list \
"Build pr22649-2d.so" \
"$LFLAGS -shared -gc-sections -print-gc-sections" \
"tmpdir/pr22649-1.so" \
"$AFLAGS_PIC" \
{pr22649-2b.s} \
{} \
"pr22649-2b.so" \
] \
]
if { [check_gc_sections_available] } {
run_ld_link_tests [list \
[list \
"Build pr22649-2a.so" \
"$LFLAGS -shared -gc-sections -print-gc-sections" \
"" \
"$AFLAGS_PIC" \
{pr22649-2a.s} \
{{ld pr22649.msg}} \
"pr22649-2a.so" \
] \
[list \
"Build pr22649-2b.so" \
"$LFLAGS -shared -gc-sections -print-gc-sections" \
"tmpdir/pr22649-1.so" \
"$AFLAGS_PIC" \
{pr22649-2a.s} \
{{ld pr22649.msg}} \
"pr22649-2b.so" \
] \
[list \
"Build pr22649-2c.so" \
"$LFLAGS -shared -gc-sections -print-gc-sections" \
"" \
"$AFLAGS_PIC" \
{pr22649-2b.s} \
{} \
"pr22649-2b.so" \
] \
[list \
"Build pr22649-2d.so" \
"$LFLAGS -shared -gc-sections -print-gc-sections" \
"tmpdir/pr22649-1.so" \
"$AFLAGS_PIC" \
{pr22649-2b.s} \
{} \
"pr22649-2b.so" \
] \
]
}
run_ld_link_tests [list \
[list \
"DT_TEXTREL in shared lib" \