From 9be618bb9ee53a1b6d893b0622a3dd66ee96fbb3 Mon Sep 17 00:00:00 2001 From: amodra Date: Sun, 28 Sep 2008 13:29:18 +0000 Subject: [PATCH] * objcopy.c (setup_section): Set elf_group_id. --- binutils/ChangeLog | 4 ++++ binutils/objcopy.c | 19 ++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index ab1d8f3f0b..fa5aea4114 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2008-09-28 Alan Modra + + * objcopy.c (setup_section): Set elf_group_id. + 2008-09-24 Richard Henderson * dwarf.c (size_of_encoded_value, get_encoded_value): Move up. diff --git a/binutils/objcopy.c b/binutils/objcopy.c index deff1697e9..f8c1732fb2 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -2344,6 +2344,18 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg) if (extract_symbol) return; + if ((isection->flags & SEC_GROUP) != 0) + { + asymbol *gsym = group_signature (isection); + + if (gsym != NULL) + { + gsym->flags |= BSF_KEEP; + if (ibfd->xvec->flavour == bfd_target_elf_flavour) + elf_group_id (isection) = gsym; + } + } + /* Allow the BFD backend to copy any private data it understands from the input section to the output section. */ if (!bfd_copy_private_section_data (ibfd, isection, obfd, osection)) @@ -2351,13 +2363,6 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg) err = _("failed to copy private data"); goto loser; } - else if ((isection->flags & SEC_GROUP) != 0) - { - asymbol *gsym = group_signature (isection); - - if (gsym != NULL) - gsym->flags |= BSF_KEEP; - } /* All went well. */ return; -- 2.11.0