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

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