summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2019-05-21 17:38:56 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2019-05-21 17:38:56 +0000
commitb7a19321442a5c78ea463fe9a9c671d2522788ee (patch)
tree370d6d074436bd2273665dcd60c2b9f1f5a88864 /lldb
parentb43dfaa6c0ff5661cde472c54e711c4afebe8b27 (diff)
downloadbcm5719-llvm-b7a19321442a5c78ea463fe9a9c671d2522788ee.tar.gz
bcm5719-llvm-b7a19321442a5c78ea463fe9a9c671d2522788ee.zip
Remove `SymbolFileDWARF *` when there is already `DWARFUnit *`
In D61502#1503247 @clayborg suggested that SymbolFileDWARF *dwarf2Data is really redundant in all the calls with also having DWARFUnit *cu. So remove it. One `SymbolFileDWARF *` nullptr check (DWARFDebugInfoEntry::GetDIENamesAndRanges) could be removed, other two nullptr checks (DWARFDebugInfoEntry::GetName and DWARFDebugInfoEntry::AppendTypeName) need to stay in place (now for `DWARFUnit *`). Differential Revision: https://reviews.llvm.org/D62011 llvm-svn: 361277
Diffstat (limited to 'lldb')
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp11
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp21
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.cpp2
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp242
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h88
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp56
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h3
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp12
8 files changed, 186 insertions, 249 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp
index 205d66ff7a3..dc85b97886e 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFBaseDIE.cpp
@@ -41,8 +41,7 @@ const char *DWARFBaseDIE::GetTagAsCString() const {
const char *DWARFBaseDIE::GetAttributeValueAsString(const dw_attr_t attr,
const char *fail_value) const {
if (IsValid())
- return m_die->GetAttributeValueAsString(GetDWARF(), GetCU(), attr,
- fail_value);
+ return m_die->GetAttributeValueAsString(GetCU(), attr, fail_value);
else
return fail_value;
}
@@ -50,8 +49,7 @@ const char *DWARFBaseDIE::GetAttributeValueAsString(const dw_attr_t attr,
uint64_t DWARFBaseDIE::GetAttributeValueAsUnsigned(const dw_attr_t attr,
uint64_t fail_value) const {
if (IsValid())
- return m_die->GetAttributeValueAsUnsigned(GetDWARF(), GetCU(), attr,
- fail_value);
+ return m_die->GetAttributeValueAsUnsigned(GetCU(), attr, fail_value);
else
return fail_value;
}
@@ -59,8 +57,7 @@ uint64_t DWARFBaseDIE::GetAttributeValueAsUnsigned(const dw_attr_t attr,
uint64_t DWARFBaseDIE::GetAttributeValueAsAddress(const dw_attr_t attr,
uint64_t fail_value) const {
if (IsValid())
- return m_die->GetAttributeValueAsAddress(GetDWARF(), GetCU(), attr,
- fail_value);
+ return m_die->GetAttributeValueAsAddress(GetCU(), attr, fail_value);
else
return fail_value;
}
@@ -73,7 +70,7 @@ lldb::user_id_t DWARFBaseDIE::GetID() const {
const char *DWARFBaseDIE::GetName() const {
if (IsValid())
- return m_die->GetName(GetDWARF(), m_cu);
+ return m_die->GetName(m_cu);
else
return nullptr;
}
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp
index 5c529c1b8f5..36a1b400f7b 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp
@@ -113,7 +113,7 @@ DWARFDIE::GetSibling() const {
DWARFDIE
DWARFDIE::GetReferencedDIE(const dw_attr_t attr) const {
if (IsValid())
- return m_die->GetAttributeValueAsReference(GetDWARF(), GetCU(), attr);
+ return m_die->GetAttributeValueAsReference(GetCU(), attr);
else
return {};
}
@@ -130,10 +130,9 @@ DWARFDIE
DWARFDIE::GetAttributeValueAsReferenceDIE(const dw_attr_t attr) const {
if (IsValid()) {
DWARFUnit *cu = GetCU();
- SymbolFileDWARF *dwarf = cu->GetSymbolFileDWARF();
const bool check_specification_or_abstract_origin = true;
DWARFFormValue form_value;
- if (m_die->GetAttributeValue(dwarf, cu, attr, form_value, nullptr,
+ if (m_die->GetAttributeValue(cu, attr, form_value, nullptr,
check_specification_or_abstract_origin))
return form_value.Reference();
}
@@ -147,7 +146,7 @@ DWARFDIE::LookupDeepestBlock(lldb::addr_t file_addr) const {
DWARFUnit *cu = GetCU();
DWARFDebugInfoEntry *function_die = nullptr;
DWARFDebugInfoEntry *block_die = nullptr;
- if (m_die->LookupAddress(file_addr, dwarf, cu, &function_die, &block_die)) {
+ if (m_die->LookupAddress(file_addr, cu, &function_die, &block_die)) {
if (block_die && block_die != function_die) {
if (cu->ContainsDIEOffset(block_die->GetOffset()))
return DWARFDIE(cu, block_die);
@@ -164,21 +163,21 @@ DWARFDIE::LookupDeepestBlock(lldb::addr_t file_addr) const {
const char *DWARFDIE::GetMangledName() const {
if (IsValid())
- return m_die->GetMangledName(GetDWARF(), m_cu);
+ return m_die->GetMangledName(m_cu);
else
return nullptr;
}
const char *DWARFDIE::GetPubname() const {
if (IsValid())
- return m_die->GetPubname(GetDWARF(), m_cu);
+ return m_die->GetPubname(m_cu);
else
return nullptr;
}
const char *DWARFDIE::GetQualifiedName(std::string &storage) const {
if (IsValid())
- return m_die->GetQualifiedName(GetDWARF(), m_cu, storage);
+ return m_die->GetQualifiedName(m_cu, storage);
else
return nullptr;
}
@@ -215,7 +214,7 @@ std::vector<DWARFDIE> DWARFDIE::GetDeclContextDIEs() const {
void DWARFDIE::GetDWARFDeclContext(DWARFDeclContext &dwarf_decl_ctx) const {
if (IsValid()) {
dwarf_decl_ctx.SetLanguage(GetLanguage());
- m_die->GetDWARFDeclContext(GetDWARF(), GetCU(), dwarf_decl_ctx);
+ m_die->GetDWARFDeclContext(GetCU(), dwarf_decl_ctx);
} else {
dwarf_decl_ctx.Clear();
}
@@ -273,7 +272,7 @@ void DWARFDIE::GetDeclContext(std::vector<CompilerContext> &context) const {
DWARFDIE
DWARFDIE::GetParentDeclContextDIE() const {
if (IsValid())
- return m_die->GetParentDeclContextDIE(GetDWARF(), m_cu);
+ return m_die->GetParentDeclContextDIE(m_cu);
else
return DWARFDIE();
}
@@ -331,8 +330,8 @@ bool DWARFDIE::GetDIENamesAndRanges(
lldb_private::DWARFExpression *frame_base) const {
if (IsValid()) {
return m_die->GetDIENamesAndRanges(
- GetDWARF(), GetCU(), name, mangled, ranges, decl_file, decl_line,
- decl_column, call_file, call_line, call_column, frame_base);
+ GetCU(), name, mangled, ranges, decl_file, decl_line, decl_column,
+ call_file, call_line, call_column, frame_base);
} else
return false;
}
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.cpp
index 775b6b3ae5d..893bf6abbab 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.cpp
@@ -65,7 +65,7 @@ llvm::Expected<DWARFDebugAranges &> DWARFDebugInfo::GetCompileUnitAranges() {
dw_offset_t offset = cu->GetOffset();
if (cus_with_data.find(offset) == cus_with_data.end())
- cu->BuildAddressRangeTable(m_dwarf2Data, m_cu_aranges_up.get());
+ cu->BuildAddressRangeTable(m_cu_aranges_up.get());
}
const bool minimize = true;
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
index a78aba8bb78..610b28127e4 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
@@ -373,19 +373,15 @@ static dw_offset_t GetRangesOffset(const DWARFDebugRangesBase *debug_ranges,
// Gets the valid address ranges for a given DIE by looking for a
// DW_AT_low_pc/DW_AT_high_pc pair, DW_AT_entry_pc, or DW_AT_ranges attributes.
bool DWARFDebugInfoEntry::GetDIENamesAndRanges(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu, const char *&name,
- const char *&mangled, DWARFRangeList &ranges, int &decl_file,
- int &decl_line, int &decl_column, int &call_file, int &call_line,
- int &call_column, DWARFExpression *frame_base) const {
- if (dwarf2Data == nullptr)
- return false;
-
+ const DWARFUnit *cu, const char *&name, const char *&mangled,
+ DWARFRangeList &ranges, int &decl_file, int &decl_line, int &decl_column,
+ int &call_file, int &call_line, int &call_column,
+ DWARFExpression *frame_base) const {
SymbolFileDWARFDwo *dwo_symbol_file = cu->GetDwoSymbolFile();
if (dwo_symbol_file)
return GetDIENamesAndRanges(
- dwo_symbol_file, dwo_symbol_file->GetCompileUnit(), name, mangled,
- ranges, decl_file, decl_line, decl_column, call_file, call_line,
- call_column, frame_base);
+ dwo_symbol_file->GetCompileUnit(), name, mangled, ranges, decl_file,
+ decl_line, decl_column, call_file, call_line, call_column, frame_base);
dw_addr_t lo_pc = LLDB_INVALID_ADDRESS;
dw_addr_t hi_pc = LLDB_INVALID_ADDRESS;
@@ -394,8 +390,9 @@ bool DWARFDebugInfoEntry::GetDIENamesAndRanges(
lldb::offset_t offset;
const DWARFAbbreviationDeclaration *abbrevDecl =
- GetAbbreviationDeclarationPtr(dwarf2Data, cu, offset);
+ GetAbbreviationDeclarationPtr(cu, offset);
+ SymbolFileDWARF *dwarf2Data = cu->GetSymbolFileDWARF();
lldb::ModuleSP module = dwarf2Data->GetObjectFile()->GetModule();
if (abbrevDecl) {
@@ -559,9 +556,9 @@ bool DWARFDebugInfoEntry::GetDIENamesAndRanges(
if (die_ref.die_offset != DW_INVALID_OFFSET) {
DWARFDIE die = dwarf2Data->GetDIE(die_ref);
if (die)
- die.GetDIE()->GetDIENamesAndRanges(
- die.GetDWARF(), die.GetCU(), name, mangled, ranges, decl_file,
- decl_line, decl_column, call_file, call_line, call_column);
+ die.GetDIE()->GetDIENamesAndRanges(die.GetCU(), name, mangled, ranges,
+ decl_file, decl_line, decl_column,
+ call_file, call_line, call_column);
}
}
}
@@ -572,8 +569,7 @@ bool DWARFDebugInfoEntry::GetDIENamesAndRanges(
//
// Dumps a debug information entry and all of it's attributes to the specified
// stream.
-void DWARFDebugInfoEntry::Dump(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu, Stream &s,
+void DWARFDebugInfoEntry::Dump(const DWARFUnit *cu, Stream &s,
uint32_t recurse_depth) const {
const DWARFDataExtractor &debug_info_data = cu->GetData();
lldb::offset_t offset = m_offset;
@@ -600,8 +596,7 @@ void DWARFDebugInfoEntry::Dump(SymbolFileDWARF *dwarf2Data,
dw_attr_t attr;
abbrevDecl->GetAttrAndFormValueByIndex(i, attr, form_value);
- DumpAttribute(dwarf2Data, cu, debug_info_data, &offset, s, attr,
- form_value);
+ DumpAttribute(cu, debug_info_data, &offset, s, attr, form_value);
}
const DWARFDebugInfoEntry *child = GetFirstChild();
@@ -609,7 +604,7 @@ void DWARFDebugInfoEntry::Dump(SymbolFileDWARF *dwarf2Data,
s.IndentMore();
while (child) {
- child->Dump(dwarf2Data, cu, s, recurse_depth - 1);
+ child->Dump(cu, s, recurse_depth - 1);
child = child->GetSibling();
}
s.IndentLess();
@@ -630,9 +625,9 @@ void DWARFDebugInfoEntry::Dump(SymbolFileDWARF *dwarf2Data,
// display of attributes is done (disassemble location lists, show enumeration
// values for attributes, etc).
void DWARFDebugInfoEntry::DumpAttribute(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const DWARFDataExtractor &debug_info_data, lldb::offset_t *offset_ptr,
- Stream &s, dw_attr_t attr, DWARFFormValue &form_value) {
+ const DWARFUnit *cu, const DWARFDataExtractor &debug_info_data,
+ lldb::offset_t *offset_ptr, Stream &s, dw_attr_t attr,
+ DWARFFormValue &form_value) {
bool show_form = s.GetFlags().Test(DWARFDebugInfo::eDumpFlag_ShowForm);
s.Printf(" ");
@@ -655,6 +650,8 @@ void DWARFDebugInfoEntry::DumpAttribute(
s.PutCString("( ");
+ SymbolFileDWARF *dwarf2Data = cu->GetSymbolFileDWARF();
+
// Check to see if we have any special attribute formatters
switch (attr) {
case DW_AT_stmt_list:
@@ -696,19 +693,17 @@ void DWARFDebugInfoEntry::DumpAttribute(
DWARFDIE abstract_die = form_value.Reference();
form_value.Dump(s);
// *ostrm_ptr << HEX32 << abstract_die.GetOffset() << " ( ";
- GetName(dwarf2Data, abstract_die.GetCU(), abstract_die.GetOffset(), s);
+ GetName(abstract_die.GetCU(), abstract_die.GetOffset(), s);
} break;
case DW_AT_type: {
DWARFDIE type_die = form_value.Reference();
s.PutCString(" ( ");
- AppendTypeName(dwarf2Data, type_die.GetCU(), type_die.GetOffset(), s);
+ AppendTypeName(type_die.GetCU(), type_die.GetOffset(), s);
s.PutCString(" )");
} break;
case DW_AT_ranges: {
- if (!dwarf2Data)
- break;
lldb::offset_t ranges_offset =
GetRangesOffset(dwarf2Data->DebugRanges(), form_value);
dw_addr_t base_addr = cu ? cu->GetBaseAddress() : 0;
@@ -735,7 +730,7 @@ size_t DWARFDebugInfoEntry::GetAttributes(
lldb::offset_t offset = 0;
if (cu) {
dwarf2Data = cu->GetSymbolFileDWARF();
- abbrevDecl = GetAbbreviationDeclarationPtr(dwarf2Data, cu, offset);
+ abbrevDecl = GetAbbreviationDeclarationPtr(cu, offset);
}
if (abbrevDecl) {
@@ -797,20 +792,19 @@ size_t DWARFDebugInfoEntry::GetAttributes(
// since an offset of zero is invalid for an attribute (it would be a compile
// unit header).
dw_offset_t DWARFDebugInfoEntry::GetAttributeValue(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const dw_attr_t attr, DWARFFormValue &form_value,
+ const DWARFUnit *cu, const dw_attr_t attr, DWARFFormValue &form_value,
dw_offset_t *end_attr_offset_ptr,
bool check_specification_or_abstract_origin) const {
SymbolFileDWARFDwo *dwo_symbol_file = cu->GetDwoSymbolFile();
if (dwo_symbol_file && m_tag != DW_TAG_compile_unit &&
m_tag != DW_TAG_partial_unit)
- return GetAttributeValue(dwo_symbol_file, dwo_symbol_file->GetCompileUnit(),
- attr, form_value, end_attr_offset_ptr,
+ return GetAttributeValue(dwo_symbol_file->GetCompileUnit(), attr,
+ form_value, end_attr_offset_ptr,
check_specification_or_abstract_origin);
lldb::offset_t offset;
const DWARFAbbreviationDeclaration *abbrevDecl =
- GetAbbreviationDeclarationPtr(dwarf2Data, cu, offset);
+ GetAbbreviationDeclarationPtr(cu, offset);
if (abbrevDecl) {
uint32_t attr_idx = abbrevDecl->FindAttributeIndex(attr);
@@ -835,23 +829,21 @@ dw_offset_t DWARFDebugInfoEntry::GetAttributeValue(
}
if (check_specification_or_abstract_origin) {
- if (GetAttributeValue(dwarf2Data, cu, DW_AT_specification, form_value)) {
+ if (GetAttributeValue(cu, DW_AT_specification, form_value)) {
DWARFDIE die = form_value.Reference();
if (die) {
dw_offset_t die_offset = die.GetDIE()->GetAttributeValue(
- die.GetDWARF(), die.GetCU(), attr, form_value, end_attr_offset_ptr,
- false);
+ die.GetCU(), attr, form_value, end_attr_offset_ptr, false);
if (die_offset)
return die_offset;
}
}
- if (GetAttributeValue(dwarf2Data, cu, DW_AT_abstract_origin, form_value)) {
+ if (GetAttributeValue(cu, DW_AT_abstract_origin, form_value)) {
DWARFDIE die = form_value.Reference();
if (die) {
dw_offset_t die_offset = die.GetDIE()->GetAttributeValue(
- die.GetDWARF(), die.GetCU(), attr, form_value, end_attr_offset_ptr,
- false);
+ die.GetCU(), attr, form_value, end_attr_offset_ptr, false);
if (die_offset)
return die_offset;
}
@@ -870,7 +862,7 @@ dw_offset_t DWARFDebugInfoEntry::GetAttributeValue(
return 0;
return dwo_cu_die.GetDIE()->GetAttributeValue(
- dwo_symbol_file, dwo_cu, attr, form_value, end_attr_offset_ptr,
+ dwo_cu, attr, form_value, end_attr_offset_ptr,
check_specification_or_abstract_origin);
}
@@ -881,11 +873,10 @@ dw_offset_t DWARFDebugInfoEntry::GetAttributeValue(
// be available as long as the SymbolFileDWARF is still around and it's content
// doesn't change.
const char *DWARFDebugInfoEntry::GetAttributeValueAsString(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const dw_attr_t attr, const char *fail_value,
+ const DWARFUnit *cu, const dw_attr_t attr, const char *fail_value,
bool check_specification_or_abstract_origin) const {
DWARFFormValue form_value;
- if (GetAttributeValue(dwarf2Data, cu, attr, form_value, nullptr,
+ if (GetAttributeValue(cu, attr, form_value, nullptr,
check_specification_or_abstract_origin))
return form_value.AsCString();
return fail_value;
@@ -895,11 +886,10 @@ const char *DWARFDebugInfoEntry::GetAttributeValueAsString(
//
// Get the value of an attribute as unsigned and return it.
uint64_t DWARFDebugInfoEntry::GetAttributeValueAsUnsigned(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const dw_attr_t attr, uint64_t fail_value,
+ const DWARFUnit *cu, const dw_attr_t attr, uint64_t fail_value,
bool check_specification_or_abstract_origin) const {
DWARFFormValue form_value;
- if (GetAttributeValue(dwarf2Data, cu, attr, form_value, nullptr,
+ if (GetAttributeValue(cu, attr, form_value, nullptr,
check_specification_or_abstract_origin))
return form_value.Unsigned();
return fail_value;
@@ -910,21 +900,20 @@ uint64_t DWARFDebugInfoEntry::GetAttributeValueAsUnsigned(
// Get the value of an attribute as reference and fix up and compile unit
// relative offsets as needed.
DWARFDIE DWARFDebugInfoEntry::GetAttributeValueAsReference(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu, const dw_attr_t attr,
+ const DWARFUnit *cu, const dw_attr_t attr,
bool check_specification_or_abstract_origin) const {
DWARFFormValue form_value;
- if (GetAttributeValue(dwarf2Data, cu, attr, form_value, nullptr,
+ if (GetAttributeValue(cu, attr, form_value, nullptr,
check_specification_or_abstract_origin))
return form_value.Reference();
return {};
}
uint64_t DWARFDebugInfoEntry::GetAttributeValueAsAddress(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const dw_attr_t attr, uint64_t fail_value,
+ const DWARFUnit *cu, const dw_attr_t attr, uint64_t fail_value,
bool check_specification_or_abstract_origin) const {
DWARFFormValue form_value;
- if (GetAttributeValue(dwarf2Data, cu, attr, form_value, nullptr,
+ if (GetAttributeValue(cu, attr, form_value, nullptr,
check_specification_or_abstract_origin))
return form_value.Address();
return fail_value;
@@ -937,10 +926,10 @@ uint64_t DWARFDebugInfoEntry::GetAttributeValueAsAddress(
//
// Returns the hi_pc or fail_value.
dw_addr_t DWARFDebugInfoEntry::GetAttributeHighPC(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu, dw_addr_t lo_pc,
- uint64_t fail_value, bool check_specification_or_abstract_origin) const {
+ const DWARFUnit *cu, dw_addr_t lo_pc, uint64_t fail_value,
+ bool check_specification_or_abstract_origin) const {
DWARFFormValue form_value;
- if (GetAttributeValue(dwarf2Data, cu, DW_AT_high_pc, form_value, nullptr,
+ if (GetAttributeValue(cu, DW_AT_high_pc, form_value, nullptr,
check_specification_or_abstract_origin)) {
dw_form_t form = form_value.Form();
if (form == DW_FORM_addr || form == DW_FORM_addrx ||
@@ -960,13 +949,12 @@ dw_addr_t DWARFDebugInfoEntry::GetAttributeHighPC(
//
// Returns true or sets lo_pc and hi_pc to fail_value.
bool DWARFDebugInfoEntry::GetAttributeAddressRange(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu, dw_addr_t &lo_pc,
- dw_addr_t &hi_pc, uint64_t fail_value,
- bool check_specification_or_abstract_origin) const {
- lo_pc = GetAttributeValueAsAddress(dwarf2Data, cu, DW_AT_low_pc, fail_value,
+ const DWARFUnit *cu, dw_addr_t &lo_pc, dw_addr_t &hi_pc,
+ uint64_t fail_value, bool check_specification_or_abstract_origin) const {
+ lo_pc = GetAttributeValueAsAddress(cu, DW_AT_low_pc, fail_value,
check_specification_or_abstract_origin);
if (lo_pc != fail_value) {
- hi_pc = GetAttributeHighPC(dwarf2Data, cu, lo_pc, fail_value,
+ hi_pc = GetAttributeHighPC(cu, lo_pc, fail_value,
check_specification_or_abstract_origin);
if (hi_pc != fail_value)
return true;
@@ -977,21 +965,21 @@ bool DWARFDebugInfoEntry::GetAttributeAddressRange(
}
size_t DWARFDebugInfoEntry::GetAttributeAddressRanges(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- DWARFRangeList &ranges, bool check_hi_lo_pc,
+ const DWARFUnit *cu, DWARFRangeList &ranges, bool check_hi_lo_pc,
bool check_specification_or_abstract_origin) const {
ranges.Clear();
+ SymbolFileDWARF *dwarf2Data = cu->GetSymbolFileDWARF();
+
DWARFFormValue form_value;
- if (GetAttributeValue(dwarf2Data, cu, DW_AT_ranges, form_value)) {
+ if (GetAttributeValue(cu, DW_AT_ranges, form_value)) {
if (DWARFDebugRangesBase *debug_ranges = dwarf2Data->DebugRanges())
debug_ranges->FindRanges(cu, GetRangesOffset(debug_ranges, form_value),
ranges);
} else if (check_hi_lo_pc) {
dw_addr_t lo_pc = LLDB_INVALID_ADDRESS;
dw_addr_t hi_pc = LLDB_INVALID_ADDRESS;
- if (GetAttributeAddressRange(dwarf2Data, cu, lo_pc, hi_pc,
- LLDB_INVALID_ADDRESS,
+ if (GetAttributeAddressRange(cu, lo_pc, hi_pc, LLDB_INVALID_ADDRESS,
check_specification_or_abstract_origin)) {
if (lo_pc < hi_pc)
ranges.Append(DWARFRangeList::Entry(lo_pc, hi_pc - lo_pc));
@@ -1004,9 +992,8 @@ size_t DWARFDebugInfoEntry::GetAttributeAddressRanges(
//
// Get value of the DW_AT_name attribute and return it if one exists, else
// return NULL.
-const char *DWARFDebugInfoEntry::GetName(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu) const {
- return GetAttributeValueAsString(dwarf2Data, cu, DW_AT_name, nullptr, true);
+const char *DWARFDebugInfoEntry::GetName(const DWARFUnit *cu) const {
+ return GetAttributeValueAsString(cu, DW_AT_name, nullptr, true);
}
// GetMangledName
@@ -1014,25 +1001,22 @@ const char *DWARFDebugInfoEntry::GetName(SymbolFileDWARF *dwarf2Data,
// Get value of the DW_AT_MIPS_linkage_name attribute and return it if one
// exists, else return the value of the DW_AT_name attribute
const char *
-DWARFDebugInfoEntry::GetMangledName(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu,
+DWARFDebugInfoEntry::GetMangledName(const DWARFUnit *cu,
bool substitute_name_allowed) const {
const char *name = nullptr;
- name = GetAttributeValueAsString(dwarf2Data, cu, DW_AT_MIPS_linkage_name,
- nullptr, true);
+ name = GetAttributeValueAsString(cu, DW_AT_MIPS_linkage_name, nullptr, true);
if (name)
return name;
- name = GetAttributeValueAsString(dwarf2Data, cu, DW_AT_linkage_name, nullptr,
- true);
+ name = GetAttributeValueAsString(cu, DW_AT_linkage_name, nullptr, true);
if (name)
return name;
if (!substitute_name_allowed)
return nullptr;
- name = GetAttributeValueAsString(dwarf2Data, cu, DW_AT_name, nullptr, true);
+ name = GetAttributeValueAsString(cu, DW_AT_name, nullptr, true);
return name;
}
@@ -1040,23 +1024,20 @@ DWARFDebugInfoEntry::GetMangledName(SymbolFileDWARF *dwarf2Data,
//
// Get value the name for a DIE as it should appear for a .debug_pubnames or
// .debug_pubtypes section.
-const char *DWARFDebugInfoEntry::GetPubname(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu) const {
+const char *DWARFDebugInfoEntry::GetPubname(const DWARFUnit *cu) const {
const char *name = nullptr;
- if (!dwarf2Data)
+ if (!cu)
return name;
- name = GetAttributeValueAsString(dwarf2Data, cu, DW_AT_MIPS_linkage_name,
- nullptr, true);
+ name = GetAttributeValueAsString(cu, DW_AT_MIPS_linkage_name, nullptr, true);
if (name)
return name;
- name = GetAttributeValueAsString(dwarf2Data, cu, DW_AT_linkage_name, nullptr,
- true);
+ name = GetAttributeValueAsString(cu, DW_AT_linkage_name, nullptr, true);
if (name)
return name;
- name = GetAttributeValueAsString(dwarf2Data, cu, DW_AT_name, nullptr, true);
+ name = GetAttributeValueAsString(cu, DW_AT_name, nullptr, true);
return name;
}
@@ -1066,10 +1047,9 @@ const char *DWARFDebugInfoEntry::GetPubname(SymbolFileDWARF *dwarf2Data,
// exists at offset "die_offset" and place that value into the supplied stream
// object. If the DIE is a NULL object "NULL" is placed into the stream, and if
// no DW_AT_name attribute exists for the DIE then nothing is printed.
-bool DWARFDebugInfoEntry::GetName(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu,
+bool DWARFDebugInfoEntry::GetName(const DWARFUnit *cu,
const dw_offset_t die_offset, Stream &s) {
- if (dwarf2Data == NULL) {
+ if (cu == NULL) {
s.PutCString("NULL");
return false;
}
@@ -1081,8 +1061,8 @@ bool DWARFDebugInfoEntry::GetName(SymbolFileDWARF *dwarf2Data,
s.PutCString("NULL");
return true;
} else {
- const char *name = die.GetAttributeValueAsString(
- dwarf2Data, cu, DW_AT_name, nullptr, true);
+ const char *name =
+ die.GetAttributeValueAsString(cu, DW_AT_name, nullptr, true);
if (name) {
s.PutCString(name);
return true;
@@ -1097,11 +1077,10 @@ bool DWARFDebugInfoEntry::GetName(SymbolFileDWARF *dwarf2Data,
// Follows the type name definition down through all needed tags to end up with
// a fully qualified type name and dump the results to the supplied stream.
// This is used to show the name of types given a type identifier.
-bool DWARFDebugInfoEntry::AppendTypeName(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu,
+bool DWARFDebugInfoEntry::AppendTypeName(const DWARFUnit *cu,
const dw_offset_t die_offset,
Stream &s) {
- if (dwarf2Data == NULL) {
+ if (cu == NULL) {
s.PutCString("NULL");
return false;
}
@@ -1113,13 +1092,13 @@ bool DWARFDebugInfoEntry::AppendTypeName(SymbolFileDWARF *dwarf2Data,
s.PutCString("NULL");
return true;
} else {
- const char *name = die.GetPubname(dwarf2Data, cu);
+ const char *name = die.GetPubname(cu);
if (name)
s.PutCString(name);
else {
bool result = true;
const DWARFAbbreviationDeclaration *abbrevDecl =
- die.GetAbbreviationDeclarationPtr(dwarf2Data, cu, offset);
+ die.GetAbbreviationDeclarationPtr(cu, offset);
if (abbrevDecl == NULL)
return false;
@@ -1194,10 +1173,9 @@ bool DWARFDebugInfoEntry::AppendTypeName(SymbolFileDWARF *dwarf2Data,
// Follow the DW_AT_type if possible
DWARFFormValue form_value;
- if (die.GetAttributeValue(dwarf2Data, cu, DW_AT_type, form_value)) {
+ if (die.GetAttributeValue(cu, DW_AT_type, form_value)) {
DWARFDIE next_die = form_value.Reference();
- result = AppendTypeName(dwarf2Data, next_die.GetCU(),
- next_die.GetOffset(), s);
+ result = AppendTypeName(next_die.GetCU(), next_die.GetOffset(), s);
}
switch (abbrevDecl->Tag()) {
@@ -1225,14 +1203,12 @@ bool DWARFDebugInfoEntry::AppendTypeName(SymbolFileDWARF *dwarf2Data,
// BuildAddressRangeTable
void DWARFDebugInfoEntry::BuildAddressRangeTable(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- DWARFDebugAranges *debug_aranges) const {
+ const DWARFUnit *cu, DWARFDebugAranges *debug_aranges) const {
if (m_tag) {
if (m_tag == DW_TAG_subprogram) {
dw_addr_t lo_pc = LLDB_INVALID_ADDRESS;
dw_addr_t hi_pc = LLDB_INVALID_ADDRESS;
- if (GetAttributeAddressRange(dwarf2Data, cu, lo_pc, hi_pc,
- LLDB_INVALID_ADDRESS)) {
+ if (GetAttributeAddressRange(cu, lo_pc, hi_pc, LLDB_INVALID_ADDRESS)) {
/// printf("BuildAddressRangeTable() 0x%8.8x: %30s: [0x%8.8x -
/// 0x%8.8x)\n", m_offset, DW_TAG_value_to_name(tag), lo_pc, hi_pc);
debug_aranges->AppendRange(cu->GetOffset(), lo_pc, hi_pc);
@@ -1241,7 +1217,7 @@ void DWARFDebugInfoEntry::BuildAddressRangeTable(
const DWARFDebugInfoEntry *child = GetFirstChild();
while (child) {
- child->BuildAddressRangeTable(dwarf2Data, cu, debug_aranges);
+ child->BuildAddressRangeTable(cu, debug_aranges);
child = child->GetSibling();
}
}
@@ -1254,14 +1230,12 @@ void DWARFDebugInfoEntry::BuildAddressRangeTable(
// of the compile unit offset (which is the way the standard .debug_aranges
// section does it).
void DWARFDebugInfoEntry::BuildFunctionAddressRangeTable(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- DWARFDebugAranges *debug_aranges) const {
+ const DWARFUnit *cu, DWARFDebugAranges *debug_aranges) const {
if (m_tag) {
if (m_tag == DW_TAG_subprogram) {
dw_addr_t lo_pc = LLDB_INVALID_ADDRESS;
dw_addr_t hi_pc = LLDB_INVALID_ADDRESS;
- if (GetAttributeAddressRange(dwarf2Data, cu, lo_pc, hi_pc,
- LLDB_INVALID_ADDRESS)) {
+ if (GetAttributeAddressRange(cu, lo_pc, hi_pc, LLDB_INVALID_ADDRESS)) {
// printf("BuildAddressRangeTable() 0x%8.8x: [0x%16.16" PRIx64 " -
// 0x%16.16" PRIx64 ")\n", m_offset, lo_pc, hi_pc); // DEBUG ONLY
debug_aranges->AppendRange(GetOffset(), lo_pc, hi_pc);
@@ -1270,7 +1244,7 @@ void DWARFDebugInfoEntry::BuildFunctionAddressRangeTable(
const DWARFDebugInfoEntry *child = GetFirstChild();
while (child) {
- child->BuildFunctionAddressRangeTable(dwarf2Data, cu, debug_aranges);
+ child->BuildFunctionAddressRangeTable(cu, debug_aranges);
child = child->GetSibling();
}
}
@@ -1284,43 +1258,38 @@ DWARFDebugInfoEntry::GetDeclContextDIEs(DWARFUnit *cu) const {
}
void DWARFDebugInfoEntry::GetDWARFDeclContext(
- SymbolFileDWARF *dwarf2Data, DWARFUnit *cu,
- DWARFDeclContext &dwarf_decl_ctx) const {
+ DWARFUnit *cu, DWARFDeclContext &dwarf_decl_ctx) const {
const dw_tag_t tag = Tag();
if (tag != DW_TAG_compile_unit && tag != DW_TAG_partial_unit) {
- dwarf_decl_ctx.AppendDeclContext(tag, GetName(dwarf2Data, cu));
- DWARFDIE parent_decl_ctx_die = GetParentDeclContextDIE(dwarf2Data, cu);
+ dwarf_decl_ctx.AppendDeclContext(tag, GetName(cu));
+ DWARFDIE parent_decl_ctx_die = GetParentDeclContextDIE(cu);
if (parent_decl_ctx_die && parent_decl_ctx_die.GetDIE() != this) {
if (parent_decl_ctx_die.Tag() != DW_TAG_compile_unit &&
parent_decl_ctx_die.Tag() != DW_TAG_partial_unit)
parent_decl_ctx_die.GetDIE()->GetDWARFDeclContext(
- parent_decl_ctx_die.GetDWARF(), parent_decl_ctx_die.GetCU(),
- dwarf_decl_ctx);
+ parent_decl_ctx_die.GetCU(), dwarf_decl_ctx);
}
}
}
bool DWARFDebugInfoEntry::MatchesDWARFDeclContext(
- SymbolFileDWARF *dwarf2Data, DWARFUnit *cu,
- const DWARFDeclContext &dwarf_decl_ctx) const {
+ DWARFUnit *cu, const DWARFDeclContext &dwarf_decl_ctx) const {
DWARFDeclContext this_dwarf_decl_ctx;
- GetDWARFDeclContext(dwarf2Data, cu, this_dwarf_decl_ctx);
+ GetDWARFDeclContext(cu, this_dwarf_decl_ctx);
return this_dwarf_decl_ctx == dwarf_decl_ctx;
}
DWARFDIE
-DWARFDebugInfoEntry::GetParentDeclContextDIE(SymbolFileDWARF *dwarf2Data,
- DWARFUnit *cu) const {
+DWARFDebugInfoEntry::GetParentDeclContextDIE(DWARFUnit *cu) const {
DWARFAttributes attributes;
GetAttributes(cu, DWARFFormValue::FixedFormSizes(), attributes);
- return GetParentDeclContextDIE(dwarf2Data, cu, attributes);
+ return GetParentDeclContextDIE(cu, attributes);
}
DWARFDIE
DWARFDebugInfoEntry::GetParentDeclContextDIE(
- SymbolFileDWARF *dwarf2Data, DWARFUnit *cu,
- const DWARFAttributes &attributes) const {
+ DWARFUnit *cu, const DWARFAttributes &attributes) const {
DWARFDIE die(cu, const_cast<DWARFDebugInfoEntry *>(this));
while (die) {
@@ -1361,22 +1330,22 @@ DWARFDebugInfoEntry::GetParentDeclContextDIE(
return DWARFDIE();
}
-const char *DWARFDebugInfoEntry::GetQualifiedName(SymbolFileDWARF *dwarf2Data,
- DWARFUnit *cu,
+const char *DWARFDebugInfoEntry::GetQualifiedName(DWARFUnit *cu,
std::string &storage) const {
DWARFAttributes attributes;
GetAttributes(cu, DWARFFormValue::FixedFormSizes(), attributes);
- return GetQualifiedName(dwarf2Data, cu, attributes, storage);
+ return GetQualifiedName(cu, attributes, storage);
}
-const char *DWARFDebugInfoEntry::GetQualifiedName(
- SymbolFileDWARF *dwarf2Data, DWARFUnit *cu,
- const DWARFAttributes &attributes, std::string &storage) const {
+const char *
+DWARFDebugInfoEntry::GetQualifiedName(DWARFUnit *cu,
+ const DWARFAttributes &attributes,
+ std::string &storage) const {
- const char *name = GetName(dwarf2Data, cu);
+ const char *name = GetName(cu);
if (name) {
- DWARFDIE parent_decl_ctx_die = GetParentDeclContextDIE(dwarf2Data, cu);
+ DWARFDIE parent_decl_ctx_die = GetParentDeclContextDIE(cu);
storage.clear();
// TODO: change this to get the correct decl context parent....
while (parent_decl_ctx_die) {
@@ -1423,7 +1392,6 @@ const char *DWARFDebugInfoEntry::GetQualifiedName(
// LookupAddress
bool DWARFDebugInfoEntry::LookupAddress(const dw_addr_t address,
- SymbolFileDWARF *dwarf2Data,
const DWARFUnit *cu,
DWARFDebugInfoEntry **function_die,
DWARFDebugInfoEntry **block_die) {
@@ -1567,11 +1535,10 @@ bool DWARFDebugInfoEntry::LookupAddress(const dw_addr_t address,
}
if (match_addr_range) {
- dw_addr_t lo_pc = GetAttributeValueAsAddress(dwarf2Data, cu, DW_AT_low_pc,
- LLDB_INVALID_ADDRESS);
+ dw_addr_t lo_pc =
+ GetAttributeValueAsAddress(cu, DW_AT_low_pc, LLDB_INVALID_ADDRESS);
if (lo_pc != LLDB_INVALID_ADDRESS) {
- dw_addr_t hi_pc =
- GetAttributeHighPC(dwarf2Data, cu, lo_pc, LLDB_INVALID_ADDRESS);
+ dw_addr_t hi_pc = GetAttributeHighPC(cu, lo_pc, LLDB_INVALID_ADDRESS);
if (hi_pc != LLDB_INVALID_ADDRESS) {
// printf("\n0x%8.8x: %30s: address = 0x%8.8x [0x%8.8x - 0x%8.8x) ",
// m_offset, DW_TAG_value_to_name(tag), address, lo_pc, hi_pc);
@@ -1613,8 +1580,9 @@ bool DWARFDebugInfoEntry::LookupAddress(const dw_addr_t address,
}
} else {
DWARFFormValue form_value;
- if (GetAttributeValue(dwarf2Data, cu, DW_AT_ranges, form_value)) {
+ if (GetAttributeValue(cu, DW_AT_ranges, form_value)) {
DWARFRangeList ranges;
+ SymbolFileDWARF *dwarf2Data = cu->GetSymbolFileDWARF();
DWARFDebugRangesBase *debug_ranges = dwarf2Data->DebugRanges();
debug_ranges->FindRanges(
cu, GetRangesOffset(debug_ranges, form_value), ranges);
@@ -1657,8 +1625,7 @@ bool DWARFDebugInfoEntry::LookupAddress(const dw_addr_t address,
// printf("checking children\n");
DWARFDebugInfoEntry *child = GetFirstChild();
while (child) {
- if (child->LookupAddress(address, dwarf2Data, cu, function_die,
- block_die))
+ if (child->LookupAddress(address, cu, function_die, block_die))
return true;
child = child->GetSibling();
}
@@ -1669,9 +1636,8 @@ bool DWARFDebugInfoEntry::LookupAddress(const dw_addr_t address,
const DWARFAbbreviationDeclaration *
DWARFDebugInfoEntry::GetAbbreviationDeclarationPtr(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- lldb::offset_t &offset) const {
- if (dwarf2Data) {
+ const DWARFUnit *cu, lldb::offset_t &offset) const {
+ if (cu) {
offset = GetOffset();
const DWARFAbbreviationDeclarationSet *abbrev_set = cu->GetAbbreviations();
@@ -1687,6 +1653,8 @@ DWARFDebugInfoEntry::GetAbbreviationDeclarationPtr(
if (abbrev_decl->Code() == abbrev_code)
return abbrev_decl;
+ SymbolFileDWARF *dwarf2Data = cu->GetSymbolFileDWARF();
+
dwarf2Data->GetObjectFile()->GetModule()->ReportErrorIfModifyDetected(
"0x%8.8x: the DWARF debug information has been modified (abbrev "
"code was %u, and is now %u)",
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
index b0815e00b63..c0a8fa6ea8f 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
@@ -61,12 +61,10 @@ public:
bool operator==(const DWARFDebugInfoEntry &rhs) const;
bool operator!=(const DWARFDebugInfoEntry &rhs) const;
- void BuildAddressRangeTable(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu,
+ void BuildAddressRangeTable(const DWARFUnit *cu,
DWARFDebugAranges *debug_aranges) const;
- void BuildFunctionAddressRangeTable(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu,
+ void BuildFunctionAddressRangeTable(const DWARFUnit *cu,
DWARFDebugAranges *debug_aranges) const;
bool FastExtract(const lldb_private::DWARFDataExtractor &debug_info_data,
@@ -76,8 +74,7 @@ public:
bool Extract(const DWARFUnit *cu, lldb::offset_t *offset_ptr);
- bool LookupAddress(const dw_addr_t address, SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu,
+ bool LookupAddress(const dw_addr_t address, const DWARFUnit *cu,
DWARFDebugInfoEntry **function_die,
DWARFDebugInfoEntry **block_die);
@@ -88,95 +85,79 @@ public:
const; // "curr_depth" for internal use only, don't set this yourself!!!
dw_offset_t
- GetAttributeValue(SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const dw_attr_t attr, DWARFFormValue &formValue,
+ GetAttributeValue(const DWARFUnit *cu, const dw_attr_t attr,
+ DWARFFormValue &formValue,
dw_offset_t *end_attr_offset_ptr = nullptr,
bool check_specification_or_abstract_origin = false) const;
const char *GetAttributeValueAsString(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const dw_attr_t attr, const char *fail_value,
+ const DWARFUnit *cu, const dw_attr_t attr, const char *fail_value,
bool check_specification_or_abstract_origin = false) const;
uint64_t GetAttributeValueAsUnsigned(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const dw_attr_t attr, uint64_t fail_value,
+ const DWARFUnit *cu, const dw_attr_t attr, uint64_t fail_value,
bool check_specification_or_abstract_origin = false) const;
DWARFDIE GetAttributeValueAsReference(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu, const dw_attr_t attr,
+ const DWARFUnit *cu, const dw_attr_t attr,
bool check_specification_or_abstract_origin = false) const;
uint64_t GetAttributeValueAsAddress(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const dw_attr_t attr, uint64_t fail_value,
+ const DWARFUnit *cu, const dw_attr_t attr, uint64_t fail_value,
bool check_specification_or_abstract_origin = false) const;
dw_addr_t
- GetAttributeHighPC(SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- dw_addr_t lo_pc, uint64_t fail_value,
+ GetAttributeHighPC(const DWARFUnit *cu, dw_addr_t lo_pc, uint64_t fail_value,
bool check_specification_or_abstract_origin = false) const;
bool GetAttributeAddressRange(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu, dw_addr_t &lo_pc,
- dw_addr_t &hi_pc, uint64_t fail_value,
+ const DWARFUnit *cu, dw_addr_t &lo_pc, dw_addr_t &hi_pc,
+ uint64_t fail_value,
bool check_specification_or_abstract_origin = false) const;
size_t GetAttributeAddressRanges(
- SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- DWARFRangeList &ranges, bool check_hi_lo_pc,
+ const DWARFUnit *cu, DWARFRangeList &ranges, bool check_hi_lo_pc,
bool check_specification_or_abstract_origin = false) const;
- const char *GetName(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu) const;
+ const char *GetName(const DWARFUnit *cu) const;
- const char *GetMangledName(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu,
+ const char *GetMangledName(const DWARFUnit *cu,
bool substitute_name_allowed = true) const;
- const char *GetPubname(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu) const;
+ const char *GetPubname(const DWARFUnit *cu) const;
- static bool GetName(SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const dw_offset_t die_offset, lldb_private::Stream &s);
+ static bool GetName(const DWARFUnit *cu, const dw_offset_t die_offset,
+ lldb_private::Stream &s);
- static bool AppendTypeName(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu,
- const dw_offset_t die_offset,
+ static bool AppendTypeName(const DWARFUnit *cu, const dw_offset_t die_offset,
lldb_private::Stream &s);
- const char *GetQualifiedName(SymbolFileDWARF *dwarf2Data,
- DWARFUnit *cu,
- std::string &storage) const;
+ const char *GetQualifiedName(DWARFUnit *cu, std::string &storage) const;
- const char *GetQualifiedName(SymbolFileDWARF *dwarf2Data,
- DWARFUnit *cu,
- const DWARFAttributes &attributes,
+ const char *GetQualifiedName(DWARFUnit *cu, const DWARFAttributes &attributes,
std::string &storage) const;
static bool OffsetLessThan(const DWARFDebugInfoEntry &a,
const DWARFDebugInfoEntry &b);
- void Dump(SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- lldb_private::Stream &s, uint32_t recurse_depth) const;
+ void Dump(const DWARFUnit *cu, lldb_private::Stream &s,
+ uint32_t recurse_depth) const;
static void
- DumpAttribute(SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
+ DumpAttribute(const DWARFUnit *cu,
const lldb_private::DWARFDataExtractor &debug_info_data,
lldb::offset_t *offset_ptr, lldb_private::Stream &s,
dw_attr_t attr, DWARFFormValue &form_value);
bool
- GetDIENamesAndRanges(SymbolFileDWARF *dwarf2Data, const DWARFUnit *cu,
- const char *&name, const char *&mangled,
- DWARFRangeList &rangeList, int &decl_file,
- int &decl_line, int &decl_column, int &call_file,
- int &call_line, int &call_column,
+ GetDIENamesAndRanges(const DWARFUnit *cu, const char *&name,
+ const char *&mangled, DWARFRangeList &rangeList,
+ int &decl_file, int &decl_line, int &decl_column,
+ int &call_file, int &call_line, int &call_column,
lldb_private::DWARFExpression *frame_base = NULL) const;
const DWARFAbbreviationDeclaration *
- GetAbbreviationDeclarationPtr(SymbolFileDWARF *dwarf2Data,
- const DWARFUnit *cu,
+ GetAbbreviationDeclarationPtr(const DWARFUnit *cu,
lldb::offset_t &offset) const;
dw_tag_t Tag() const { return m_tag; }
@@ -217,17 +198,14 @@ public:
std::vector<DWARFDIE> GetDeclContextDIEs(DWARFUnit *cu) const;
- void GetDWARFDeclContext(SymbolFileDWARF *dwarf2Data, DWARFUnit *cu,
+ void GetDWARFDeclContext(DWARFUnit *cu,
DWARFDeclContext &dwarf_decl_ctx) const;
- bool MatchesDWARFDeclContext(SymbolFileDWARF *dwarf2Data,
- DWARFUnit *cu,
+ bool MatchesDWARFDeclContext(DWARFUnit *cu,
const DWARFDeclContext &dwarf_decl_ctx) const;
- DWARFDIE GetParentDeclContextDIE(SymbolFileDWARF *dwarf2Data,
- DWARFUnit *cu) const;
- DWARFDIE GetParentDeclContextDIE(SymbolFileDWARF *dwarf2Data,
- DWARFUnit *cu,
+ DWARFDIE GetParentDeclContextDIE(DWARFUnit *cu) const;
+ DWARFDIE GetParentDeclContextDIE(DWARFUnit *cu,
const DWARFAttributes &attributes) const;
void SetParent(DWARFDebugInfoEntry *parent) {
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
index e40b3cbd42c..48e2bae68bb 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
@@ -279,23 +279,22 @@ static void SetDwoStrOffsetsBase(DWARFUnit *dwo_cu) {
// m_die_array_mutex must be already held as read/write.
void DWARFUnit::AddUnitDIE(const DWARFDebugInfoEntry &cu_die) {
dw_addr_t addr_base = cu_die.GetAttributeValueAsUnsigned(
- m_dwarf, this, DW_AT_addr_base, LLDB_INVALID_ADDRESS);
+ this, DW_AT_addr_base, LLDB_INVALID_ADDRESS);
if (addr_base != LLDB_INVALID_ADDRESS)
SetAddrBase(addr_base);
dw_addr_t ranges_base = cu_die.GetAttributeValueAsUnsigned(
- m_dwarf, this, DW_AT_rnglists_base, LLDB_INVALID_ADDRESS);
+ this, DW_AT_rnglists_base, LLDB_INVALID_ADDRESS);
if (ranges_base != LLDB_INVALID_ADDRESS)
SetRangesBase(ranges_base);
- SetStrOffsetsBase(cu_die.GetAttributeValueAsUnsigned(
- m_dwarf, this, DW_AT_str_offsets_base, 0));
+ SetStrOffsetsBase(
+ cu_die.GetAttributeValueAsUnsigned(this, DW_AT_str_offsets_base, 0));
- uint64_t base_addr = cu_die.GetAttributeValueAsAddress(
- m_dwarf, this, DW_AT_low_pc, LLDB_INVALID_ADDRESS);
+ uint64_t base_addr = cu_die.GetAttributeValueAsAddress(this, DW_AT_low_pc,
+ LLDB_INVALID_ADDRESS);
if (base_addr == LLDB_INVALID_ADDRESS)
- base_addr = cu_die.GetAttributeValueAsAddress(
- m_dwarf, this, DW_AT_entry_pc, 0);
+ base_addr = cu_die.GetAttributeValueAsAddress(this, DW_AT_entry_pc, 0);
SetBaseAddress(base_addr);
std::unique_ptr<SymbolFileDWARFDwo> dwo_symbol_file =
@@ -312,7 +311,7 @@ void DWARFUnit::AddUnitDIE(const DWARFDebugInfoEntry &cu_die) {
return; // Can't fetch the compile unit DIE from the dwo file.
uint64_t main_dwo_id =
- cu_die.GetAttributeValueAsUnsigned(m_dwarf, this, DW_AT_GNU_dwo_id, 0);
+ cu_die.GetAttributeValueAsUnsigned(this, DW_AT_GNU_dwo_id, 0);
uint64_t sub_dwo_id =
dwo_cu_die.GetAttributeValueAsUnsigned(DW_AT_GNU_dwo_id, 0);
if (main_dwo_id != sub_dwo_id)
@@ -328,13 +327,13 @@ void DWARFUnit::AddUnitDIE(const DWARFDebugInfoEntry &cu_die) {
// DW_AT_* attributes standardized in DWARF v5 are also applicable to the main
// unit in contrast.
if (addr_base == LLDB_INVALID_ADDRESS)
- addr_base = cu_die.GetAttributeValueAsUnsigned(m_dwarf, this,
- DW_AT_GNU_addr_base, 0);
+ addr_base =
+ cu_die.GetAttributeValueAsUnsigned(this, DW_AT_GNU_addr_base, 0);
dwo_cu->SetAddrBase(addr_base);
if (ranges_base == LLDB_INVALID_ADDRESS)
- ranges_base = cu_die.GetAttributeValueAsUnsigned(m_dwarf, this,
- DW_AT_GNU_ranges_base, 0);
+ ranges_base =
+ cu_die.GetAttributeValueAsUnsigned(this, DW_AT_GNU_ranges_base, 0);
dwo_cu->SetRangesBase(ranges_base);
dwo_cu->SetBaseObjOffset(GetOffset());
@@ -406,8 +405,7 @@ void DWARFUnit::ClearDIEsRWLocked() {
m_dwo_symbol_file->GetCompileUnit()->ClearDIEsRWLocked();
}
-void DWARFUnit::BuildAddressRangeTable(SymbolFileDWARF *dwarf,
- DWARFDebugAranges *debug_aranges) {
+void DWARFUnit::BuildAddressRangeTable(DWARFDebugAranges *debug_aranges) {
// This function is usually called if there in no .debug_aranges section in
// order to produce a compile unit level set of address ranges that is
// accurate.
@@ -421,7 +419,7 @@ void DWARFUnit::BuildAddressRangeTable(SymbolFileDWARF *dwarf,
if (die) {
DWARFRangeList ranges;
const size_t num_ranges =
- die->GetAttributeAddressRanges(dwarf, this, ranges, false);
+ die->GetAttributeAddressRanges(this, ranges, false);
if (num_ranges > 0) {
// This compile unit has DW_AT_ranges, assume this is correct if it is
// present since clang no longer makes .debug_aranges by default and it
@@ -445,13 +443,13 @@ void DWARFUnit::BuildAddressRangeTable(SymbolFileDWARF *dwarf,
die = DIEPtr();
if (die)
- die->BuildAddressRangeTable(dwarf, this, debug_aranges);
+ die->BuildAddressRangeTable(this, debug_aranges);
if (debug_aranges->GetNumRanges() == num_debug_aranges) {
// We got nothing from the functions, maybe we have a line tables only
// situation. Check the line tables and build the arange table from this.
SymbolContext sc;
- sc.comp_unit = dwarf->GetCompUnitForDWARFCompUnit(this);
+ sc.comp_unit = m_dwarf->GetCompUnitForDWARFCompUnit(this);
if (sc.comp_unit) {
SymbolFileDWARFDebugMap *debug_map_sym_file =
m_dwarf->GetDebugMapSymfile();
@@ -471,7 +469,7 @@ void DWARFUnit::BuildAddressRangeTable(SymbolFileDWARF *dwarf,
}
}
} else
- debug_map_sym_file->AddOSOARanges(dwarf, debug_aranges);
+ debug_map_sym_file->AddOSOARanges(m_dwarf, debug_aranges);
}
}
@@ -479,7 +477,7 @@ void DWARFUnit::BuildAddressRangeTable(SymbolFileDWARF *dwarf,
// We got nothing from the functions, maybe we have a line tables only
// situation. Check the line tables and build the arange table from this.
SymbolContext sc;
- sc.comp_unit = dwarf->GetCompUnitForDWARFCompUnit(this);
+ sc.comp_unit = m_dwarf->GetCompUnitForDWARFCompUnit(this);
if (sc.comp_unit) {
LineTable *line_table = sc.comp_unit->GetLineTable();
@@ -597,7 +595,7 @@ void DWARFUnit::ParseProducerInfo() {
if (die) {
const char *producer_cstr =
- die->GetAttributeValueAsString(m_dwarf, this, DW_AT_producer, NULL);
+ die->GetAttributeValueAsString(this, DW_AT_producer, NULL);
if (producer_cstr) {
RegularExpression llvm_gcc_regex(
llvm::StringRef("^4\\.[012]\\.[01] \\(Based on Apple "
@@ -674,7 +672,7 @@ LanguageType DWARFUnit::GetLanguageType() {
const DWARFDebugInfoEntry *die = GetUnitDIEPtrOnly();
if (die)
m_language_type = LanguageTypeFromDWARF(
- die->GetAttributeValueAsUnsigned(m_dwarf, this, DW_AT_language, 0));
+ die->GetAttributeValueAsUnsigned(this, DW_AT_language, 0));
return m_language_type;
}
@@ -683,8 +681,8 @@ bool DWARFUnit::GetIsOptimized() {
const DWARFDebugInfoEntry *die = GetUnitDIEPtrOnly();
if (die) {
m_is_optimized = eLazyBoolNo;
- if (die->GetAttributeValueAsUnsigned(m_dwarf, this, DW_AT_APPLE_optimized,
- 0) == 1) {
+ if (die->GetAttributeValueAsUnsigned(this, DW_AT_APPLE_optimized, 0) ==
+ 1) {
m_is_optimized = eLazyBoolYes;
}
}
@@ -748,7 +746,7 @@ void DWARFUnit::ComputeCompDirAndGuessPathStyle() {
return;
llvm::StringRef comp_dir = removeHostnameFromPathname(
- die->GetAttributeValueAsString(m_dwarf, this, DW_AT_comp_dir, NULL));
+ die->GetAttributeValueAsString(this, DW_AT_comp_dir, NULL));
if (!comp_dir.empty()) {
FileSpec::Style comp_dir_style =
FileSpec::GuessPathStyle(comp_dir).getValueOr(FileSpec::Style::native);
@@ -756,8 +754,7 @@ void DWARFUnit::ComputeCompDirAndGuessPathStyle() {
} else {
// Try to detect the style based on the DW_AT_name attribute, but just store
// the detected style in the m_comp_dir field.
- const char *name =
- die->GetAttributeValueAsString(m_dwarf, this, DW_AT_name, NULL);
+ const char *name = die->GetAttributeValueAsString(this, DW_AT_name, NULL);
m_comp_dir = FileSpec(
"", FileSpec::GuessPathStyle(name).getValueOr(FileSpec::Style::native));
}
@@ -774,14 +771,13 @@ const DWARFDebugAranges &DWARFUnit::GetFunctionAranges() {
m_func_aranges_up.reset(new DWARFDebugAranges());
const DWARFDebugInfoEntry *die = DIEPtr();
if (die)
- die->BuildFunctionAddressRangeTable(m_dwarf, this,
- m_func_aranges_up.get());
+ die->BuildFunctionAddressRangeTable(this, m_func_aranges_up.get());
if (m_dwo_symbol_file) {
DWARFUnit *dwo_cu = m_dwo_symbol_file->GetCompileUnit();
const DWARFDebugInfoEntry *dwo_die = dwo_cu->DIEPtr();
if (dwo_die)
- dwo_die->BuildFunctionAddressRangeTable(m_dwo_symbol_file.get(), dwo_cu,
+ dwo_die->BuildFunctionAddressRangeTable(dwo_cu,
m_func_aranges_up.get());
}
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
index 944b146d898..9ba041ada85 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
@@ -143,8 +143,7 @@ public:
void SetRangesBase(dw_addr_t ranges_base);
void SetBaseObjOffset(dw_offset_t base_obj_offset);
void SetStrOffsetsBase(dw_offset_t str_offsets_base);
- void BuildAddressRangeTable(SymbolFileDWARF *dwarf,
- DWARFDebugAranges *debug_aranges);
+ void BuildAddressRangeTable(DWARFDebugAranges *debug_aranges);
lldb::ByteOrder GetByteOrder() const;
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index 66ad3ade5ff..c713e24232a 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -1485,15 +1485,15 @@ SymbolFileDWARF::GetDwoSymbolFileForCompileUnit(
if (GetDebugMapSymfile())
return nullptr;
- const char *dwo_name = cu_die.GetAttributeValueAsString(
- this, &dwarf_cu, DW_AT_GNU_dwo_name, nullptr);
+ const char *dwo_name =
+ cu_die.GetAttributeValueAsString(&dwarf_cu, DW_AT_GNU_dwo_name, nullptr);
if (!dwo_name)
return nullptr;
SymbolFileDWARFDwp *dwp_symfile = GetDwpSymbolFile();
if (dwp_symfile) {
- uint64_t dwo_id = cu_die.GetAttributeValueAsUnsigned(this, &dwarf_cu,
- DW_AT_GNU_dwo_id, 0);
+ uint64_t dwo_id =
+ cu_die.GetAttributeValueAsUnsigned(&dwarf_cu, DW_AT_GNU_dwo_id, 0);
std::unique_ptr<SymbolFileDWARFDwo> dwo_symfile =
dwp_symfile->GetSymbolFileForDwoId(&dwarf_cu, dwo_id);
if (dwo_symfile)
@@ -1503,8 +1503,8 @@ SymbolFileDWARF::GetDwoSymbolFileForCompileUnit(
FileSpec dwo_file(dwo_name);
FileSystem::Instance().Resolve(dwo_file);
if (dwo_file.IsRelative()) {
- const char *comp_dir = cu_die.GetAttributeValueAsString(
- this, &dwarf_cu, DW_AT_comp_dir, nullptr);
+ const char *comp_dir =
+ cu_die.GetAttributeValueAsString(&dwarf_cu, DW_AT_comp_dir, nullptr);
if (!comp_dir)
return nullptr;
OpenPOWER on IntegriCloud