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