LLDB  mainline
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | List of all members
DWARFUnit Class Referenceabstract

#include <DWARFUnit.h>

Inheritance diagram for DWARFUnit:
Inheritance graph
Collaboration diagram for DWARFUnit:
Collaboration graph


class  ScopedExtractDIEs

Public Member Functions

virtual ~DWARFUnit ()
bool IsDWOUnit ()
llvm::Optional< uint64_t > GetDWOId ()
void ExtractUnitDIEIfNeeded ()
void ExtractUnitDIENoDwoIfNeeded ()
void ExtractDIEsIfNeeded ()
ScopedExtractDIEs ExtractDIEsScoped ()
bool Verify (lldb_private::Stream *s) const
virtual void Dump (lldb_private::Stream *s) const =0
const lldb_private::DWARFDataExtractorGetData () const
 Get the data that contains the DIE information for this unit. More...
uint32_t GetHeaderByteSize () const
 Get the size in bytes of the unit header. More...
dw_offset_t GetOffset () const
size_t GetLengthByteSize () const
 Get the size in bytes of the length field in the header. More...
bool ContainsDIEOffset (dw_offset_t die_offset) const
dw_offset_t GetFirstDIEOffset () const
dw_offset_t GetNextUnitOffset () const
size_t GetDebugInfoSize () const
uint32_t GetLength () const
uint16_t GetVersion () const
const DWARFAbbreviationDeclarationSetGetAbbreviations () const
dw_offset_t GetAbbrevOffset () const
uint8_t GetAddressByteSize () const
dw_addr_t GetAddrBase () const
dw_addr_t GetBaseAddress () const
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
lldb::ByteOrder GetByteOrder () const
const DWARFDebugArangesGetFunctionAranges ()
void SetBaseAddress (dw_addr_t base_addr)
DWARFBaseDIE GetUnitDIEOnly ()
DWARFDIE GetDIE (dw_offset_t die_offset)
DWARFUnitGetNonSkeletonUnit ()
void * GetUserData () const
void SetUserData (void *d)
bool Supports_DW_AT_APPLE_objc_complete_type ()
bool DW_AT_decl_file_attributes_are_invalid ()
bool Supports_unnamed_objc_bitfields ()
SymbolFileDWARFGetSymbolFileDWARF () const
DWARFProducer GetProducer ()
llvm::VersionTuple GetProducerVersion ()
uint64_t GetDWARFLanguageType ()
bool GetIsOptimized ()
const lldb_private::FileSpecGetCompilationDirectory ()
const lldb_private::FileSpecGetAbsolutePath ()
lldb_private::FileSpec GetFile (size_t file_idx)
lldb_private::FileSpec::Style GetPathStyle ()
SymbolFileDWARFDwoGetDwoSymbolFile ()
die_iterator_range dies ()
DIERef::Section GetDebugSection () const
uint8_t GetUnitType () const
bool IsTypeUnit () const
llvm::Optional< uint64_t > GetStringOffsetSectionItem (uint32_t index) const
llvm::Expected< DWARFRangeListFindRnglistFromOffset (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. More...
llvm::Expected< DWARFRangeListFindRnglistFromIndex (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). More...
llvm::Expected< uint64_t > GetRnglistOffset (uint32_t Index)
 Return a rangelist's offset based on an index. More...
llvm::Optional< uint64_t > GetLoclistOffset (uint32_t Index)
std::unique_ptr< llvm::DWARFLocationTable > GetLocationTable (const lldb_private::DataExtractor &data) const
 Return the location table for parsing the given location list data. More...
lldb_private::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. More...
const lldb_private::StatusGetDwoError () const
 Get the fission .dwo file specific error for this compile unit. More...
void SetDwoError (const lldb_private::Status &error)
 Set the fission .dwo file specific error for this compile unit. More...
- Public Member Functions inherited from lldb_private::UserID
 UserID (lldb::user_id_t uid=LLDB_INVALID_UID)
 Construct with optional user ID. More...
 ~UserID ()=default
 Destructor. More...
void Clear ()
 Clears the object state. More...
lldb::user_id_t GetID () const
 Get accessor for the user ID. More...
void SetID (lldb::user_id_t uid)
 Set accessor for the user ID. More...

Static Public Member Functions

static llvm::Expected< DWARFUnitSPextract (SymbolFileDWARF &dwarf2Data, lldb::user_id_t uid, const lldb_private::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 DWARFUnitHeader &header, const DWARFAbbreviationDeclarationSet &abbrevs, DIERef::Section section, bool is_dwo)
llvm::Error ExtractHeader (SymbolFileDWARF &dwarf, const lldb_private::DWARFDataExtractor &data, lldb::offset_t *offset_ptr)
const DWARFDebugInfoEntryGetUnitDIEPtrOnly ()
const DWARFDebugInfoEntryDIEPtr ()
const llvm::Optional< llvm::DWARFDebugRnglistTable > & GetRnglistTable ()
lldb_private::DWARFDataExtractor GetRnglistData () const

Protected Attributes

std::shared_ptr< DWARFUnitm_dwo
DWARFUnitHeader m_header
const DWARFAbbreviationDeclarationSetm_abbrevs = nullptr
void * m_user_data = nullptr
DWARFDebugInfoEntry::collection m_die_array
llvm::sys::RWMutex m_die_array_mutex
llvm::sys::RWMutex m_die_array_scoped_mutex
std::atomic< bool > m_cancel_scopes
DWARFDebugInfoEntry m_first_die
llvm::sys::RWMutex m_first_die_mutex
std::unique_ptr< DWARFDebugArangesm_func_aranges_up
dw_addr_t m_base_addr = 0
DWARFProducer m_producer = eProducerInvalid
llvm::VersionTuple m_producer_version
llvm::Optional< uint64_t > m_language_type
lldb_private::LazyBool m_is_optimized = lldb_private::eLazyBoolCalculate
llvm::Optional< lldb_private::FileSpecm_comp_dir
llvm::Optional< lldb_private::FileSpecm_file_spec
llvm::Optional< dw_addr_tm_addr_base
 Value of DW_AT_addr_base. More...
dw_addr_t m_loclists_base = 0
 Value of DW_AT_loclists_base. More...
dw_addr_t m_ranges_base = 0
 Value of DW_AT_rnglists_base. More...
llvm::Optional< uint64_t > m_gnu_addr_base
llvm::Optional< uint64_t > m_gnu_ranges_base
dw_offset_t m_line_table_offset = DW_INVALID_OFFSET
 Value of DW_AT_stmt_list. More...
dw_offset_t m_str_offsets_base = 0
llvm::Optional< llvm::DWARFDebugRnglistTable > m_rnglist_table
bool m_rnglist_table_done = false
llvm::Optional< llvm::DWARFListTableHeader > m_loclist_table_header
const DIERef::Section m_section
bool m_is_dwo
bool m_has_parsed_non_skeleton_unit
llvm::Optional< uint64_t > m_dwo_id
 Value of DW_AT_GNU_dwo_id (v4) or dwo_id from CU header (v5). More...
lldb_private::Status m_dwo_error
 If we get an error when trying to load a .dwo file, save that error here. More...
- Protected Attributes inherited from lldb_private::UserID
lldb::user_id_t m_uid
 The user ID that uniquely identifies an object. More...

Private Types

using die_iterator_range = llvm::iterator_range< DWARFDebugInfoEntry::collection::iterator >

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 DWARFUnitoperator= (const DWARFUnit &)=delete

Detailed Description

Definition at line 83 of file DWARFUnit.h.

Member Typedef Documentation

◆ die_iterator_range

using DWARFUnit::die_iterator_range = llvm::iterator_range<DWARFDebugInfoEntry::collection::iterator>

Definition at line 85 of file DWARFUnit.h.

Constructor & Destructor Documentation

◆ ~DWARFUnit()

DWARFUnit::~DWARFUnit ( )

◆ DWARFUnit() [1/2]

DWARFUnit::DWARFUnit ( SymbolFileDWARF dwarf,
lldb::user_id_t  uid,
const DWARFUnitHeader header,
const DWARFAbbreviationDeclarationSet abbrevs,
DIERef::Section  section,
bool  is_dwo 

Definition at line 32 of file DWARFUnit.cpp.

◆ DWARFUnit() [2/2]

DWARFUnit::DWARFUnit ( const DWARFUnit )

Member Function Documentation

◆ AddUnitDIE()

void DWARFUnit::AddUnitDIE ( const DWARFDebugInfoEntry cu_die)

◆ BuildAddressRangeTable()

virtual void DWARFUnit::BuildAddressRangeTable ( DWARFDebugAranges debug_aranges)
pure virtual

◆ ClearDIEsRWLocked()

void DWARFUnit::ClearDIEsRWLocked ( )

Definition at line 607 of file DWARFUnit.cpp.

References m_die_array, and m_dwo.

◆ ComputeAbsolutePath()

void DWARFUnit::ComputeAbsolutePath ( )

◆ ComputeCompDirAndGuessPathStyle()

void DWARFUnit::ComputeCompDirAndGuessPathStyle ( )

◆ ContainsDIEOffset()

bool DWARFUnit::ContainsDIEOffset ( dw_offset_t  die_offset) const

Definition at line 142 of file DWARFUnit.h.

References GetFirstDIEOffset(), and GetNextUnitOffset().

Referenced by GetDIE(), and DWARFDebugInfo::GetUnitContainingDIEOffset().

◆ DIE()


Definition at line 179 of file DWARFUnit.h.

References DIEPtr().

Referenced by SymbolFileDWARF::ParseImportedModules(), and SymbolFileDWARF::ParseTypes().

◆ DIEPtr()

const DWARFDebugInfoEntry* DWARFUnit::DIEPtr ( )

Definition at line 309 of file DWARFUnit.h.

References ExtractDIEsIfNeeded(), and m_die_array.

Referenced by DIE(), and GetFunctionAranges().

◆ dies()

die_iterator_range DWARFUnit::dies ( )

◆ Dump()

virtual void DWARFUnit::Dump ( lldb_private::Stream s) const
pure virtual

Implemented in DWARFCompileUnit, and DWARFTypeUnit.

◆ DW_AT_decl_file_attributes_are_invalid()

bool DWARFUnit::DW_AT_decl_file_attributes_are_invalid ( )

Definition at line 677 of file DWARFUnit.cpp.

References eProducerLLVMGCC, and GetProducer().

◆ extract()

llvm::Expected< DWARFUnitSP > DWARFUnit::extract ( SymbolFileDWARF dwarf2Data,
lldb::user_id_t  uid,
const lldb_private::DWARFDataExtractor debug_info,
DIERef::Section  section,
lldb::offset_t offset_ptr 

◆ ExtractDIEsIfNeeded()

void DWARFUnit::ExtractDIEsIfNeeded ( )

Definition at line 138 of file DWARFUnit.cpp.

References ExtractDIEsRWLocked(), m_cancel_scopes, m_die_array, and m_die_array_mutex.

Referenced by DIEPtr(), dies(), and GetDIE().

◆ ExtractDIEsRWLocked()

void DWARFUnit::ExtractDIEsRWLocked ( )

◆ ExtractDIEsScoped()

DWARFUnit::ScopedExtractDIEs DWARFUnit::ExtractDIEsScoped ( )

◆ ExtractHeader()

llvm::Error DWARFUnit::ExtractHeader ( SymbolFileDWARF dwarf,
const lldb_private::DWARFDataExtractor data,
lldb::offset_t offset_ptr 

◆ ExtractUnitDIEIfNeeded()

void DWARFUnit::ExtractUnitDIEIfNeeded ( )

◆ ExtractUnitDIENoDwoIfNeeded()

void DWARFUnit::ExtractUnitDIENoDwoIfNeeded ( )

◆ FindRnglistFromIndex()

llvm::Expected< DWARFRangeList > 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 1067 of file DWARFUnit.cpp.

References FindRnglistFromOffset(), and GetRnglistOffset().

Referenced by GetRangesOrReportError().

◆ FindRnglistFromOffset()

llvm::Expected< DWARFRangeList > DWARFUnit::FindRnglistFromOffset ( dw_offset_t  offset)

◆ GetAbbreviations()

const DWARFAbbreviationDeclarationSet * DWARFUnit::GetAbbreviations ( ) const

Definition at line 431 of file DWARFUnit.cpp.

References m_abbrevs.

Referenced by DWARFDebugInfoEntry::GetAbbreviationDeclarationPtr().

◆ GetAbbrevOffset()

dw_offset_t DWARFUnit::GetAbbrevOffset ( ) const

◆ GetAbsolutePath()

const FileSpec & DWARFUnit::GetAbsolutePath ( )

Definition at line 775 of file DWARFUnit.cpp.

References ComputeAbsolutePath(), and m_file_spec.

◆ GetAddrBase()

dw_addr_t DWARFUnit::GetAddrBase ( ) const

Definition at line 158 of file DWARFUnit.h.

References m_addr_base.

Referenced by FindRnglistFromOffset(), and ReadAddressFromDebugAddrSection().

◆ GetAddressByteSize() [1/2]

uint8_t DWARFUnit::GetAddressByteSize ( ) const

◆ GetAddressByteSize() [2/2]

uint8_t DWARFUnit::GetAddressByteSize ( const DWARFUnit cu)

Definition at line 661 of file DWARFUnit.cpp.

References GetAddressByteSize(), and GetDefaultAddressSize().

◆ GetBaseAddress()

dw_addr_t DWARFUnit::GetBaseAddress ( ) const

◆ GetByteOrder()

lldb::ByteOrder DWARFUnit::GetByteOrder ( ) const

◆ GetCompilationDirectory()

const FileSpec & DWARFUnit::GetCompilationDirectory ( )

Definition at line 769 of file DWARFUnit.cpp.

References ComputeCompDirAndGuessPathStyle(), and m_comp_dir.

Referenced by ComputeAbsolutePath(), and MakeAbsoluteAndRemap().

◆ GetData()

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.

The correct data for the DIE information in this unit.

Definition at line 992 of file DWARFUnit.cpp.

References SymbolFileDWARF::GetDWARFContext(), lldb_private::DWARFContext::getOrLoadDebugInfoData(), lldb_private::DWARFContext::getOrLoadDebugTypesData(), m_dwarf, and m_section.

Referenced by ExtractDIEsRWLocked(), DWARFAttributes::ExtractFormValueAtIndex(), ExtractUnitDIENoDwoIfNeeded(), DWARFDebugInfoEntry::GetAttributes(), DWARFDebugInfoEntry::GetAttributeValue(), and DWARFDebugInfoEntry::GetDIENamesAndRanges().

◆ GetDebugInfoSize()

size_t DWARFUnit::GetDebugInfoSize ( ) const

Definition at line 427 of file DWARFUnit.cpp.

References GetHeaderByteSize(), GetLength(), and GetLengthByteSize().

Referenced by ExtractDIEsRWLocked().

◆ GetDebugSection()

DIERef::Section DWARFUnit::GetDebugSection ( ) const

Definition at line 221 of file DWARFUnit.h.

References m_section.

Referenced by NameToDIE::FindAllEntriesForUnit().

◆ GetDefaultAddressSize()

uint8_t DWARFUnit::GetDefaultAddressSize ( )

Definition at line 667 of file DWARFUnit.cpp.

Referenced by GetAddressByteSize().

◆ GetDIE()

DWARFDIE DWARFUnit::GetDIE ( dw_offset_t  die_offset)

◆ GetDWARFLanguageType()

uint64_t DWARFUnit::GetDWARFLanguageType ( )

◆ GetDwoError()

const lldb_private::Status& DWARFUnit::GetDwoError ( ) const

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.

A valid DWO error if there is a problem with anything in the locating or parsing inforamtion in the .dwo file

Definition at line 278 of file DWARFUnit.h.

References m_dwo_error.

Referenced by SymbolFileDWARF::CalculateFrameVariableError().

◆ GetDWOId()

llvm::Optional< uint64_t > DWARFUnit::GetDWOId ( )

◆ GetDwoSymbolFile()

SymbolFileDWARFDwo * DWARFUnit::GetDwoSymbolFile ( )

◆ GetFile()

FileSpec DWARFUnit::GetFile ( size_t  file_idx)

◆ GetFirstDIEOffset()

dw_offset_t DWARFUnit::GetFirstDIEOffset ( ) const

◆ GetFunctionAranges()

const DWARFDebugAranges & DWARFUnit::GetFunctionAranges ( )

◆ GetHeaderByteSize()

uint32_t DWARFUnit::GetHeaderByteSize ( ) const

Get the size in bytes of the unit header.

Byte size of the unit header

Definition at line 998 of file DWARFUnit.cpp.

References DWARFUnitHeader::GetUnitType(), GetVersion(), and m_header.

Referenced by GetDebugInfoSize(), and GetFirstDIEOffset().

◆ GetIsOptimized()

bool DWARFUnit::GetIsOptimized ( )

◆ GetLength()

uint32_t DWARFUnit::GetLength ( ) const

Definition at line 153 of file DWARFUnit.h.

References DWARFUnitHeader::GetLength(), and m_header.

Referenced by GetDebugInfoSize().

◆ GetLengthByteSize()

size_t DWARFUnit::GetLengthByteSize ( ) const

Get the size in bytes of the length field in the header.

In DWARF32 this is just 4 bytes

Byte size of the compile unit header length field

Definition at line 140 of file DWARFUnit.h.

Referenced by GetDebugInfoSize().

◆ GetLineTableOffset()

dw_offset_t DWARFUnit::GetLineTableOffset ( )

◆ GetLocationData()

DWARFDataExtractor DWARFUnit::GetLocationData ( ) const

◆ GetLocationTable()

std::unique_ptr< llvm::DWARFLocationTable > DWARFUnit::GetLocationTable ( const lldb_private::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 507 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 lldb_private::DWARFExpression::ParseDWARFLocationList().

◆ GetLoclistOffset()

llvm::Optional<uint64_t> DWARFUnit::GetLoclistOffset ( uint32_t  Index)

◆ GetNextUnitOffset()

dw_offset_t DWARFUnit::GetNextUnitOffset ( ) const

◆ GetNonSkeletonUnit()

DWARFUnit & DWARFUnit::GetNonSkeletonUnit ( )

◆ GetOffset()

dw_offset_t DWARFUnit::GetOffset ( ) const

◆ GetPathStyle()

FileSpec::Style DWARFUnit::GetPathStyle ( )

◆ GetProducer()

DWARFProducer DWARFUnit::GetProducer ( )

◆ GetProducerVersion()

llvm::VersionTuple DWARFUnit::GetProducerVersion ( )

Definition at line 731 of file DWARFUnit.cpp.

References m_producer_version, and ParseProducerInfo().

Referenced by Supports_unnamed_objc_bitfields().

◆ GetRangesBase()

dw_addr_t DWARFUnit::GetRangesBase ( ) const

Definition at line 161 of file DWARFUnit.h.

References m_ranges_base.

Referenced by DWARFDebugRanges::FindRanges().

◆ GetRnglistData()

DWARFDataExtractor DWARFUnit::GetRnglistData ( ) const

◆ GetRnglistOffset()

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 572 of file DWARFUnit.cpp.

References GetOffset(), GetRnglistData(), GetRnglistTable(), and m_ranges_base.

Referenced by FindRnglistFromIndex().

◆ GetRnglistTable()

const llvm::Optional< llvm::DWARFDebugRnglistTable > & DWARFUnit::GetRnglistTable ( )

◆ GetStringOffsetSectionItem()

llvm::Optional< uint64_t > DWARFUnit::GetStringOffsetSectionItem ( uint32_t  index) const

◆ GetStrOffsetsBase()

dw_addr_t DWARFUnit::GetStrOffsetsBase ( ) const

Definition at line 162 of file DWARFUnit.h.

References m_str_offsets_base.

Referenced by GetStringOffsetSectionItem().

◆ GetSymbolFileDWARF()

SymbolFileDWARF& DWARFUnit::GetSymbolFileDWARF ( ) const

◆ GetUnitDIEOnly()

DWARFBaseDIE DWARFUnit::GetUnitDIEOnly ( )

◆ GetUnitDIEPtrOnly()

const DWARFDebugInfoEntry* DWARFUnit::GetUnitDIEPtrOnly ( )

◆ GetUnitType()

uint8_t DWARFUnit::GetUnitType ( ) const

Definition at line 223 of file DWARFUnit.h.

References DWARFUnitHeader::GetUnitType(), and m_header.

◆ GetUserData()

void * DWARFUnit::GetUserData ( ) const

◆ GetVersion()

uint16_t DWARFUnit::GetVersion ( ) const

◆ HasAny()

bool DWARFUnit::HasAny ( llvm::ArrayRef< dw_tag_t tags)

Returns true if any DIEs in the unit match any DW_TAG values in tags.

[in]tagsAn array of dw_tag_t values to check all abbrevitions for.
True if any DIEs match any tag in tags, false otherwise.

Definition at line 1075 of file DWARFUnit.cpp.

References ExtractUnitDIEIfNeeded(), m_die_array, and m_dwo.

Referenced by SymbolFileDWARF::CalculateFrameVariableError().

◆ IsDWOUnit()

bool DWARFUnit::IsDWOUnit ( )

Definition at line 94 of file DWARFUnit.h.

References m_is_dwo.

Referenced by SymbolFileDWARF::GetCompUnitForDWARFCompUnit().

◆ IsTypeUnit()

bool DWARFUnit::IsTypeUnit ( ) const

Definition at line 224 of file DWARFUnit.h.

References DWARFUnitHeader::IsTypeUnit(), and m_header.

Referenced by DWARFCompileUnit::classof(), and DWARFTypeUnit::classof().

◆ operator=()

const DWARFUnit& DWARFUnit::operator= ( const DWARFUnit )

◆ ParseProducerInfo()

void DWARFUnit::ParseProducerInfo ( )

◆ ReadAddressFromDebugAddrSection()

dw_addr_t DWARFUnit::ReadAddressFromDebugAddrSection ( uint32_t  index) const

◆ SetAddrBase()

void DWARFUnit::SetAddrBase ( dw_addr_t  addr_base)

Definition at line 444 of file DWARFUnit.cpp.

References m_addr_base.

Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().

◆ SetBaseAddress()

void DWARFUnit::SetBaseAddress ( dw_addr_t  base_addr)

Definition at line 619 of file DWARFUnit.cpp.

References m_base_addr.

Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().

◆ SetDwoError()

void DWARFUnit::SetDwoError ( const lldb_private::Status error)

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 286 of file DWARFUnit.h.

References error(), and m_dwo_error.

Referenced by ExtractUnitDIEIfNeeded(), and SymbolFileDWARF::GetDwoSymbolFileForCompileUnit().

◆ SetDwoStrOffsetsBase()

void DWARFUnit::SetDwoStrOffsetsBase ( )

◆ SetLoclistsBase()

void DWARFUnit::SetLoclistsBase ( dw_addr_t  loclists_base)

◆ SetRangesBase()

void DWARFUnit::SetRangesBase ( dw_addr_t  ranges_base)

Definition at line 549 of file DWARFUnit.cpp.

References lldbassert, m_ranges_base, and m_rnglist_table_done.

Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().

◆ SetStrOffsetsBase()

void DWARFUnit::SetStrOffsetsBase ( dw_offset_t  str_offsets_base)

Definition at line 591 of file DWARFUnit.cpp.

References m_str_offsets_base.

Referenced by AddUnitDIE(), and SetDwoStrOffsetsBase().

◆ SetUserData()

void DWARFUnit::SetUserData ( void *  d)

◆ Supports_DW_AT_APPLE_objc_complete_type()

bool DWARFUnit::Supports_DW_AT_APPLE_objc_complete_type ( )

◆ Supports_unnamed_objc_bitfields()

bool DWARFUnit::Supports_unnamed_objc_bitfields ( )

◆ Verify()

bool DWARFUnit::Verify ( lldb_private::Stream s) const

Member Data Documentation

◆ m_abbrevs

const DWARFAbbreviationDeclarationSet* DWARFUnit::m_abbrevs = nullptr

Definition at line 323 of file DWARFUnit.h.

Referenced by GetAbbreviations(), and GetAbbrevOffset().

◆ m_addr_base

llvm::Optional<dw_addr_t> DWARFUnit::m_addr_base

Value of DW_AT_addr_base.

Definition at line 348 of file DWARFUnit.h.

Referenced by ExtractUnitDIEIfNeeded(), GetAddrBase(), and SetAddrBase().

◆ m_base_addr

dw_addr_t DWARFUnit::m_base_addr = 0

Definition at line 341 of file DWARFUnit.h.

Referenced by AddUnitDIE(), GetBaseAddress(), and SetBaseAddress().

◆ m_cancel_scopes

std::atomic<bool> DWARFUnit::m_cancel_scopes

Definition at line 332 of file DWARFUnit.h.

Referenced by ExtractDIEsIfNeeded(), and ExtractDIEsScoped().

◆ m_comp_dir

llvm::Optional<lldb_private::FileSpec> DWARFUnit::m_comp_dir

◆ m_die_array

DWARFDebugInfoEntry::collection DWARFUnit::m_die_array

◆ m_die_array_mutex

llvm::sys::RWMutex DWARFUnit::m_die_array_mutex

Definition at line 327 of file DWARFUnit.h.

Referenced by ExtractDIEsIfNeeded(), and ExtractDIEsScoped().

◆ m_die_array_scoped_mutex

llvm::sys::RWMutex DWARFUnit::m_die_array_scoped_mutex

Definition at line 329 of file DWARFUnit.h.

Referenced by DWARFUnit::ScopedExtractDIEs::ScopedExtractDIEs().

◆ m_dwarf

SymbolFileDWARF& DWARFUnit::m_dwarf

◆ m_dwo

std::shared_ptr<DWARFUnit> DWARFUnit::m_dwo

◆ m_dwo_error

lldb_private::Status DWARFUnit::m_dwo_error

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 371 of file DWARFUnit.h.

Referenced by ExtractUnitDIEIfNeeded(), GetDwoError(), and SetDwoError().

◆ m_dwo_id

llvm::Optional<uint64_t> DWARFUnit::m_dwo_id

Value of DW_AT_GNU_dwo_id (v4) or dwo_id from CU header (v5).

Definition at line 367 of file DWARFUnit.h.

Referenced by AddUnitDIE(), ExtractUnitDIEIfNeeded(), and GetDWOId().

◆ m_file_spec

llvm::Optional<lldb_private::FileSpec> DWARFUnit::m_file_spec

Definition at line 347 of file DWARFUnit.h.

Referenced by ComputeAbsolutePath(), and GetAbsolutePath().

◆ m_first_die

DWARFDebugInfoEntry DWARFUnit::m_first_die

◆ m_first_die_mutex

llvm::sys::RWMutex DWARFUnit::m_first_die_mutex

Definition at line 337 of file DWARFUnit.h.

Referenced by ExtractDIEsRWLocked(), and ExtractUnitDIENoDwoIfNeeded().

◆ m_func_aranges_up

std::unique_ptr<DWARFDebugAranges> DWARFUnit::m_func_aranges_up

Definition at line 340 of file DWARFUnit.h.

Referenced by GetFunctionAranges().

◆ m_gnu_addr_base

llvm::Optional<uint64_t> DWARFUnit::m_gnu_addr_base

Definition at line 351 of file DWARFUnit.h.

Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().

◆ m_gnu_ranges_base

llvm::Optional<uint64_t> DWARFUnit::m_gnu_ranges_base

Definition at line 352 of file DWARFUnit.h.

Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().

◆ m_has_parsed_non_skeleton_unit

bool DWARFUnit::m_has_parsed_non_skeleton_unit

Definition at line 365 of file DWARFUnit.h.

Referenced by AddUnitDIE(), and ExtractUnitDIEIfNeeded().

◆ m_header

DWARFUnitHeader DWARFUnit::m_header

◆ m_is_dwo

bool DWARFUnit::m_is_dwo

Definition at line 364 of file DWARFUnit.h.

Referenced by AddUnitDIE(), GetLocationTable(), and IsDWOUnit().

◆ m_is_optimized

lldb_private::LazyBool DWARFUnit::m_is_optimized = lldb_private::eLazyBoolCalculate

Definition at line 345 of file DWARFUnit.h.

Referenced by GetIsOptimized().

◆ m_language_type

llvm::Optional<uint64_t> DWARFUnit::m_language_type

Definition at line 344 of file DWARFUnit.h.

Referenced by GetDWARFLanguageType().

◆ m_line_table_offset

dw_offset_t DWARFUnit::m_line_table_offset = DW_INVALID_OFFSET

Value of DW_AT_stmt_list.

Definition at line 355 of file DWARFUnit.h.

Referenced by AddUnitDIE(), and GetLineTableOffset().

◆ m_loclist_table_header

llvm::Optional<llvm::DWARFListTableHeader> DWARFUnit::m_loclist_table_header

Definition at line 361 of file DWARFUnit.h.

Referenced by GetLoclistOffset(), and SetLoclistsBase().

◆ m_loclists_base

dw_addr_t DWARFUnit::m_loclists_base = 0

Value of DW_AT_loclists_base.

Definition at line 349 of file DWARFUnit.h.

Referenced by GetLoclistOffset(), and SetLoclistsBase().

◆ m_producer

DWARFProducer DWARFUnit::m_producer = eProducerInvalid

Definition at line 342 of file DWARFUnit.h.

Referenced by GetProducer(), and ParseProducerInfo().

◆ m_producer_version

llvm::VersionTuple DWARFUnit::m_producer_version

Definition at line 343 of file DWARFUnit.h.

Referenced by GetProducerVersion(), and ParseProducerInfo().

◆ m_ranges_base

dw_addr_t DWARFUnit::m_ranges_base = 0

Value of DW_AT_rnglists_base.

Definition at line 350 of file DWARFUnit.h.

Referenced by GetRangesBase(), GetRnglistOffset(), GetRnglistTable(), and SetRangesBase().

◆ m_rnglist_table

llvm::Optional<llvm::DWARFDebugRnglistTable> DWARFUnit::m_rnglist_table

Definition at line 359 of file DWARFUnit.h.

Referenced by GetRnglistTable().

◆ m_rnglist_table_done

bool DWARFUnit::m_rnglist_table_done = false

Definition at line 360 of file DWARFUnit.h.

Referenced by GetRnglistTable(), and SetRangesBase().

◆ m_section

const DIERef::Section DWARFUnit::m_section

Definition at line 363 of file DWARFUnit.h.

Referenced by GetData(), and GetDebugSection().

◆ m_str_offsets_base

dw_offset_t DWARFUnit::m_str_offsets_base = 0

Definition at line 357 of file DWARFUnit.h.

Referenced by GetStrOffsetsBase(), and SetStrOffsetsBase().

◆ m_user_data

void* DWARFUnit::m_user_data = nullptr

Definition at line 324 of file DWARFUnit.h.

Referenced by GetUserData(), and SetUserData().

The documentation for this class was generated from the following files: