PR binutils/3166
authorAlan Modra <amodra@gmail.com>
Tue, 29 Jun 2010 08:47:40 +0000 (08:47 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 29 Jun 2010 08:47:40 +0000 (08:47 +0000)
* objcopy.c (is_strip_section): Revert 2006-09-05.
(setup_section): Make SHT_GROUP section nobits.

binutils/ChangeLog
binutils/objcopy.c

index 0ec96c0..0007863 100644 (file)
@@ -1,5 +1,11 @@
 2010-06-29  Alan Modra  <amodra@gmail.com>
 
+       PR binutils/3166
+       * objcopy.c (is_strip_section): Revert 2006-09-05.
+       (setup_section): Make SHT_GROUP section nobits.
+
+2010-06-29  Alan Modra  <amodra@gmail.com>
+
        * configure: Regenerate.
        * po/POTFILES.in: Regenerate.
 
index a9b0d37..c7cd1b5 100644 (file)
@@ -942,12 +942,6 @@ is_strip_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
       asymbol *gsym;
       const char *gname;
 
-      /* PR binutils/3166
-        Group sections look like debugging sections but they are not.
-        (They have a non-zero size but they are not ALLOCated).  */
-      if (strip_symbols == STRIP_NONDEBUG)
-       return TRUE;
-
       /* PR binutils/3181
         If we are going to strip the group signature symbol, then
         strip the group section too.  */
@@ -2419,11 +2413,11 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
   if (p != NULL && p->set_flags)
     flags = p->flags | (flags & (SEC_HAS_CONTENTS | SEC_RELOC));
   else if (strip_symbols == STRIP_NONDEBUG
-          && (flags & SEC_ALLOC) != 0
-          && (ibfd->xvec->flavour != bfd_target_elf_flavour
-              || elf_section_type (isection) != SHT_NOTE))
+          && (flags & (SEC_ALLOC | SEC_GROUP)) != 0
+          && !(ibfd->xvec->flavour == bfd_target_elf_flavour
+               && elf_section_type (isection) == SHT_NOTE))
     {
-      flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD);
+      flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD | SEC_GROUP);
       if (obfd->xvec->flavour == bfd_target_elf_flavour)
        {
          make_nobits = TRUE;
@@ -2432,7 +2426,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
             elf.c:copy_private_bfd_data that section flags have not
             changed between input and output sections.  This hack
             prevents wholesale rewriting of the program headers.  */
-         isection->flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD);
+         isection->flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD | SEC_GROUP);
        }
     }