aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2023-06-20 15:18:23 -0600
committerTom Tromey <tom@tromey.com>2023-07-10 11:01:38 -0600
commitdd2532ad8af1676450114e4884ad748d528eafbe (patch)
treec89cb597e89bca2ddbb845251e1c36eaff94f017 /gdb
parent424646edf42425390c0174f344a2acbd33b68fc9 (diff)
downloadgdb-dd2532ad8af1676450114e4884ad748d528eafbe.zip
gdb-dd2532ad8af1676450114e4884ad748d528eafbe.tar.gz
gdb-dd2532ad8af1676450114e4884ad748d528eafbe.tar.bz2
Avoid crash with absolute symbol
A user supplied an executable and a remote logfile that could be used to crash gdb. The problem is that the BFD section for a particular symbol was null, because the section was not marked "allocated". Digging deeper, the problem was that elfread.c dropped the section for absolute symbols. This patch fixes the crash. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30431
Diffstat (limited to 'gdb')
-rw-r--r--gdb/elfread.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 799e3b9..7697106 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -216,7 +216,8 @@ record_minimal_symbol (minimal_symbol_reader &reader,
ELF is malformed then this might not be the case. In that case don't
create an msymbol that references an uninitialised section object. */
int section_index = 0;
- if ((bfd_section_flags (bfd_section) & SEC_ALLOC) == SEC_ALLOC)
+ if ((bfd_section_flags (bfd_section) & SEC_ALLOC) == SEC_ALLOC
+ || bfd_section == bfd_abs_section_ptr)
section_index = gdb_bfd_section_index (objfile->obfd.get (), bfd_section);
struct minimal_symbol *result