Avoid crash with absolute symbol
authorTom Tromey <tom@tromey.com>
Tue, 20 Jun 2023 21:18:23 +0000 (15:18 -0600)
committerTom Tromey <tom@tromey.com>
Mon, 10 Jul 2023 17:01:38 +0000 (11:01 -0600)
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

gdb/elfread.c

index 799e3b914f839f402c7fbea901316ae48df10cfe..7697106e9b61f428cce96047f76847d2ac104d68 100644 (file)
@@ -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