Blame SOURCES/gdb-rhbz1898252-loadable-section-outside-ELF-segments.patch

132741
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
132741
From: Keith Seitz <keiths@redhat.com>
132741
Date: Mon, 16 Nov 2020 12:42:09 -0500
132741
Subject: gdb-rhbz1898252-loadable-section-outside-ELF-segments.patch
132741
132741
;; Backport of "Exclude debuginfo files from 'outside of ELF segments'
132741
;; warning"  (Keith Seitz)
132741
132741
    Exclude debuginfo files from "outside of ELF segments" warning
132741
132741
    When GDB loads an ELF file, it will warn when a section is not located
132741
    in an ELF segment:
132741
132741
    $ ./gdb -q -iex "set build-id-verbose 0" --ex "b systemctl_main" -ex "r" -batch --args systemctl kexec
132741
    Breakpoint 1 at 0xc24d: file ../src/systemctl/systemctl.c, line 8752.
132741
    warning: Loadable section ".note.gnu.property" outside of ELF segments
132741
      in .gnu_debugdata for /lib64/libgcc_s.so.1
132741
    [Thread debugging using libthread_db enabled]
132741
    Using host libthread_db library "/lib64/libthread_db.so.1".
132741
    warning: Loadable section ".note.gnu.property" outside of ELF segments
132741
      in .gnu_debugdata for /lib64/libcap.so.2
132741
    warning: Loadable section ".note.gnu.property" outside of ELF segments
132741
      in .gnu_debugdata for /lib64/libacl.so.1
132741
    warning: Loadable section ".note.gnu.property" outside of ELF segments
132741
      in .gnu_debugdata for /lib64/libcryptsetup.so.12
132741
    warning: Loadable section ".note.gnu.property" outside of ELF segments
132741
      in .gnu_debugdata for /lib64/libgcrypt.so.20
132741
    warning: Loadable section ".note.gnu.property" outside of ELF segments
132741
      in .gnu_debugdata for /lib64/libip4tc.so.2
132741
    [snip]
132741
    This has feature has also been reported by various users, most notably
132741
    the Fedora-EOL'd bug 1553086.
132741
132741
    Mark Wielaard explains the issue quite nicely in
132741
132741
       https://sourceware.org/bugzilla/show_bug.cgi?id=24717#c2
132741
132741
    The short of it is, the ELF program headers for debuginfo files are
132741
    not suited to this particular use case. Consequently, the warning
132741
    generated above really is useless and should be ignored.
132741
132741
    This patch follows the same heuristic that BFD itself uses.
132741
132741
    gdb/ChangeLog
132741
    2020-11-13  Keith Seitz  <keiths@redhat.com>
132741
132741
            https://bugzilla.redhat.com/show_bug.cgi?id=1553086
132741
            * elfread.c (elf_symfile_segments): Omit "Loadable section ...
132741
            outside of ELF segments" warning for debugin
132741
132741
diff --git a/gdb/elfread.c b/gdb/elfread.c
132741
--- a/gdb/elfread.c
132741
+++ b/gdb/elfread.c
132741
@@ -147,7 +147,12 @@ elf_symfile_segments (bfd *abfd)
132741
 	 RealView) use SHT_NOBITS for uninitialized data.  Since it is
132741
 	 uninitialized, it doesn't need a program header.  Such
132741
 	 binaries are not relocatable.  */
132741
-      if (bfd_section_size (sect) > 0 && j == num_segments
132741
+
132741
+      /* Exclude debuginfo files from this warning, too, since those
132741
+	 are often not strictly compliant with the standard. See, e.g.,
132741
+	 ld/24717 for more discussion.  */
132741
+      if (!is_debuginfo_file (abfd)
132741
+	  && bfd_section_size (sect) > 0 && j == num_segments
132741
 	  && (bfd_section_flags (sect) & SEC_LOAD) != 0)
132741
 	warning (_("Loadable section \"%s\" outside of ELF segments"),
132741
 		 bfd_section_name (sect));