Go to the documentation of this file.
9 #ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFUNIT_H
10 #define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFUNIT_H
16 #include "llvm/DebugInfo/DWARF/DWARFDebugRnglists.h"
17 #include "llvm/Support/RWMutex.h"
77 static llvm::Expected<DWARFUnitHeader>
85 llvm::iterator_range<DWARFDebugInfoEntry::collection::iterator>;
88 static llvm::Expected<DWARFUnitSP>
253 std::unique_ptr<llvm::DWARFLocationTable>
354 #endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFUNIT_H
lldb_private::DWARFDataExtractor GetRnglistData() const
llvm::VersionTuple m_producer_version
virtual void BuildAddressRangeTable(DWARFDebugAranges *debug_aranges)=0
llvm::Expected< uint64_t > GetRnglistOffset(uint32_t Index)
Return a rangelist's offset based on an index.
void SetUserData(void *d)
const lldb_private::DWARFDataExtractor & GetData() const
Get the data that contains the DIE information for this unit.
llvm::Optional< dw_addr_t > m_addr_base
Value of DW_AT_addr_base.
const llvm::Optional< llvm::DWARFDebugRnglistTable > & GetRnglistTable()
DWARFUnit(SymbolFileDWARF &dwarf, lldb::user_id_t uid, const DWARFUnitHeader &header, const DWARFAbbreviationDeclarationSet &abbrevs, DIERef::Section section, bool is_dwo)
DWARFProducer GetProducer()
lldb_private::DWARFContext & GetDWARFContext()
dw_addr_t m_loclists_base
Value of DW_AT_loclists_base.
SymbolFileDWARFDwo * GetDwoSymbolFile()
dw_addr_t m_ranges_base
Value of DW_AT_rnglists_base.
void ExtractDIEsRWLocked()
llvm::Optional< lldb_private::FileSpec > m_comp_dir
bool m_rnglist_table_done
void ComputeCompDirAndGuessPathStyle()
SymbolFileDWARF & m_dwarf
size_t GetDebugInfoSize() const
static llvm::Expected< DWARFUnitSP > extract(SymbolFileDWARF &dwarf2Data, lldb::user_id_t uid, const lldb_private::DWARFDataExtractor &debug_info, DIERef::Section section, lldb::offset_t *offset_ptr)
lldb_private::LazyBool m_is_optimized
dw_addr_t GetStrOffsetsBase() const
DWARFDebugInfoEntry objects assume that they are living in one big vector and do pointer arithmetic o...
#define DW_INVALID_OFFSET
llvm::Expected< DWARFRangeList > FindRnglistFromOffset(dw_offset_t offset)
Return a list of address ranges resulting from a (possibly encoded) range list starting at a given of...
DWARFDebugInfoEntry m_first_die
void SetLoclistsBase(dw_addr_t loclists_base)
const DWARFDebugInfoEntry * GetUnitDIEPtrOnly()
std::shared_ptr< DWARFUnit > m_dwo
uint64_t GetDWARFLanguageType()
uint8_t GetAddressByteSize() const
void AddUnitDIE(const DWARFDebugInfoEntry &cu_die)
const DWARFAbbreviationDeclarationSet * m_abbrevs
const lldb_private::FileSpec & GetCompilationDirectory()
std::unique_ptr< llvm::DWARFLocationTable > GetLocationTable(const lldb_private::DataExtractor &data) const
Return the location table for parsing the given location list data.
std::atomic< bool > m_cancel_scopes
void ExtractUnitDIENoDwoIfNeeded()
dw_offset_t GetNextUnitOffset() const
dw_addr_t GetAddrBase() const
std::shared_ptr< DWARFUnit > DWARFUnitSP
virtual void Dump(lldb_private::Stream *s) const =0
lldb_private::FileSpec::Style GetPathStyle()
dw_offset_t GetAbbrevOffset() const
llvm::Optional< uint64_t > GetStringOffsetSectionItem(uint32_t index) const
dw_offset_t GetFirstDIEOffset() const
std::unique_ptr< DWARFDebugAranges > m_func_aranges_up
void SetStrOffsetsBase(dw_offset_t str_offsets_base)
dw_offset_t m_str_offsets_base
uint64_t m_dwo_id
Value of DW_AT_GNU_dwo_id (v4) or dwo_id from CU header (v5).
bool Supports_unnamed_objc_bitfields()
llvm::sys::RWMutex m_die_array_scoped_mutex
const DWARFDebugInfoEntry * DIEPtr()
uint32_t GetHeaderByteSize() const
Get the size in bytes of the unit header.
llvm::iterator_range< DWARFDebugInfoEntry::collection::iterator > die_iterator_range
lldb::ByteOrder GetByteOrder() const
dw_addr_t GetBaseAddress() const
dw_offset_t GetLineTableOffset()
die_iterator_range dies()
dw_offset_t GetOffset() const
const DWARFDebugAranges & GetFunctionAranges()
llvm::sys::path::Style Style
const DWARFUnit & operator=(const DWARFUnit &)=delete
ScopedExtractDIEs ExtractDIEsScoped()
llvm::Optional< llvm::DWARFDebugRnglistTable > m_rnglist_table
void SetRangesBase(dw_addr_t ranges_base)
bool DW_AT_decl_file_attributes_are_invalid()
uint32_t GetLength() const
const DIERef::Section m_section
DWARFBaseDIE GetUnitDIEOnly()
void SetBaseAddress(dw_addr_t base_addr)
uint16_t GetVersion() const
void ExtractDIEsIfNeeded()
llvm::Optional< uint64_t > m_language_type
bool m_has_parsed_non_skeleton_unit
llvm::Optional< uint64_t > m_gnu_addr_base
bool Verify(lldb_private::Stream *s) const
dw_offset_t m_line_table_offset
Value of DW_AT_stmt_list.
DWARFUnit & GetNonSkeletonUnit()
bool Supports_DW_AT_APPLE_objc_complete_type()
size_t GetLengthByteSize() const
Get the size in bytes of the length field in the header.
llvm::sys::RWMutex m_first_die_mutex
lldb_private::DWARFDataExtractor GetLocationData() const
uint8_t GetUnitType() const
void ComputeAbsolutePath()
void ExtractUnitDIEIfNeeded()
llvm::Optional< uint64_t > GetLoclistOffset(uint32_t Index)
void * GetUserData() const
DWARFDebugInfoEntry::collection m_die_array
llvm::VersionTuple GetProducerVersion()
llvm::Optional< uint64_t > m_gnu_ranges_base
std::vector< DWARFDebugInfoEntry > collection
void SetAddrBase(dw_addr_t addr_base)
bool ContainsDIEOffset(dw_offset_t die_offset) const
static uint8_t GetDefaultAddressSize()
dw_addr_t GetRangesBase() const
SymbolFileDWARF & GetSymbolFileDWARF() const
llvm::sys::RWMutex m_die_array_mutex
const DWARFAbbreviationDeclarationSet * GetAbbreviations() const
llvm::Expected< DWARFRangeList > FindRnglistFromIndex(uint32_t index)
Return a list of address ranges retrieved from an encoded range list whose offset is found via a tabl...
DIERef::Section GetDebugSection() const
void SetDwoStrOffsetsBase()
llvm::Optional< llvm::DWARFListTableHeader > m_loclist_table_header
llvm::Error ExtractHeader(SymbolFileDWARF &dwarf, const lldb_private::DWARFDataExtractor &data, lldb::offset_t *offset_ptr)
lldb_private::FileSpec GetFile(size_t file_idx)
ByteOrder
Byte ordering definitions.
const lldb_private::FileSpec & GetAbsolutePath()
const DWARFDataExtractor & getOrLoadLocListsData()
llvm::Optional< lldb_private::FileSpec > m_file_spec
DWARFDIE GetDIE(dw_offset_t die_offset)