||DW_IDX_* for static/extern symbols
Section 188.8.131.52.7, pg 147
When a debugger wants to print 'somename' it logically tries to find first 'somename' as an
external symbol in all available libraries. Only if none such external symbol is found the
debugger starts searching for a static 'somename' symbol in those libraries.
This requires to know whether a symbol in .debug_names index has DW_AT_external or not.
Otherwise a lot of needless CU expansions happen. This extension improves performance
gain of the .debug_names index.
(Discovered in an original fix by Doug Evans - GDB Bug 14125.)
In table 6.1 on page 147, add the following:
DW_IDX_external Whether DW_AT_external is present on the
In Section 184.108.40.206.8 (Entry Pool), add the following:
Each index entry has a flag indicating whether the corresponding DIE
has the DW_AT_external attribute with a true value. If the
DW_IDX_external attribute is missing from an entry, it means that
DW_AT_external is false for that DIE.
In Table 7.23 on page 234, add the following:
DW_IDX_external 6 flag
In Section 7.19 (Name Index Table), below Table 7.23, add the
following non-normative text:
It is suggested that producers should use the form code
DW_FORM_flag_present for the DW_IDX_external attribute for
abbreviation codes that represent external names.
2021-03-25: Revised. Previous version: http://dwarfstd.org/ShowIssue.php?issue=170527.1-1