From: Tom Tromey Date: Thu, 30 Mar 2023 16:21:59 +0000 (-0600) Subject: Fix bug in cooked index scanner X-Git-Tag: gdb-15-branchpoint~1126 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=48f7f3751eac0bb5a2cf8c4d52cbf477e81bef14;p=thirdparty%2Fbinutils-gdb.git Fix bug in cooked index scanner Testing this entire series pointed out that the cooked index scanner disagrees with new_symbol about certain symbols. In particular, new_symbol has this comment: Ada and Fortran subprograms, whether marked external or not, are always stored as a global symbol, because we want This patch updates the scanner to match. I don't know why the current code does not cause failures. It's maybe worth noting that incremental CU expansion -- creating symtabs directly from the index -- would eliminate this sort of bug. --- diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 925a5ea4a5b..55a17358e66 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16326,6 +16326,12 @@ cooked_indexer::scan_attributes (dwarf2_per_cu_data *scanning_per_cu, || abbrev->tag == DW_TAG_enumeration_type || abbrev->tag == DW_TAG_enumerator)) *flags &= ~IS_STATIC; + + /* Keep in sync with new_symbol. */ + if (abbrev->tag == DW_TAG_subprogram + && (m_language == language_ada + || m_language == language_fortran)) + *flags &= ~IS_STATIC; } return info_ptr;