|
|
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));
|