diff options
author | Tom Tromey <tom@tromey.com> | 2023-06-20 15:18:23 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2023-07-10 11:01:38 -0600 |
commit | dd2532ad8af1676450114e4884ad748d528eafbe (patch) | |
tree | c89cb597e89bca2ddbb845251e1c36eaff94f017 /gdb | |
parent | 424646edf42425390c0174f344a2acbd33b68fc9 (diff) | |
download | gdb-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.c | 3 |
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 |