DWARF Standard


HOME
SPECIFICATIONS
FAQ
ISSUES



230206.1 Michael Buch Add DW_AT_imported_declaration entries to name index Improvement Open


Section 6.1.1.1, pg 137
Proposal 
========

Add DW_AT_imported_declaration entries to name index for accelerated lookup.

Background
==========

C++ supports the ability to create aliases for namespaces.

Example — C++ namespace alias

namespace A {                 
  namespace B {                 
    namespace C {                 
      int a = 1;                    
    }                              
  }  // namespace B             
                              
  namespace C = B::C;           
}  // namespace A             
                              
int main() { return A::C::a; }

<1> DW_TAG_namespace            
         DW_AT_name "A"            
                                
<2>   DW_TAG_namespace          
           DW_AT_name "B"          
                                
<3>     DW_TAG_namespace        
              DW_AT_name "C"        
                                
<4>       DW_TAG_variable       
                DW_AT_name "a"      
                                
                                
<5>  DW_TAG_imported_declaration
          DW_AT_import <3>         
          DW_AT_name "C"           
                                       
In DWARF, the namespace alias “C” declared in namespace “A” is represented 
using a DW_TAG_imported_declaration whose name is that of the alias in the 
source program. However, compliant DWARF producers skip emitting 
DW_TAG_import_declaration for the namespace alias into the name index. This 
is problematic for consumers that need to perform lookup by name on the 
namespace alias (for example during LLDB’s expression evaluation) because 
there is nothing linking the import declaration and the namespace DIEs to 
each other, forcing the consumer to perform expensive scans through the 
DWARF tree or complicated bookkeeping.

This proposal extends the list of tags that may be put into the name 
index further to include DW_TAG_import_declaration to simplify
the work consumers have to do to find namespace alias DIEs by name.

Document changes
================

6.1.1.1 Contents of the Name Index
———————————————————

[ORIGINAL TEXT]
>>>>>>>>>>>>>>>
The name index must contain an entry for each debugging information entry that 
defines a named subprogram, label, variable, type, or namespace, subject to the 
following rules: 

[NEW TEXT]
==========
The name index must contain an entry for each debugging information entry that 
defines a named subprogram, label, variable, type, namespace, or import declaration
subject to the following rules: 
<<<<<<<<<<<<<<<



All logos and trademarks in this site are property of their respective owner.
The comments are property of their posters, all the rest © 2007-2022 by DWARF Standards Committee.