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

Type Unit is used to represent an artificial compilation unit which keeps all type information. More...

Public Member Functions

TypeUnit (LinkingGlobalData &GlobalData, unsigned ID, std::optional< uint16_t > Language, dwarf::FormParams Format, llvm::endianness Endianess)

void

createDIETree (BumpPtrAllocator &Allocator)

Generates DIE tree based on information from TypesMap.

Error

finishCloningAndEmit (const Triple &TargetTriple)

Emits resulting dwarf based on information from DIE tree.

TypePool &

getTypePool ()

Returns global type pool.

void

forEachAcceleratorRecord (function_ref< void(AccelInfo &)> Handler) override

Enumerates all accelerator records and call Handler for each.

uint64_t

getDebugStrIndex (const StringEntry *String) override

Returns index for the specified String inside .debug_str_offsets.

void

saveAcceleratorInfo (const TypeUnitAccelInfo &Info)

Adds Info to the unit's accelerator records.

Public Member Functions inherited from llvm::dwarf_linker::parallel::DwarfUnit

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.

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](classllvm%5F1%5F1SectionKind.html "SectionKind - This is a simple POD value that classifies the properties of a section.").

SectionDescriptor &

getSectionDescriptor (DebugSectionKind SectionKind)

Returns descriptor for the specified section of [SectionKind](classllvm%5F1%5F1SectionKind.html "SectionKind - This is a simple POD value that classifies the properties of a section.").

std::optional< const SectionDescriptor * >

tryGetSectionDescriptor (DebugSectionKind SectionKind) const

Returns descriptor for the specified section of [SectionKind](classllvm%5F1%5F1SectionKind.html "SectionKind - This is a simple POD value that classifies the properties of a section.").

std::optional< SectionDescriptor * >

tryGetSectionDescriptor (DebugSectionKind SectionKind)

Returns descriptor for the specified section of [SectionKind](classllvm%5F1%5F1SectionKind.html "SectionKind - This is a simple POD value that classifies the properties of a section.").

SectionDescriptor &

getOrCreateSectionDescriptor (DebugSectionKind SectionKind)

Returns descriptor for the specified section of [SectionKind](classllvm%5F1%5F1SectionKind.html "SectionKind - This is a simple POD value that classifies the properties of a section.").

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.

Type Unit is used to represent an artificial compilation unit which keeps all type information.

This type information is referenced from other compilation units.

Definition at line 24 of file DWARFLinkerTypeUnit.h.