]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/symtab] Fixup psymbol_functions::find_pc_sect_psymtab
authorTom de Vries <tdevries@suse.de>
Mon, 21 Jun 2021 13:34:07 +0000 (15:34 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 24 Jun 2021 15:48:26 +0000 (17:48 +0200)
When calling psymbol_functions::find_pc_sect_psymtab, we do not end up with an
actual symbol that we can declare interesting, so go find it.

gdb/psymtab.c

index 568e673f89167702aee74d0ec1ae3dc9e5a1fffe..3e0f7e721b76ad8683ec085c6be4f79b94ade00a 100644 (file)
@@ -198,12 +198,13 @@ psymbol_functions::find_pc_sect_psymtab (struct objfile *objfile,
                         pc - baseaddr));
       if (pst != NULL)
        {
+         struct partial_symbol *p = nullptr;
+
          /* FIXME: addrmaps currently do not handle overlayed sections,
             so fall back to the non-addrmap case if we're debugging
             overlays and the addrmap returned the wrong section.  */
          if (overlay_debugging && msymbol.minsym != NULL && section != NULL)
            {
-             struct partial_symbol *p;
 
              /* NOTE: This assumes that every psymbol has a
                 corresponding msymbol, which is not necessarily
@@ -224,6 +225,8 @@ psymbol_functions::find_pc_sect_psymtab (struct objfile *objfile,
             granularity and FIND_PC_SECT_PSYMTAB_CLOSER may mislead us into
             a worse chosen section due to the TEXTLOW/TEXTHIGH ranges
             overlap.  */
+         if (lazy_expand_symtab_p && p == nullptr)
+           p = find_pc_sect_psymbol (objfile, pst, pc, section);
 
          return pst;
        }