LLDB mainline
|
#include <DWARFUnit.h>
Classes | |
class | ScopedExtractDIEs |
Public Member Functions | |
virtual | ~DWARFUnit () |
bool | IsDWOUnit () |
std::optional< uint64_t > | GetDWOId () |
Get the DWO ID from the DWARFUnitHeader for DWARF5, or from the unit DIE's DW_AT_dwo_id or DW_AT_GNU_dwo_id for DWARF4 and earlier. | |
std::optional< uint64_t > | GetHeaderDWOId () |
Get the DWO ID from the DWARFUnitHeader only. | |
void | ExtractUnitDIEIfNeeded () |
void | ExtractUnitDIENoDwoIfNeeded () |
void | ExtractDIEsIfNeeded () |
ScopedExtractDIEs | ExtractDIEsScoped () |
bool | Verify (Stream *s) const |
virtual void | Dump (Stream *s) const =0 |
const DWARFDataExtractor & | GetData () const |
Get the data that contains the DIE information for this unit. | |
uint32_t | GetHeaderByteSize () const |
Get the size in bytes of the unit header. | |
dw_offset_t | GetOffset () const |
size_t | GetLengthByteSize () const |
Get the size in bytes of the length field in the header. | |
bool | ContainsDIEOffset (dw_offset_t die_offset) const |
dw_offset_t | GetFirstDIEOffset () const |
dw_offset_t | GetNextUnitOffset () const |
size_t | GetDebugInfoSize () const |
dw_offset_t | GetLength () const |
uint16_t | GetVersion () const override |
const llvm::dwarf::FormParams & | GetFormParams () const |
const llvm::DWARFAbbreviationDeclarationSet * | GetAbbreviations () const |
dw_offset_t | GetAbbrevOffset () const |
uint8_t | GetAddressByteSize () const override |
dw_addr_t | GetAddrBase () const |
dw_addr_t | GetBaseAddress () const override |
dw_offset_t | GetLineTableOffset () |
dw_addr_t | GetRangesBase () const |
dw_addr_t | GetStrOffsetsBase () const |
void | SetAddrBase (dw_addr_t addr_base) |
void | SetLoclistsBase (dw_addr_t loclists_base) |
void | SetRangesBase (dw_addr_t ranges_base) |
void | SetStrOffsetsBase (dw_offset_t str_offsets_base) |
virtual void | BuildAddressRangeTable (DWARFDebugAranges *debug_aranges)=0 |
dw_addr_t | ReadAddressFromDebugAddrSection (uint32_t index) const override |
lldb::ByteOrder | GetByteOrder () const |
const DWARFDebugAranges & | GetFunctionAranges () |
void | SetBaseAddress (dw_addr_t base_addr) |
DWARFBaseDIE | GetUnitDIEOnly () |
DWARFDIE | DIE () |
DWARFDIE | GetDIE (dw_offset_t die_offset) |
llvm::StringRef | PeekDIEName (dw_offset_t die_offset) |
Returns the AT_Name of the DIE at die_offset, if it exists, without parsing the entire compile unit. | |
llvm::Expected< std::pair< uint64_t, bool > > | GetDIEBitSizeAndSign (uint64_t relative_die_offset) const override |
lldb::offset_t | GetVendorDWARFOpcodeSize (const DataExtractor &data, const lldb::offset_t data_offset, const uint8_t op) const override |
virtual bool | ParseVendorDWARFOpcode (uint8_t op, const DataExtractor &opcodes, lldb::offset_t &offset, RegisterContext *reg_ctx, lldb::RegisterKind reg_kind, std::vector< Value > &stack) const override |
bool | ParseDWARFLocationList (const DataExtractor &data, DWARFExpressionList &loc_list) const |
DWARFUnit & | GetNonSkeletonUnit () |
lldb_private::CompileUnit * | GetLLDBCompUnit () const |
void | SetLLDBCompUnit (lldb_private::CompileUnit *cu) |
DWARFCompileUnit * | GetSkeletonUnit () |
Get the skeleton compile unit for a DWO file. | |
bool | LinkToSkeletonUnit (DWARFUnit &skeleton_unit) |
bool | Supports_unnamed_objc_bitfields () |
SymbolFileDWARF & | GetSymbolFileDWARF () const |
DWARFProducer | GetProducer () |
llvm::VersionTuple | GetProducerVersion () |
uint64_t | GetDWARFLanguageType () |
bool | GetIsOptimized () |
const FileSpec & | GetCompilationDirectory () |
const FileSpec & | GetAbsolutePath () |
FileSpec | GetFile (size_t file_idx) |
FileSpec::Style | GetPathStyle () |
SymbolFileDWARFDwo * | GetDwoSymbolFile (bool load_all_debug_info=true) |
die_iterator_range | dies () |
DIERef::Section | GetDebugSection () const |
uint8_t | GetUnitType () const |
bool | IsTypeUnit () const |
bool | IsSkeletonUnit () const |
Note that this check only works for DWARF5+. | |
std::optional< uint64_t > | GetStringOffsetSectionItem (uint32_t index) const |
llvm::Expected< llvm::DWARFAddressRangesVector > | FindRnglistFromOffset (dw_offset_t offset) |
Return a list of address ranges resulting from a (possibly encoded) range list starting at a given offset in the appropriate ranges section. | |
llvm::Expected< llvm::DWARFAddressRangesVector > | FindRnglistFromIndex (uint32_t index) |
Return a list of address ranges retrieved from an encoded range list whose offset is found via a table lookup given an index (DWARF v5 and later). | |
llvm::Expected< uint64_t > | GetRnglistOffset (uint32_t Index) |
Return a rangelist's offset based on an index. | |
std::optional< uint64_t > | GetLoclistOffset (uint32_t Index) |
std::unique_ptr< llvm::DWARFLocationTable > | GetLocationTable (const DataExtractor &data) const |
Return the location table for parsing the given location list data. | |
DWARFDataExtractor | GetLocationData () const |
bool | HasAny (llvm::ArrayRef< dw_tag_t > tags) |
Returns true if any DIEs in the unit match any DW_TAG values in tags. | |
const Status & | GetDwoError () const |
Get the fission .dwo file specific error for this compile unit. | |
void | SetDwoError (Status &&error) |
Set the fission .dwo file specific error for this compile unit. | |
Public Member Functions inherited from lldb_private::DWARFExpression::Delegate | |
Delegate ()=default | |
virtual | ~Delegate ()=default |
virtual bool | ParseVendorDWARFOpcode (uint8_t op, const DataExtractor &opcodes, lldb::offset_t &offset, RegisterContext *reg_ctx, lldb::RegisterKind reg_kind, Stack &stack) const =0 |
Delegate (const Delegate &)=delete | |
Delegate & | operator= (const Delegate &)=delete |
Public Member Functions inherited from lldb_private::UserID | |
UserID (lldb::user_id_t uid=LLDB_INVALID_UID) | |
Construct with optional user ID. | |
~UserID ()=default | |
Destructor. | |
void | Clear () |
Clears the object state. | |
lldb::user_id_t | GetID () const |
Get accessor for the user ID. | |
void | SetID (lldb::user_id_t uid) |
Set accessor for the user ID. |
Static Public Member Functions | |
static llvm::Expected< DWARFUnitSP > | extract (SymbolFileDWARF &dwarf2Data, lldb::user_id_t uid, const DWARFDataExtractor &debug_info, DIERef::Section section, lldb::offset_t *offset_ptr) |
static uint8_t | GetAddressByteSize (const DWARFUnit *cu) |
static uint8_t | GetDefaultAddressSize () |
Protected Member Functions | |
DWARFUnit (SymbolFileDWARF &dwarf, lldb::user_id_t uid, const llvm::DWARFUnitHeader &header, const llvm::DWARFAbbreviationDeclarationSet &abbrevs, DIERef::Section section, bool is_dwo) | |
llvm::Error | ExtractHeader (SymbolFileDWARF &dwarf, const DWARFDataExtractor &data, lldb::offset_t *offset_ptr) |
const DWARFDebugInfoEntry * | GetUnitDIEPtrOnly () |
const DWARFDebugInfoEntry * | DIEPtr () |
const std::optional< llvm::DWARFDebugRnglistTable > & | GetRnglistTable () |
DWARFDataExtractor | GetRnglistData () const |
Protected Attributes | |
SymbolFileDWARF & | m_dwarf |
std::shared_ptr< DWARFUnit > | m_dwo |
llvm::DWARFUnitHeader | m_header |
const llvm::DWARFAbbreviationDeclarationSet * | m_abbrevs = nullptr |
lldb_private::CompileUnit * | m_lldb_cu = nullptr |
std::atomic< DWARFUnit * > | m_skeleton_unit = nullptr |
DWARFDebugInfoEntry::collection | m_die_array |
llvm::sys::RWMutex | m_die_array_mutex |
llvm::sys::Mutex | m_die_array_scoped_mutex |
int | m_die_array_scoped_count = 0 |
std::atomic< bool > | m_cancel_scopes |
DWARFDebugInfoEntry | m_first_die |
llvm::sys::RWMutex | m_first_die_mutex |
std::unique_ptr< DWARFDebugAranges > | m_func_aranges_up |
dw_addr_t | m_base_addr = 0 |
DWARFProducer | m_producer = eProducerInvalid |
llvm::VersionTuple | m_producer_version |
std::optional< uint64_t > | m_language_type |
LazyBool | m_is_optimized = eLazyBoolCalculate |
std::optional< FileSpec > | m_comp_dir |
std::optional< FileSpec > | m_file_spec |
std::optional< dw_addr_t > | m_addr_base |
Value of DW_AT_addr_base. | |
dw_addr_t | m_loclists_base = 0 |
Value of DW_AT_loclists_base. | |
dw_addr_t | m_ranges_base = 0 |
Value of DW_AT_rnglists_base. | |
std::optional< uint64_t > | m_gnu_addr_base |
std::optional< uint64_t > | m_gnu_ranges_base |
dw_offset_t | m_line_table_offset = DW_INVALID_OFFSET |
Value of DW_AT_stmt_list. | |
dw_offset_t | m_str_offsets_base = 0 |
std::optional< llvm::DWARFDebugRnglistTable > | m_rnglist_table |
bool | m_rnglist_table_done = false |
std::optional< llvm::DWARFListTableHeader > | m_loclist_table_header |
const DIERef::Section | m_section |
bool | m_is_dwo |
bool | m_has_parsed_non_skeleton_unit |
std::optional< uint64_t > | m_dwo_id |
Value of DW_AT_GNU_dwo_id (v4) or dwo_id from CU header (v5). | |
Status | m_dwo_error |
If we get an error when trying to load a .dwo file, save that error here. | |
Protected Attributes inherited from lldb_private::UserID | |
lldb::user_id_t | m_uid |
The user ID that uniquely identifies an object. |
Private Types | |
using | die_iterator_range |
Private Member Functions | |
void | ParseProducerInfo () |
void | ExtractDIEsRWLocked () |
void | ClearDIEsRWLocked () |
void | AddUnitDIE (const DWARFDebugInfoEntry &cu_die) |
void | SetDwoStrOffsetsBase () |
void | ComputeCompDirAndGuessPathStyle () |
void | ComputeAbsolutePath () |
DWARFUnit (const DWARFUnit &)=delete | |
const DWARFUnit & | operator= (const DWARFUnit &)=delete |
Definition at line 43 of file DWARFUnit.h.
Definition at line 44 of file DWARFUnit.h.
|
virtualdefault |
|
protected |
Definition at line 37 of file DWARFUnit.cpp.
References m_abbrevs, m_cancel_scopes, m_dwarf, m_dwo_id, m_has_parsed_non_skeleton_unit, m_header, m_is_dwo, m_section, and lldb_private::UserID::UserID().
Referenced by DWARFUnit(), ExtractUnitDIEIfNeeded(), GetAddressByteSize(), GetDIEBitSizeAndSign(), GetNonSkeletonUnit(), GetSkeletonUnit(), LinkToSkeletonUnit(), operator=(), and lldb_private::plugin::dwarf::DWARFUnit::ScopedExtractDIEs::ScopedExtractDIEs().
|
privatedelete |
References DWARFUnit().
|
private |
Definition at line 383 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::DWARFFormValue::Address(), lldb_private::plugin::dwarf::DWARFAttributes::AttributeAtIndex(), lldb_private::plugin::dwarf::DWARFAttributes::ExtractFormValueAtIndex(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAttributes(), LLDB_INVALID_ADDRESS, m_base_addr, m_dwo_id, m_gnu_addr_base, m_gnu_ranges_base, m_has_parsed_non_skeleton_unit, m_is_dwo, m_line_table_offset, SetAddrBase(), SetBaseAddress(), SetDwoStrOffsetsBase(), SetLoclistsBase(), SetRangesBase(), SetStrOffsetsBase(), lldb_private::plugin::dwarf::DWARFAttributes::Size(), and lldb_private::plugin::dwarf::DWARFFormValue::Unsigned().
Referenced by ExtractDIEsRWLocked(), and ExtractUnitDIENoDwoIfNeeded().
|
pure virtual |
|
private |
Definition at line 627 of file DWARFUnit.cpp.
References m_die_array, and m_dwo.
|
private |
Definition at line 961 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAttributeValueAsString(), GetCompilationDirectory(), GetPathStyle(), GetUnitDIEPtrOnly(), and m_file_spec.
Referenced by GetAbsolutePath().
|
private |
Definition at line 939 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAttributeValueAsString(), GetUnitDIEPtrOnly(), lldb_private::FileSpec::GuessPathStyle(), m_comp_dir, and removeHostnameFromPathname().
Referenced by GetCompilationDirectory(), and GetPathStyle().
|
inline |
Definition at line 109 of file DWARFUnit.h.
References GetFirstDIEOffset(), and GetNextUnitOffset().
Referenced by GetDIE(), and lldb_private::plugin::dwarf::DWARFDebugInfo::GetUnitContainingDIEOffset().
|
inline |
Definition at line 151 of file DWARFUnit.h.
References DIEPtr().
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::LookupAddress(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseImportedModules(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseTypes().
|
inlineprotected |
Definition at line 315 of file DWARFUnit.h.
References ExtractDIEsIfNeeded(), and m_die_array.
Referenced by DIE(), and GetFunctionAranges().
|
inline |
Definition at line 217 of file DWARFUnit.h.
References ExtractDIEsIfNeeded(), and m_die_array.
Referenced by lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnitImpl(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseFunctions().
|
pure virtual |
Implemented in lldb_private::plugin::dwarf::DWARFCompileUnit, and lldb_private::plugin::dwarf::DWARFTypeUnit.
|
static |
Definition at line 1004 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::DIERef::DebugInfo, lldb_private::plugin::dwarf::DWARFContext::GetAsLLVM(), lldb_private::DWARFDataExtractor::GetAsLLVMDWARF(), lldb_private::plugin::dwarf::DWARFContext::isDwo(), and lldb_private::DataExtractor::ValidOffset().
Referenced by lldb_private::plugin::dwarf::DWARFDebugInfo::ParseUnitsFor().
void DWARFUnit::ExtractDIEsIfNeeded | ( | ) |
Definition at line 151 of file DWARFUnit.cpp.
References ExtractDIEsRWLocked(), m_cancel_scopes, m_die_array, and m_die_array_mutex.
|
private |
Definition at line 223 of file DWARFUnit.cpp.
References AddUnitDIE(), elapsed(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::Extract(), GetData(), GetDebugInfoSize(), GetFirstDIEOffset(), GetNextUnitOffset(), GetOffset(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::HasChildren(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::IsNULL(), LLDB_SCOPED_TIMERF, lldbassert, m_die_array, m_dwarf, m_dwo, m_first_die, m_first_die_mutex, and lldb_private::plugin::dwarf::DWARFDebugInfoEntry::SetParentIndex().
Referenced by ExtractDIEsIfNeeded(), and ExtractDIEsScoped().
DWARFUnit::ScopedExtractDIEs DWARFUnit::ExtractDIEsScoped | ( | ) |
Definition at line 171 of file DWARFUnit.cpp.
References ExtractDIEsRWLocked(), lldbassert, m_cancel_scopes, lldb_private::plugin::dwarf::DWARFUnit::ScopedExtractDIEs::m_clear_dies, m_die_array, and m_die_array_mutex.
Referenced by lldb_private::plugin::dwarf::ManualDWARFIndex::Index().
|
protected |
void DWARFUnit::ExtractUnitDIEIfNeeded | ( | ) |
Definition at line 75 of file DWARFUnit.cpp.
References DWARFUnit(), ExtractUnitDIENoDwoIfNeeded(), lldb_private::Status::FromErrorStringWithFormatv(), GetBaseAddress(), GetUnitDIEOnly(), GetVersion(), lldb_private::plugin::dwarf::DWARFBaseDIE::IsValid(), LinkToSkeletonUnit(), m_addr_base, m_dwarf, m_dwo, m_dwo_error, m_dwo_id, m_first_die, m_gnu_addr_base, m_gnu_ranges_base, m_has_parsed_non_skeleton_unit, SetAddrBase(), SetBaseAddress(), SetDwoError(), SetLoclistsBase(), and SetRangesBase().
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::CalculateFrameVariableError(), GetDwoSymbolFile(), GetNonSkeletonUnit(), and HasAny().
void DWARFUnit::ExtractUnitDIENoDwoIfNeeded | ( | ) |
Definition at line 48 of file DWARFUnit.cpp.
References AddUnitDIE(), elapsed(), GetData(), GetFirstDIEOffset(), GetNextUnitOffset(), m_dwarf, m_first_die, and m_first_die_mutex.
Referenced by ExtractUnitDIEIfNeeded(), GetDWOId(), GetLineTableOffset(), and GetUnitDIEPtrOnly().
llvm::Expected< llvm::DWARFAddressRangesVector > DWARFUnit::FindRnglistFromIndex | ( | uint32_t | index | ) |
Return a list of address ranges retrieved from an encoded range list whose offset is found via a table lookup given an index (DWARF v5 and later).
Definition at line 1129 of file DWARFUnit.cpp.
References FindRnglistFromOffset(), and GetRnglistOffset().
Referenced by GetRanges().
llvm::Expected< llvm::DWARFAddressRangesVector > DWARFUnit::FindRnglistFromOffset | ( | dw_offset_t | offset | ) |
Return a list of address ranges resulting from a (possibly encoded) range list starting at a given offset in the appropriate ranges section.
Definition at line 1089 of file DWARFUnit.cpp.
References GetAddrBase(), GetAddressByteSize(), lldb_private::DWARFDataExtractor::GetAsLLVMDWARF(), GetBaseAddress(), GetRnglistData(), GetRnglistTable(), GetVersion(), m_dwarf, and m_header.
Referenced by FindRnglistFromIndex(), and GetRanges().
const llvm::DWARFAbbreviationDeclarationSet * DWARFUnit::GetAbbreviations | ( | ) | const |
Definition at line 449 of file DWARFUnit.cpp.
References m_abbrevs.
Referenced by lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAbbreviationDeclarationPtr().
dw_offset_t DWARFUnit::GetAbbrevOffset | ( | ) | const |
Definition at line 453 of file DWARFUnit.cpp.
References DW_INVALID_OFFSET, and m_abbrevs.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::Dump(), and lldb_private::plugin::dwarf::DWARFTypeUnit::Dump().
const FileSpec & DWARFUnit::GetAbsolutePath | ( | ) |
Definition at line 908 of file DWARFUnit.cpp.
References ComputeAbsolutePath(), and m_file_spec.
|
inline |
Definition at line 130 of file DWARFUnit.h.
References m_addr_base.
Referenced by FindRnglistFromOffset(), and ReadAddressFromDebugAddrSection().
|
inlineoverridevirtual |
Implements lldb_private::DWARFExpression::Delegate.
Definition at line 127 of file DWARFUnit.h.
References m_header.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::Dump(), lldb_private::plugin::dwarf::DWARFTypeUnit::Dump(), lldb_private::plugin::dwarf::DWARFFormValue::ExtractValue(), FindRnglistFromOffset(), GetAddressByteSize(), GetExprListFromAtConstValue(), lldb_private::plugin::dwarf::DWARFFormValue::GetFixedSize(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseVariableDIE(), ReadAddressFromDebugAddrSection(), and lldb_private::plugin::dwarf::DWARFFormValue::SkipValue().
|
static |
Definition at line 789 of file DWARFUnit.cpp.
References DWARFUnit(), GetAddressByteSize(), and GetDefaultAddressSize().
|
inlineoverridevirtual |
Implements lldb_private::DWARFExpression::Delegate.
Definition at line 131 of file DWARFUnit.h.
References m_base_addr.
Referenced by ExtractUnitDIEIfNeeded(), FindRnglistFromOffset(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetDIENamesAndRanges(), and ParseDWARFLocationList().
lldb::ByteOrder DWARFUnit::GetByteOrder | ( | ) | const |
Definition at line 635 of file DWARFUnit.cpp.
References m_dwarf.
Referenced by GetExprListFromAtConstValue().
const FileSpec & DWARFUnit::GetCompilationDirectory | ( | ) |
Definition at line 902 of file DWARFUnit.cpp.
References ComputeCompDirAndGuessPathStyle(), and m_comp_dir.
Referenced by ComputeAbsolutePath(), MakeAbsoluteAndRemap(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseSupportFiles().
const lldb_private::DWARFDataExtractor & DWARFUnit::GetData | ( | ) | const |
Get the data that contains the DIE information for this unit.
This will return the correct bytes that contain the data for this DWARFUnit. It could be .debug_info or .debug_types depending on where the data for this unit originates.
Definition at line 1072 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::DIERef::DebugTypes, m_dwarf, and m_section.
Referenced by ExtractDIEsRWLocked(), lldb_private::plugin::dwarf::DWARFAttributes::ExtractFormValueAtIndex(), ExtractUnitDIENoDwoIfNeeded(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAttributeValue(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetDIENamesAndRanges(), and PeekDIEName().
size_t DWARFUnit::GetDebugInfoSize | ( | ) | const |
Definition at line 444 of file DWARFUnit.cpp.
References GetHeaderByteSize(), GetLength(), and GetLengthByteSize().
Referenced by ExtractDIEsRWLocked().
|
inline |
Definition at line 222 of file DWARFUnit.h.
References m_section.
Referenced by lldb_private::plugin::dwarf::NameToDIE::FindAllEntriesForUnit().
|
static |
Definition at line 795 of file DWARFUnit.cpp.
Referenced by GetAddressByteSize().
DWARFDIE DWARFUnit::GetDIE | ( | dw_offset_t | die_offset | ) |
Definition at line 653 of file DWARFUnit.cpp.
References CompareDIEOffset(), ContainsDIEOffset(), DW_INVALID_OFFSET, ExtractDIEsIfNeeded(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), GetOffset(), GetSymbolFileDWARF(), and m_die_array.
Referenced by lldb_private::plugin::dwarf::DebugNamesDWARFIndex::GetDIE(), GetDIEBitSizeAndSign(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetSeparateDebugInfo(), lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnit(), lldb_private::plugin::dwarf::DWARFCompileUnit::LookupAddress(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseBlocksRecursive().
|
overridevirtual |
Implements lldb_private::DWARFExpression::Delegate.
Definition at line 699 of file DWARFUnit.cpp.
References DWARFUnit(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), GetDIE(), and GetOffset().
uint64_t DWARFUnit::GetDWARFLanguageType | ( | ) |
Definition at line 870 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAttributeValueAsUnsigned(), GetUnitDIEPtrOnly(), and m_language_type.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::CalculateFrameVariableError(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetLanguage(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetLanguageFamily(), DWARFASTParserClang::ParseChildMembers(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseCompileUnit().
|
inline |
Get the fission .dwo file specific error for this compile unit.
The skeleton compile unit only can have a DWO error. Any other type of DWARFUnit will not have a valid DWO error.
Definition at line 284 of file DWARFUnit.h.
References m_dwo_error.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::CalculateFrameVariableError(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDwoStats(), and lldb_private::plugin::dwarf::SymbolFileDWARF::GetSeparateDebugInfo().
std::optional< uint64_t > DWARFUnit::GetDWOId | ( | ) |
Get the DWO ID from the DWARFUnitHeader for DWARF5, or from the unit DIE's DW_AT_dwo_id or DW_AT_GNU_dwo_id for DWARF4 and earlier.
Definition at line 377 of file DWARFUnit.cpp.
References ExtractUnitDIENoDwoIfNeeded(), and m_dwo_id.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARFDwo::GetDWOCompileUnitForHash(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDwoStats(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDwoSymbolFileForCompileUnit(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetSeparateDebugInfo(), lldb_private::plugin::dwarf::DWARFDebugInfo::GetSkeletonUnit(), lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnit(), and SetLoclistsBase().
SymbolFileDWARFDwo * DWARFUnit::GetDwoSymbolFile | ( | bool | load_all_debug_info = true | ) |
Definition at line 975 of file DWARFUnit.cpp.
References ExtractUnitDIEIfNeeded(), and m_dwo.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::GetDebugInfoSize(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDIERefSymbolFile(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDwoStats(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetMangledNamesForFunction(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetSeparateDebugInfo(), and lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnit().
FileSpec DWARFUnit::GetFile | ( | size_t | file_idx | ) |
Definition at line 914 of file DWARFUnit.cpp.
References m_dwarf.
Referenced by DWARFASTParserClang::ParseChildEnumerators(), ParsedDWARFTypeAttributes::ParsedDWARFTypeAttributes(), DWARFASTParserClang::ParseFunctionFromDWARF(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseVariableDIE().
|
inline |
Definition at line 113 of file DWARFUnit.h.
References GetHeaderByteSize(), and GetOffset().
Referenced by ContainsDIEOffset(), ExtractDIEsRWLocked(), ExtractUnitDIENoDwoIfNeeded(), and lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnit().
|
inline |
Definition at line 122 of file DWARFUnit.h.
References m_header.
Referenced by lldb_private::plugin::dwarf::DWARFFormValue::SkipValue().
const DWARFDebugAranges & DWARFUnit::GetFunctionAranges | ( | ) |
Definition at line 983 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::DWARFDebugInfoEntry::BuildFunctionAddressRangeTable(), DIEPtr(), m_dwo, and m_func_aranges_up.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::LookupAddress().
uint32_t DWARFUnit::GetHeaderByteSize | ( | ) | const |
Get the size in bytes of the unit header.
Definition at line 1078 of file DWARFUnit.cpp.
References m_header.
Referenced by GetDebugInfoSize(), and GetFirstDIEOffset().
|
inline |
Get the DWO ID from the DWARFUnitHeader only.
DWARF5 skeleton units have the DWO ID in the compile unit header and we sometimes only want to access this cheap value without causing the more expensive attribute fetches that GetDWOId() uses.
Definition at line 62 of file DWARFUnit.h.
References m_header.
bool DWARFUnit::GetIsOptimized | ( | ) |
Definition at line 882 of file DWARFUnit.cpp.
References lldb_private::eLazyBoolCalculate, lldb_private::eLazyBoolNo, lldb_private::eLazyBoolYes, lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAttributeValueAsUnsigned(), GetUnitDIEPtrOnly(), and m_is_optimized.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::ParseIsOptimized().
|
inline |
Definition at line 120 of file DWARFUnit.h.
References m_header.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::Dump(), lldb_private::plugin::dwarf::DWARFTypeUnit::Dump(), and GetDebugInfoSize().
|
inline |
Get the size in bytes of the length field in the header.
In DWARF32 this is just 4 bytes
Definition at line 107 of file DWARFUnit.h.
Referenced by GetDebugInfoSize().
dw_offset_t DWARFUnit::GetLineTableOffset | ( | ) |
Definition at line 457 of file DWARFUnit.cpp.
References ExtractUnitDIENoDwoIfNeeded(), and m_line_table_offset.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::GetTypeUnitSupportFiles(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseLineTable(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseSupportFiles().
|
inline |
Definition at line 182 of file DWARFUnit.h.
References m_lldb_cu.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::GetCompUnitForDWARFCompUnit(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetDWARFCompileUnit(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseCompileUnit().
DWARFDataExtractor DWARFUnit::GetLocationData | ( | ) | const |
Definition at line 535 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::SymbolFileDWARF::GetDWARFContext(), lldb_private::plugin::dwarf::DWARFContext::getOrLoadLocData(), lldb_private::plugin::dwarf::DWARFContext::getOrLoadLocListsData(), GetSymbolFileDWARF(), GetVersion(), and m_header.
Referenced by lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetDIENamesAndRanges(), and GetExprListFromAtLocation().
std::unique_ptr< llvm::DWARFLocationTable > DWARFUnit::GetLocationTable | ( | const DataExtractor & | data | ) | const |
Return the location table for parsing the given location list data.
The format is chosen according to the unit type. Never returns null.
Definition at line 525 of file DWARFUnit.cpp.
References lldb::eByteOrderLittle, lldb_private::DataExtractor::GetAddressByteSize(), lldb_private::DataExtractor::GetByteOrder(), lldb_private::DataExtractor::GetData(), GetVersion(), and m_is_dwo.
Referenced by ParseDWARFLocationList().
|
inline |
Definition at line 249 of file DWARFUnit.h.
References m_dwarf, m_loclist_table_header, and m_loclists_base.
Referenced by GetExprListFromAtLocation().
|
inline |
Definition at line 116 of file DWARFUnit.h.
References m_header.
Referenced by ContainsDIEOffset(), lldb_private::plugin::dwarf::DWARFCompileUnit::Dump(), lldb_private::plugin::dwarf::DWARFTypeUnit::Dump(), ExtractDIEsRWLocked(), ExtractUnitDIENoDwoIfNeeded(), lldb_private::plugin::dwarf::NameToDIE::FindAllEntriesForUnit(), and lldb_private::plugin::dwarf::AppleDWARFIndex::GetGlobalVariables().
DWARFUnit & DWARFUnit::GetNonSkeletonUnit | ( | ) |
Definition at line 782 of file DWARFUnit.cpp.
References DWARFUnit(), ExtractUnitDIEIfNeeded(), and m_dwo.
Referenced by lldb_private::plugin::dwarf::NameToDIE::FindAllEntriesForUnit(), lldb_private::plugin::dwarf::DebugNamesDWARFIndex::GetForeignTypeUnit(), lldb_private::plugin::dwarf::AppleDWARFIndex::GetGlobalVariables(), lldb_private::plugin::dwarf::DWARFCompileUnit::GetNonSkeletonUnit(), lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnit(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseBlocksRecursive(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseFunctions(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseIsOptimized(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseLanguage(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseXcodeSDK().
|
inline |
Definition at line 100 of file DWARFUnit.h.
References m_header.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::BuildAddressRangeTable(), lldb_private::plugin::dwarf::DWARFCompileUnit::Dump(), lldb_private::plugin::dwarf::DWARFTypeUnit::Dump(), ExtractDIEsRWLocked(), lldb_private::plugin::dwarf::NameToDIE::FindAllEntriesForUnit(), lldb_private::plugin::dwarf::DWARFDebugInfo::GetCompileUnitAranges(), lldb_private::plugin::dwarf::DebugNamesDWARFIndex::GetDIE(), GetDIE(), GetDIEBitSizeAndSign(), GetFirstDIEOffset(), lldb_private::plugin::dwarf::AppleDWARFIndex::GetGlobalVariables(), lldb_private::plugin::dwarf::DebugNamesDWARFIndex::GetGlobalVariables(), GetRnglistOffset(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetSeparateDebugInfo(), lldb_private::plugin::dwarf::DWARFTypeUnit::GetTypeOffset(), lldb_private::plugin::dwarf::DWARFDebugInfo::GetUnitAtOffset(), lldb_private::plugin::dwarf::ManualDWARFIndex::Index(), lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnit(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseBlocksRecursive(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseLineTable(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseSupportFiles(), lldb_private::plugin::dwarf::DebugNamesDWARFIndex::SameAsEntryContext(), and lldb_private::plugin::dwarf::DebugNamesDWARFIndex::SameParentChain().
FileSpec::Style DWARFUnit::GetPathStyle | ( | ) |
Definition at line 896 of file DWARFUnit.cpp.
References ComputeCompDirAndGuessPathStyle(), and m_comp_dir.
Referenced by ComputeAbsolutePath(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetTypeUnitSupportFiles(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseCompileUnit(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseImportedModules(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseSupportFiles().
DWARFProducer DWARFUnit::GetProducer | ( | ) |
Definition at line 858 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::eProducerInvalid, m_producer, and ParseProducerInfo().
Referenced by Supports_unnamed_objc_bitfields().
llvm::VersionTuple DWARFUnit::GetProducerVersion | ( | ) |
Definition at line 864 of file DWARFUnit.cpp.
References m_producer_version, and ParseProducerInfo().
Referenced by Supports_unnamed_objc_bitfields().
|
inline |
Definition at line 133 of file DWARFUnit.h.
References m_ranges_base.
|
protected |
Definition at line 549 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::SymbolFileDWARF::GetDWARFContext(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), lldb_private::plugin::dwarf::DWARFContext::getOrLoadRngListsData(), GetSymbolFileDWARF(), and m_header.
Referenced by FindRnglistFromOffset(), GetRnglistOffset(), and GetRnglistTable().
llvm::Expected< uint64_t > DWARFUnit::GetRnglistOffset | ( | uint32_t | Index | ) |
Return a rangelist's offset based on an index.
The index designates an entry in the rangelist table's offset array and is supplied by DW_FORM_rnglistx.
Definition at line 589 of file DWARFUnit.cpp.
References GetOffset(), GetRnglistData(), GetRnglistTable(), and m_ranges_base.
Referenced by FindRnglistFromIndex().
|
protected |
Definition at line 573 of file DWARFUnit.cpp.
References lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), GetRnglistData(), GetSymbolFileDWARF(), GetVersion(), m_ranges_base, m_rnglist_table, m_rnglist_table_done, ParseListTableHeader(), and lldb_private::toString().
Referenced by FindRnglistFromOffset(), and GetRnglistOffset().
DWARFCompileUnit * DWARFUnit::GetSkeletonUnit | ( | ) |
Get the skeleton compile unit for a DWO file.
We need to keep track of the skeleton compile unit for a DWO file so we can access it. Sometimes this value is cached when the skeleton compile unit is first parsed, but if a .dwp file parses all of the DWARFUnits in the file, the skeleton compile unit might not have been parsed yet, to there might not be a backlink. This accessor handles both cases correctly and avoids crashes.
Definition at line 797 of file DWARFUnit.cpp.
References DWARFUnit(), lldb_private::plugin::dwarf::SymbolFileDWARFDwo::GetBaseSymbolFile(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetSkeletonUnit(), GetSymbolFileDWARF(), IsDWOUnit(), LinkToSkeletonUnit(), and m_skeleton_unit.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::GetCompUnitForDWARFCompUnit().
std::optional< uint64_t > DWARFUnit::GetStringOffsetSectionItem | ( | uint32_t | index | ) | const |
Definition at line 1081 of file DWARFUnit.cpp.
References GetStrOffsetsBase(), m_dwarf, and m_header.
|
inline |
Definition at line 134 of file DWARFUnit.h.
References m_str_offsets_base.
Referenced by GetStringOffsetSectionItem().
|
inline |
Definition at line 200 of file DWARFUnit.h.
References m_dwarf.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::BuildAddressRangeTable(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::Extract(), lldb_private::plugin::dwarf::NameToDIE::FindAllEntriesForUnit(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetCompUnitForDWARFCompUnit(), GetDIE(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetDIENamesAndRanges(), lldb_private::plugin::dwarf::DebugNamesDWARFIndex::GetForeignTypeUnit(), GetLocationData(), GetRnglistData(), GetRnglistTable(), GetSkeletonUnit(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetTypeSystem(), GetVendorDWARFOpcodeSize(), DWARFASTParserClang::ParseTypeFromClangModule(), ParseVendorDWARFOpcode(), SetDwoStrOffsetsBase(), and SetLoclistsBase().
|
inline |
Definition at line 149 of file DWARFUnit.h.
References GetUnitDIEPtrOnly().
Referenced by ExtractUnitDIEIfNeeded(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetCompileOptions(), lldb_private::plugin::dwarf::DebugNamesDWARFIndex::GetForeignTypeUnit(), lldb_private::plugin::dwarf::SymbolFileDWARF::GetSeparateDebugInfo(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseCompileUnit(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseDebugMacros(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseXcodeSDK().
|
inlineprotected |
Definition at line 306 of file DWARFUnit.h.
References ExtractUnitDIENoDwoIfNeeded(), and m_first_die.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::BuildAddressRangeTable(), ComputeAbsolutePath(), ComputeCompDirAndGuessPathStyle(), GetDWARFLanguageType(), GetIsOptimized(), GetUnitDIEOnly(), and ParseProducerInfo().
|
inline |
|
overridevirtual |
Implements lldb_private::DWARFExpression::Delegate.
Definition at line 731 of file DWARFUnit.cpp.
References GetSymbolFileDWARF(), and lldb_private::plugin::dwarf::SymbolFileDWARF::GetVendorDWARFOpcodeSize().
|
inlineoverridevirtual |
Implements lldb_private::DWARFExpression::Delegate.
Definition at line 121 of file DWARFUnit.h.
References m_header.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::Dump(), lldb_private::plugin::dwarf::DWARFTypeUnit::Dump(), ExtractUnitDIEIfNeeded(), FindRnglistFromOffset(), GetLocationData(), GetLocationTable(), GetRnglistTable(), lldb_private::plugin::dwarf::DWARFDebugInfo::GetSkeletonUnit(), lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnit(), lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnitImpl(), lldb_private::plugin::dwarf::SymbolFileDWARF::ParseCompileUnit(), and SetDwoStrOffsetsBase().
Returns true if any DIEs in the unit match any DW_TAG values in tags.
[in] | tags | An array of dw_tag_t values to check all abbrevitions for. |
Definition at line 1136 of file DWARFUnit.cpp.
References ExtractUnitDIEIfNeeded(), m_die_array, and m_dwo.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::CalculateFrameVariableError().
|
inline |
Definition at line 54 of file DWARFUnit.h.
References m_is_dwo.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::GetCompUnitForDWARFCompUnit(), lldb_private::plugin::dwarf::DebugNamesDWARFIndex::GetForeignTypeUnit(), lldb_private::plugin::dwarf::DWARFDebugInfo::GetSkeletonUnit(), and GetSkeletonUnit().
|
inline |
Note that this check only works for DWARF5+.
Definition at line 227 of file DWARFUnit.h.
References GetUnitType().
Referenced by lldb_private::plugin::dwarf::ManualDWARFIndex::IndexUnit().
|
inline |
Definition at line 225 of file DWARFUnit.h.
References m_header.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::classof(), and lldb_private::plugin::dwarf::DWARFTypeUnit::classof().
Definition at line 811 of file DWARFUnit.cpp.
References DWARFUnit(), and m_skeleton_unit.
Referenced by ExtractUnitDIEIfNeeded(), and GetSkeletonUnit().
|
privatedelete |
References DWARFUnit().
bool DWARFUnit::ParseDWARFLocationList | ( | const DataExtractor & | data, |
DWARFExpressionList & | loc_list ) const |
Definition at line 746 of file DWARFUnit.cpp.
References lldb_private::DWARFExpressionList::AddExpression(), lldb_private::DWARFExpressionList::Clear(), lldb_private::DebugInfo, error(), lldb_private::DataExtractor::GetAddressByteSize(), GetBaseAddress(), lldb_private::DataExtractor::GetByteOrder(), GetLocationTable(), lldb_private::GetLog(), LLDB_INVALID_ADDRESS, LLDB_LOG_ERROR, ReadAddressFromDebugAddrSection(), and lldb_private::DWARFExpressionList::Sort().
Referenced by lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetDIENamesAndRanges(), and GetExprListFromAtLocation().
|
private |
Definition at line 829 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::eProducerClang, lldb_private::plugin::dwarf::eProducerGCC, lldb_private::plugin::dwarf::eProducerOther, lldb_private::plugin::dwarf::eProducerSwift, lldb_private::RegularExpression::Execute(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAttributeValueAsString(), GetUnitDIEPtrOnly(), m_producer, and m_producer_version.
Referenced by GetProducer(), and GetProducerVersion().
|
overridevirtual |
Definition at line 737 of file DWARFUnit.cpp.
References GetSymbolFileDWARF(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseVendorDWARFOpcode().
llvm::StringRef DWARFUnit::PeekDIEName | ( | dw_offset_t | die_offset | ) |
Returns the AT_Name of the DIE at die_offset, if it exists, without parsing the entire compile unit.
An empty is string is returned upon error or if the attribute is not present.
Definition at line 674 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::DWARFDebugInfoEntry::Extract(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAttributeValue(), lldb_private::plugin::dwarf::DWARFDebugInfoEntry::GetAttributeValueAsString(), GetData(), and lldb_private::plugin::dwarf::DWARFFormValue::ReferencedUnitAndOffset().
Referenced by lldb_private::plugin::dwarf::DebugNamesDWARFIndex::SameAsEntryContext(), and lldb_private::plugin::dwarf::DebugNamesDWARFIndex::SameParentChain().
|
overridevirtual |
Implements lldb_private::DWARFExpression::Delegate.
Definition at line 615 of file DWARFUnit.cpp.
References GetAddrBase(), GetAddressByteSize(), LLDB_INVALID_ADDRESS, and m_dwarf.
Referenced by ParseDWARFLocationList().
void DWARFUnit::SetAddrBase | ( | dw_addr_t | addr_base | ) |
Definition at line 462 of file DWARFUnit.cpp.
References m_addr_base.
Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().
void DWARFUnit::SetBaseAddress | ( | dw_addr_t | base_addr | ) |
Definition at line 639 of file DWARFUnit.cpp.
References m_base_addr.
Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().
|
inline |
Set the fission .dwo file specific error for this compile unit.
This helps tracks issues that arise when trying to locate or parse a .dwo file. Things like a missing .dwo file, DWO ID mismatch, and other .dwo errors can be stored in each compile unit so the issues can be communicated to the user.
Definition at line 292 of file DWARFUnit.h.
References error(), and m_dwo_error.
Referenced by ExtractUnitDIEIfNeeded(), and lldb_private::plugin::dwarf::SymbolFileDWARF::GetDwoSymbolFileForCompileUnit().
|
private |
Definition at line 348 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::SymbolFileDWARF::GetDWARFContext(), lldb_private::plugin::dwarf::DWARFContext::getOrLoadStrOffsetsData(), GetSymbolFileDWARF(), lldb_private::DataExtractor::GetU16(), lldb_private::DataExtractor::GetU32(), lldb_private::DataExtractor::GetU64(), GetVersion(), m_header, and SetStrOffsetsBase().
Referenced by AddUnitDIE().
|
inline |
Definition at line 184 of file DWARFUnit.h.
References m_lldb_cu.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::GetDWARFCompileUnit(), and lldb_private::plugin::dwarf::SymbolFileDWARF::ParseCompileUnit().
void DWARFUnit::SetLoclistsBase | ( | dw_addr_t | loclists_base | ) |
Definition at line 493 of file DWARFUnit.cpp.
References GetDWOId(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), GetSymbolFileDWARF(), m_dwarf, m_header, m_loclist_table_header, m_loclists_base, and lldb_private::toString().
Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().
void DWARFUnit::SetRangesBase | ( | dw_addr_t | ranges_base | ) |
Definition at line 566 of file DWARFUnit.cpp.
References lldbassert, m_ranges_base, and m_rnglist_table_done.
Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().
void DWARFUnit::SetStrOffsetsBase | ( | dw_offset_t | str_offsets_base | ) |
Definition at line 611 of file DWARFUnit.cpp.
References m_str_offsets_base.
Referenced by AddUnitDIE(), and SetDwoStrOffsetsBase().
bool DWARFUnit::Supports_unnamed_objc_bitfields | ( | ) |
Definition at line 822 of file DWARFUnit.cpp.
References lldb_private::plugin::dwarf::eProducerClang, GetProducer(), and GetProducerVersion().
Referenced by DWARFASTParserClang::ParseSingleMember().
|
protected |
Definition at line 329 of file DWARFUnit.h.
Referenced by DWARFUnit(), GetAbbreviations(), and GetAbbrevOffset().
|
protected |
Value of DW_AT_addr_base.
Definition at line 357 of file DWARFUnit.h.
Referenced by ExtractUnitDIEIfNeeded(), GetAddrBase(), and SetAddrBase().
|
protected |
Definition at line 350 of file DWARFUnit.h.
Referenced by AddUnitDIE(), GetBaseAddress(), and SetBaseAddress().
|
protected |
Definition at line 341 of file DWARFUnit.h.
Referenced by DWARFUnit(), ExtractDIEsIfNeeded(), and ExtractDIEsScoped().
|
protected |
Definition at line 355 of file DWARFUnit.h.
Referenced by ComputeCompDirAndGuessPathStyle(), GetCompilationDirectory(), and GetPathStyle().
|
protected |
Definition at line 334 of file DWARFUnit.h.
Referenced by ClearDIEsRWLocked(), DIEPtr(), dies(), ExtractDIEsIfNeeded(), ExtractDIEsRWLocked(), ExtractDIEsScoped(), GetDIE(), and HasAny().
|
mutableprotected |
Definition at line 335 of file DWARFUnit.h.
Referenced by ExtractDIEsIfNeeded(), and ExtractDIEsScoped().
|
mutableprotected |
Definition at line 338 of file DWARFUnit.h.
|
mutableprotected |
Definition at line 337 of file DWARFUnit.h.
|
protected |
Definition at line 326 of file DWARFUnit.h.
Referenced by lldb_private::plugin::dwarf::DWARFCompileUnit::BuildAddressRangeTable(), DWARFUnit(), ExtractDIEsRWLocked(), ExtractUnitDIEIfNeeded(), ExtractUnitDIENoDwoIfNeeded(), FindRnglistFromOffset(), GetByteOrder(), GetData(), GetFile(), GetLoclistOffset(), GetStringOffsetSectionItem(), GetSymbolFileDWARF(), ReadAddressFromDebugAddrSection(), and SetLoclistsBase().
|
protected |
Definition at line 327 of file DWARFUnit.h.
Referenced by ClearDIEsRWLocked(), ExtractDIEsRWLocked(), ExtractUnitDIEIfNeeded(), GetDwoSymbolFile(), GetFunctionAranges(), GetNonSkeletonUnit(), and HasAny().
|
protected |
If we get an error when trying to load a .dwo file, save that error here.
Errors include .dwo/.dwp file not found, or the .dwp/.dwp file was found but DWO ID doesn't match, etc.
Definition at line 380 of file DWARFUnit.h.
Referenced by ExtractUnitDIEIfNeeded(), GetDwoError(), and SetDwoError().
|
protected |
Value of DW_AT_GNU_dwo_id (v4) or dwo_id from CU header (v5).
Definition at line 376 of file DWARFUnit.h.
Referenced by AddUnitDIE(), DWARFUnit(), ExtractUnitDIEIfNeeded(), and GetDWOId().
|
protected |
Definition at line 356 of file DWARFUnit.h.
Referenced by ComputeAbsolutePath(), and GetAbsolutePath().
|
protected |
Definition at line 345 of file DWARFUnit.h.
Referenced by ExtractDIEsRWLocked(), ExtractUnitDIEIfNeeded(), ExtractUnitDIENoDwoIfNeeded(), and GetUnitDIEPtrOnly().
|
protected |
Definition at line 346 of file DWARFUnit.h.
Referenced by ExtractDIEsRWLocked(), and ExtractUnitDIENoDwoIfNeeded().
|
protected |
Definition at line 349 of file DWARFUnit.h.
Referenced by GetFunctionAranges().
|
protected |
Definition at line 360 of file DWARFUnit.h.
Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().
|
protected |
Definition at line 361 of file DWARFUnit.h.
Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().
|
protected |
Definition at line 374 of file DWARFUnit.h.
Referenced by AddUnitDIE(), DWARFUnit(), and ExtractUnitDIEIfNeeded().
|
protected |
Definition at line 328 of file DWARFUnit.h.
Referenced by DWARFUnit(), FindRnglistFromOffset(), GetAddressByteSize(), GetFormParams(), GetHeaderByteSize(), GetHeaderDWOId(), GetLength(), GetLocationData(), GetNextUnitOffset(), GetOffset(), GetRnglistData(), GetStringOffsetSectionItem(), lldb_private::plugin::dwarf::DWARFTypeUnit::GetTypeHash(), lldb_private::plugin::dwarf::DWARFTypeUnit::GetTypeOffset(), GetUnitType(), GetVersion(), IsTypeUnit(), SetDwoStrOffsetsBase(), and SetLoclistsBase().
|
protected |
Definition at line 373 of file DWARFUnit.h.
Referenced by AddUnitDIE(), DWARFUnit(), GetLocationTable(), and IsDWOUnit().
|
protected |
Definition at line 354 of file DWARFUnit.h.
Referenced by GetIsOptimized().
|
protected |
Definition at line 353 of file DWARFUnit.h.
Referenced by GetDWARFLanguageType().
|
protected |
Value of DW_AT_stmt_list.
Definition at line 364 of file DWARFUnit.h.
Referenced by AddUnitDIE(), and GetLineTableOffset().
|
protected |
Definition at line 330 of file DWARFUnit.h.
Referenced by GetLLDBCompUnit(), and SetLLDBCompUnit().
|
protected |
Definition at line 370 of file DWARFUnit.h.
Referenced by GetLoclistOffset(), and SetLoclistsBase().
|
protected |
Value of DW_AT_loclists_base.
Definition at line 358 of file DWARFUnit.h.
Referenced by GetLoclistOffset(), and SetLoclistsBase().
|
protected |
Definition at line 351 of file DWARFUnit.h.
Referenced by GetProducer(), and ParseProducerInfo().
|
protected |
Definition at line 352 of file DWARFUnit.h.
Referenced by GetProducerVersion(), and ParseProducerInfo().
|
protected |
Value of DW_AT_rnglists_base.
Definition at line 359 of file DWARFUnit.h.
Referenced by GetRangesBase(), GetRnglistOffset(), GetRnglistTable(), and SetRangesBase().
|
protected |
Definition at line 368 of file DWARFUnit.h.
Referenced by GetRnglistTable().
|
protected |
Definition at line 369 of file DWARFUnit.h.
Referenced by GetRnglistTable(), and SetRangesBase().
|
protected |
Definition at line 372 of file DWARFUnit.h.
Referenced by DWARFUnit(), GetData(), and GetDebugSection().
|
protected |
Definition at line 332 of file DWARFUnit.h.
Referenced by GetSkeletonUnit(), and LinkToSkeletonUnit().
|
protected |
Definition at line 366 of file DWARFUnit.h.
Referenced by GetStrOffsetsBase(), and SetStrOffsetsBase().