aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2020-11-13 09:31:49 -0800
committerKeith Seitz <keiths@redhat.com>2020-11-13 09:31:49 -0800
commit25f4c26276594b0afdb7709df668a90858e399fa (patch)
tree272d88192d2454e2619e22c0bb2cabb533bcfa35 /gdb
parent9d3ab915be4548c6fee80c0b2f79a509fd4150b8 (diff)
downloadgdb-25f4c26276594b0afdb7709df668a90858e399fa.zip
gdb-25f4c26276594b0afdb7709df668a90858e399fa.tar.gz
gdb-25f4c26276594b0afdb7709df668a90858e399fa.tar.bz2
Exclude debuginfo files from "outside of ELF segments" warning
When GDB loads an ELF file, it will warn when a section is not located in an ELF segment: $ ./gdb -q -iex "set build-id-verbose 0" --ex "b systemctl_main" -ex "r" -batch --args systemctl kexec Breakpoint 1 at 0xc24d: file ../src/systemctl/systemctl.c, line 8752. warning: Loadable section ".note.gnu.property" outside of ELF segments in .gnu_debugdata for /lib64/libgcc_s.so.1 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". warning: Loadable section ".note.gnu.property" outside of ELF segments in .gnu_debugdata for /lib64/libcap.so.2 warning: Loadable section ".note.gnu.property" outside of ELF segments in .gnu_debugdata for /lib64/libacl.so.1 warning: Loadable section ".note.gnu.property" outside of ELF segments in .gnu_debugdata for /lib64/libcryptsetup.so.12 warning: Loadable section ".note.gnu.property" outside of ELF segments in .gnu_debugdata for /lib64/libgcrypt.so.20 warning: Loadable section ".note.gnu.property" outside of ELF segments in .gnu_debugdata for /lib64/libip4tc.so.2 [snip] This has feature has also been reported by various users, most notably the Fedora-EOL'd bug 1553086. Mark Wielaard explains the issue quite nicely in https://sourceware.org/bugzilla/show_bug.cgi?id=24717#c2 The short of it is, the ELF program headers for debuginfo files are not suited to this particular use case. Consequently, the warning generated above really is useless and should be ignored. This patch follows the same heuristic that BFD itself uses. gdb/ChangeLog 2020-11-13 Keith Seitz <keiths@redhat.com> https://bugzilla.redhat.com/show_bug.cgi?id=1553086 * elfread.c (elf_symfile_segments): Omit "Loadable section ... outside of ELF segments" warning for debugin
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/elfread.c7
2 files changed, 12 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f8f6993..652f20a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2020-11-13 Keith Seitz <keiths@redhat.com>
+ https://bugzilla.redhat.com/show_bug.cgi?id=1553086
+ * elfread.c (elf_symfile_segments): Omit "Loadable section ...
+ outside of ELF segments" warning for debugin
+
+2020-11-13 Keith Seitz <keiths@redhat.com>
+
PR gdb/23034
* elfread.c (elf_symfile_segments): Output a BFD file name
for the "Loadable section ... outside of ELF segments" warning.
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 7915dcd..ccd7ce5 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -147,7 +147,12 @@ elf_symfile_segments (bfd *abfd)
RealView) use SHT_NOBITS for uninitialized data. Since it is
uninitialized, it doesn't need a program header. Such
binaries are not relocatable. */
- if (bfd_section_size (sect) > 0 && j == num_segments
+
+ /* Exclude debuginfo files from this warning, too, since those
+ are often not strictly compliant with the standard. See, e.g.,
+ ld/24717 for more discussion. */
+ if (!is_debuginfo_file (abfd)
+ && bfd_section_size (sect) > 0 && j == num_segments
&& (bfd_section_flags (sect) & SEC_LOAD) != 0)
warning (_("Loadable section \"%s\" outside of ELF segments\n in %s"),
bfd_section_name (sect), bfd_get_filename (abfd));