[Lldb-commits] [lldb] [lldb] Lookup static const members in	FindGlobalVariables (PR #111859)
    Pavel Labath via lldb-commits 
    lldb-commits at lists.llvm.org
       
    Mon Nov  4 00:53:16 PST 2024
    
    
  
================
@@ -362,6 +369,23 @@ void ManualDWARFIndex::IndexUnitImpl(DWARFUnit &unit,
         set.namespaces.Insert(ConstString(name), ref);
       break;
 
+    case DW_TAG_member: {
+      // In DWARF 4 and earlier `static const` members of a struct, a class or a
+      // union have an entry tag `DW_TAG_member`, and are also tagged as
+      // `DW_AT_external` and `DW_AT_declaration`, but otherwise follow the
+      // same rules as `DW_TAG_variable`.
+      if (unit.GetVersion() >= 5)
+        break;
+      bool parent_is_class_type = false;
+      if (auto parent = die.GetParent()) {
+        parent_is_class_type = parent->Tag() == DW_TAG_structure_type ||
+                               parent->Tag() == DW_TAG_class_type ||
+                               parent->Tag() == DW_TAG_union_type;
+      }
+      if (!parent_is_class_type || !is_external || !is_declaration)
----------------
labath wrote:
Good finding. I think it would be good to match whatever that code does. (making it a single function for it would be somewhat tricky, as the code here needs to be very fast, so we don't want to have the helper function do another lookup for the attributes and stuff).
https://github.com/llvm/llvm-project/pull/111859
    
    
More information about the lldb-commits
mailing list