LLVM: llvm::dwarf_linker::parallel::DwarfUnit Class Reference (original) (raw)

Base class for all Dwarf units(Compile unit/Type table unit). More...

#include "[DWARFLinker/Parallel/DWARFLinkerUnit.h](DWARFLinkerUnit%5F8h%5Fsource.html)"

Classes
struct AccelInfo
This structure keeps fields which would be used for creating accelerator table. More...
Public Member Functions
virtual ~DwarfUnit ()=default
DwarfUnit (LinkingGlobalData &GlobalData, unsigned ID, StringRef ClangModuleName)
unsigned getUniqueID () const
Unique id of the unit.
uint64_t getUnitSize () const
Returns size of this(newly generated) compile unit.
StringRef getUnitName () const
Returns this unit name.
StringRef getSysRoot ()
Return the DW_AT_LLVM_sysroot of the compile unit or an empty StringRef.
bool isClangModule () const
Return true if this compile unit is from Clang module.
const std::string & getClangModuleName () const
Return Clang module name;.
LinkingGlobalData & getGlobalData ()
Return global data.
bool isInterconnectedCU () const
Returns true if unit is inter-connected(it references/referenced by other unit).
void setInterconnectedCU ()
Mark this unit as inter-connected(it references/referenced by other unit).
void assignAbbrev (DIEAbbrev &Abbrev)
Adds Abbrev into unit`s abbreviation table.
const std::vector< std::unique_ptr< DIEAbbrev > > & getAbbreviations () const
Returns abbreviations for this compile unit.
DIE * getOutUnitDIE ()
Returns output unit DIE.
void setOutUnitDIE (DIE *UnitDie)
Set output unit DIE.
dwarf::Tag getTag () const
Returns unit DWARF tag.
Error emitAbbreviations ()
Error emitDebugInfo (const Triple &TargetTriple)
Emit .debug_info section for unit DIEs.
Error emitDebugLine (const Triple &TargetTriple, const DWARFDebugLine::LineTable &OutLineTable)
Emit .debug_line section.
Error emitDebugStringOffsetSection ()
Emit the .debug_str_offsets section for current unit.
void warn (const Twine &Warning)
void error (const Twine &Err)
void emitPubAccelerators ()
Emit .debug_pubnames and .debug_pubtypes for Unit.
virtual void forEachAcceleratorRecord (function_ref< void(AccelInfo &)> Handler)=0
Enumerates accelerator data.
virtual uint64_t getDebugStrIndex (const StringEntry *String)
Returns index(inside .debug_str_offsets) of specified string.
Public Member Functions inherited from llvm::dwarf_linker::parallel::OutputSections
OutputSections (LinkingGlobalData &GlobalData)
void setOutputFormat (dwarf::FormParams Format, llvm::endianness Endianness)
Sets output format for all keeping sections.
const SectionDescriptor & getSectionDescriptor (DebugSectionKind SectionKind) const
Returns descriptor for the specified section of SectionKind.
SectionDescriptor & getSectionDescriptor (DebugSectionKind SectionKind)
Returns descriptor for the specified section of SectionKind.
std::optional< const SectionDescriptor * > tryGetSectionDescriptor (DebugSectionKind SectionKind) const
Returns descriptor for the specified section of SectionKind.
std::optional< SectionDescriptor * > tryGetSectionDescriptor (DebugSectionKind SectionKind)
Returns descriptor for the specified section of SectionKind.
SectionDescriptor & getOrCreateSectionDescriptor (DebugSectionKind SectionKind)
Returns descriptor for the specified section of SectionKind.
void eraseSections ()
Erases data of all sections.
void forEach (function_ref< void(SectionDescriptor &)> Handler)
Enumerate all sections and call Handler for each.
void forEach (function_ref< void(std::shared_ptr< SectionDescriptor > Section)> Handler)
Enumerate all sections and call Handler for each.
void assignSectionsOffsetAndAccumulateSize (std::array< uint64_t, SectionKindsNum > &SectionSizesAccumulator)
Enumerate all sections, for each section set current offset (kept by SectionSizesAccumulator), update current offset with section length.
void applyPatches (SectionDescriptor &Section, StringEntryToDwarfStringPoolEntryMap &DebugStrStrings, StringEntryToDwarfStringPoolEntryMap &DebugLineStrStrings, TypeUnit *TypeUnitPtr)
Enumerate all sections, for each section apply all section patches.
llvm::endianness getEndianness () const
Endiannes for the sections.
uint16_t getVersion () const
Return DWARF version.
uint16_t getDebugInfoHeaderSize () const
Return size of header of debug_info table.
uint16_t getDebugAddrHeaderSize () const
Return size of header of debug_ table.
uint16_t getDebugStrOffsetsHeaderSize () const
Return size of header of debug_str_offsets table.
const dwarf::FormParams & getFormParams () const
Return size of address.
Protected Types
using FileNamesCache
Cache for file names for this unit.
Protected Types inherited from llvm::dwarf_linker::parallel::OutputSections
using SectionsSetTy
All keeping sections.
Protected Attributes
unsigned ID = 0
Unique ID for the unit.
std::string UnitName
The name of this unit.
std::string SysRoot
The DW_AT_LLVM_sysroot of this unit.
std::string ClangModuleName
If this is a Clang module, this holds the module's name.
uint64_t UnitSize = 0
dwarf::Tag UnitTag = dwarf::DW_TAG_null
DWARF unit tag.
std::atomic< bool > IsInterconnectedCU = {false}
true if current unit references_to/is_referenced by other unit.
FoldingSet< DIEAbbrev > AbbreviationsSet
FoldingSet that uniques the abbreviations.
std::vector< std::unique_ptr< DIEAbbrev > > Abbreviations
Storage for the unique Abbreviations.
DIE * OutUnitDIE = nullptr
Output unit DIE.
FileNamesCache FileNames
IndexedValuesMap< const StringEntry * > DebugStringIndexMap
Maps a string into the index inside .debug_str_offsets section.
Protected Attributes inherited from llvm::dwarf_linker::parallel::OutputSections
LinkingGlobalData & GlobalData
dwarf::FormParams Format = {4, 4, dwarf::DWARF32}
Format for sections.
llvm::endianness Endianness = llvm::endianness::native
Endiannes for sections.
SectionsSetTy SectionDescriptors

Base class for all Dwarf units(Compile unit/Type table unit).

Definition at line 29 of file DWARFLinkerUnit.h.

FileNamesCache

Initial value:

Cache for file names for this unit.

Definition at line 204 of file DWARFLinkerUnit.h.

virtual llvm::dwarf_linker::parallel::DwarfUnit::~DwarfUnit ( ) virtualdefault

DwarfUnit()

assignAbbrev()

void DwarfUnit::assignAbbrev ( DIEAbbrev & Abbrev )

emitDwarfAbbrevEntry()

emitPubAcceleratorEntry()

getAbbreviations()

const std::vector< std::unique_ptr< DIEAbbrev > > & llvm::dwarf_linker::parallel::DwarfUnit::getAbbreviations ( ) const inline

getClangModuleName()

const std::string & llvm::dwarf_linker::parallel::DwarfUnit::getClangModuleName ( ) const inline

getDebugStrIndex()

getGlobalData()

LinkingGlobalData & llvm::dwarf_linker::parallel::DwarfUnit::getGlobalData ( ) inline

getOutUnitDIE()

DIE * llvm::dwarf_linker::parallel::DwarfUnit::getOutUnitDIE ( ) inline

getSysRoot()

StringRef llvm::dwarf_linker::parallel::DwarfUnit::getSysRoot ( ) inline

getTag()

dwarf::Tag llvm::dwarf_linker::parallel::DwarfUnit::getTag ( ) const inline

getUniqueID()

unsigned llvm::dwarf_linker::parallel::DwarfUnit::getUniqueID ( ) const inline

getUnitName()

StringRef llvm::dwarf_linker::parallel::DwarfUnit::getUnitName ( ) const inline

getUnitSize()

uint64_t llvm::dwarf_linker::parallel::DwarfUnit::getUnitSize ( ) const inline

isClangModule()

bool llvm::dwarf_linker::parallel::DwarfUnit::isClangModule ( ) const inline

isInterconnectedCU()

bool llvm::dwarf_linker::parallel::DwarfUnit::isInterconnectedCU ( ) const inline

setInterconnectedCU()

void llvm::dwarf_linker::parallel::DwarfUnit::setInterconnectedCU ( ) inline

setOutUnitDIE()

void llvm::dwarf_linker::parallel::DwarfUnit::setOutUnitDIE ( DIE * UnitDie) inline

Abbreviations

std::vector<std::unique_ptr<DIEAbbrev> > llvm::dwarf_linker::parallel::DwarfUnit::Abbreviations protected

AbbreviationsSet

ClangModuleName

std::string llvm::dwarf_linker::parallel::DwarfUnit::ClangModuleName protected

DebugStringIndexMap

FileNames

FileNamesCache llvm::dwarf_linker::parallel::DwarfUnit::FileNames protected

ID

unsigned llvm::dwarf_linker::parallel::DwarfUnit::ID = 0 protected

IsInterconnectedCU

std::atomic<bool> llvm::dwarf_linker::parallel::DwarfUnit::IsInterconnectedCU = {false} protected

OutUnitDIE

DIE* llvm::dwarf_linker::parallel::DwarfUnit::OutUnitDIE = nullptr protected

SysRoot

std::string llvm::dwarf_linker::parallel::DwarfUnit::SysRoot protected

UnitName

std::string llvm::dwarf_linker::parallel::DwarfUnit::UnitName protected

UnitSize

uint64_t llvm::dwarf_linker::parallel::DwarfUnit::UnitSize = 0 protected

UnitTag

dwarf::Tag llvm::dwarf_linker::parallel::DwarfUnit::UnitTag = dwarf::DW_TAG_null protected

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