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

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