Browse Source

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.
users/ARM/gcs-binutils-gdb-master
Tom Tromey 3 years ago
parent
commit
48f7f3751e
  1. 6
      gdb/dwarf2/read.c

6
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;

Loading…
Cancel
Save