Stop strip from removing debuglink sections.
authorNick Clifton <nickc@redhat.com>
Tue, 12 Apr 2022 12:34:06 +0000 (13:34 +0100)
committerNick Clifton <nickc@redhat.com>
Tue, 12 Apr 2022 12:34:06 +0000 (13:34 +0100)
PR 28992
* objcopy.c (is_strip_section_1): Do not delete debuglink sections
when stripping debug information.

binutils/ChangeLog
binutils/objcopy.c

index 907959342d2593a57df9d689803a6989aa2231f8..26103a0279d2ee8c1e433c61b25609fe53555290 100644 (file)
@@ -1,3 +1,9 @@
+2022-04-12  Nick Clifton  <nickc@redhat.com>
+
+       PR 28992
+       * objcopy.c (is_strip_section_1): Do not delete debuglink sections
+       when stripping debug information.
+
 2022-04-06  Nick Clifton  <nickc@redhat.com>
 
        PR 28981
index aaa5aa9b2afe7614a73b42a54fe5d87e7e853a5b..6fb31c8cac7bba17f72857cd5cd85d64b709b7a0 100644 (file)
@@ -1358,8 +1358,20 @@ is_strip_section_1 (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
        {
          /* By default we don't want to strip .reloc section.
             This section has for pe-coff special meaning.   See
-            pe-dll.c file in ld, and peXXigen.c in bfd for details.  */
-         if (strcmp (bfd_section_name (sec), ".reloc") != 0)
+            pe-dll.c file in ld, and peXXigen.c in bfd for details.
+            Similarly we do not want to strip debuglink sections.  */
+         const char * kept_sections[] =
+           {
+             ".reloc",
+             ".gnu_debuglink",
+             ".gnu_debugaltlink"
+           };
+         int i;
+
+         for (i = ARRAY_SIZE (kept_sections);i--;)
+           if (strcmp (bfd_section_name (sec), kept_sections[i]) == 0)
+             break;
+         if (i == -1)
            return true;
        }