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 0ec96c0726d4d93ca16a65fe3424dadc48faf37a..0007863a3e961320adbf0591fc4a484749497f94 100644 (file)
@@ -1,3 +1,9 @@
+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.
index a9b0d3717d804c1d231eccba250c109b623bbfd2..c7cd1b5762e78a574e6a9aff08da3c8fba8937ed 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);
        }
     }