From 6e5e9d58c1eeef5677c90886578a895cb8c164c5 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 13 Feb 2018 14:09:48 +1030 Subject: PR22836, "-r -s" doesn't work with -g3 using GCC 7 This fixes the case where all of a group is removed with ld -r, the situation in the PR, and failures where part of a group is removed that contain relocs. bfd/ PR 22836 * elf.c (_bfd_elf_fixup_group_sections): Account for removed relocation sections. If size reduces to just the flag word, remove that too and mark with SEC_EXCLUDE. * elflink.c (bfd_elf_final_link): Strip empty group sections. binutils/ * testsuite/binutils-all/group-7.s, * testsuite/binutils-all/group-7a.d, * testsuite/binutils-all/group-7b.d, * testsuite/binutils-all/group-7c.d: New tests. * testsuite/binutils-all/objcopy.exp: Run them. ld/ * testsuite/ld-elf/pr22836-2.d, * testsuite/ld-elf/pr22836-2.s: New test. --- binutils/testsuite/binutils-all/objcopy.exp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'binutils/testsuite/binutils-all/objcopy.exp') diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp index 377f88c0e16..f4a7692cdf3 100644 --- a/binutils/testsuite/binutils-all/objcopy.exp +++ b/binutils/testsuite/binutils-all/objcopy.exp @@ -1051,6 +1051,9 @@ if [is_elf_format] { objcopy_test_readelf "GNU_MBIND section" mbind1.s run_dump_test "group-5" run_dump_test "group-6" + run_dump_test "group-7a" + run_dump_test "group-7b" + run_dump_test "group-7c" run_dump_test "copy-1" run_dump_test "note-1" if [is_elf64 tmpdir/bintest.o] { -- cgit v1.2.1