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

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