diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.h --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.h @@ -110,7 +110,7 @@ uint64_t GetAttributeValueAsAddress(const dw_attr_t attr, uint64_t fail_value) const; - size_t GetAttributes(DWARFAttributes &attributes, uint32_t depth = 0) const; + size_t GetAttributes(DWARFAttributes &attributes) const; protected: DWARFUnit *m_cu; diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp @@ -104,12 +104,10 @@ return IsValid() && GetDWARF()->Supports_DW_AT_APPLE_objc_complete_type(m_cu); } -size_t DWARFBaseDIE::GetAttributes(DWARFAttributes &attributes, - uint32_t depth) const { +size_t DWARFBaseDIE::GetAttributes(DWARFAttributes &attributes) const { if (IsValid()) - return m_die->GetAttributes(m_cu, attributes, depth); - if (depth == 0) - attributes.Clear(); + return m_die->GetAttributes(m_cu, attributes); + attributes.Clear(); return 0; } diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h @@ -47,10 +47,9 @@ bool Extract(const lldb_private::DWARFDataExtractor &data, const DWARFUnit *cu, lldb::offset_t *offset_ptr); - size_t GetAttributes(const DWARFUnit *cu, - DWARFAttributes &attrs, - uint32_t curr_depth = 0) - const; // "curr_depth" for internal use only, don't set this yourself!!! + size_t GetAttributes(const DWARFUnit *cu, DWARFAttributes &attrs) const { + return GetAttributes(cu, attrs, 0 /* curr_depth */); + } dw_offset_t GetAttributeValue(const DWARFUnit *cu, const dw_attr_t attr, @@ -176,6 +175,10 @@ /// A copy of the DW_TAG value so we don't have to go through the compile /// unit abbrev table dw_tag_t m_tag = llvm::dwarf::DW_TAG_null; + +private: + size_t GetAttributes(const DWARFUnit *cu, DWARFAttributes &attrs, + uint32_t curr_depth) const; }; #endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFDEBUGINFOENTRY_H diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp @@ -436,7 +436,8 @@ if (form_value.ExtractValue(data, &offset)) { DWARFDIE spec_die = form_value.Reference(); if (spec_die) - spec_die.GetAttributes(attributes, curr_depth + 1); + spec_die.GetDIE()->GetAttributes(spec_die.GetCU(), attributes, + curr_depth + 1); } } else { llvm::Optional fixed_skip_size = DWARFFormValue::GetFixedSize(form, cu);