Mark section in a section group with SHF_GROUP
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 22 May 2018 02:25:19 +0000 (19:25 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 22 May 2018 02:25:33 +0000 (19:25 -0700)
All sections in a section group should be marked with SHF_GROUP.  But
some tools generate broken objects without SHF_GROUP.  This patch fixes
them up for objcopy and strip.

PR binutils/23199
* elf.c (setup_group): Mark section in a section group with
SHF_GROUP.

bfd/ChangeLog
bfd/elf.c

index bab543b..7233851 100644 (file)
@@ -1,3 +1,9 @@
+2018-05-21  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR binutils/23199
+       * elf.c (setup_group): Mark section in a section group with
+       SHF_GROUP.
+
 2018-05-18  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/23194
index 47d046f..6c66bbc 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -711,7 +711,15 @@ setup_group (bfd *abfd, Elf_Internal_Shdr *hdr, asection *newsect)
                          break;
                        }
                      if (idx < shnum)
-                       dest->shdr = elf_elfsections (abfd)[idx];
+                       {
+                         dest->shdr = elf_elfsections (abfd)[idx];
+                         /* PR binutils/23199: All sections in a
+                            section group should be marked with
+                            SHF_GROUP.  But some tools generate
+                            broken objects without SHF_GROUP.  Fix
+                            them up here.  */
+                         dest->shdr->sh_flags |= SHF_GROUP;
+                       }
                      if (idx >= shnum
                          || dest->shdr->sh_type == SHT_GROUP)
                        {