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

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