|
LLVM 22.0.0git
|
Base class for all Dwarf units(Compile unit/Type table unit). More...
#include "DWARFLinker/Parallel/DWARFLinkerUnit.h"
Classes | |
| struct | AccelInfo |
| This structure keeps fields which would be used for creating accelerator table. More... | |
Public Types | |
| enum class | AccelType : uint8_t { AccelType::None , AccelType::Name , AccelType::Namespace , AccelType::ObjC , AccelType::Type } |
Public Member Functions | |
| virtual | ~DwarfUnit () |
| 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 Member Functions | |
| void | emitDwarfAbbrevEntry (const DIEAbbrev &Abbrev, SectionDescriptor &AbbrevSection) |
| Emit single abbreviation entry. | |
| std::optional< uint64_t > | emitPubAcceleratorEntry (SectionDescriptor &OutSection, const AccelInfo &Info, std::optional< uint64_t > LengthOffset) |
| Emit single pubnames/pubtypes accelerator entry. | |
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.
|
protected |
Cache for file names for this unit.
Definition at line 204 of file DWARFLinkerUnit.h.
|
inlinevirtual |
Definition at line 31 of file DWARFLinkerUnit.h.
|
inline |
Definition at line 32 of file DWARFLinkerUnit.h.
References ClangModuleName, llvm::dwarf_linker::parallel::OutputSections::GlobalData, ID, llvm::dwarf_linker::parallel::OutputSections::OutputSections(), and OutUnitDIE.
Referenced by llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), llvm::dwarf_linker::parallel::CompileUnit::OutputUnitVariantPtr::operator->(), and llvm::dwarf_linker::parallel::TypeUnit::TypeUnit().
| void DwarfUnit::assignAbbrev | ( | DIEAbbrev & | Abbrev | ) |
Adds Abbrev into unit`s abbreviation table.
Definition at line 17 of file DWARFLinkerUnit.cpp.
References Abbreviations, AbbreviationsSet, llvm::DIEAbbrev::getData(), llvm::DIEAbbrev::getNumber(), llvm::DIEAbbrev::getTag(), llvm::DIEAbbrev::hasChildren(), ID, llvm::DIEAbbrev::Profile(), and llvm::DIEAbbrev::setNumber().
|
protected |
Emit single abbreviation entry.
Definition at line 59 of file DWARFLinkerUnit.cpp.
References llvm::Data, llvm::encodeSLEB128(), llvm::encodeULEB128(), llvm::DIEAbbrev::getData(), llvm::DIEAbbrev::getNumber(), llvm::DIEAbbrev::getTag(), llvm::DIEAbbrev::hasChildren(), and llvm::dwarf_linker::parallel::SectionDescriptor::OS.
Referenced by emitAbbreviations().
|
protected |
Emit single pubnames/pubtypes accelerator entry.
Emit the pubnames or pubtypes section contribution for Unit into Sec.
The data is provided in Info.
Definition at line 173 of file DWARFLinkerUnit.cpp.
References llvm::dwarf_linker::DebugInfo, llvm::dwarf::DW_PUBNAMES_VERSION, llvm::dwarf_linker::parallel::SectionDescriptor::emitInplaceString(), llvm::dwarf_linker::parallel::SectionDescriptor::emitIntVal(), llvm::dwarf_linker::parallel::SectionDescriptor::emitOffset(), llvm::dwarf_linker::parallel::OutputSections::getFormParams(), llvm::dwarf_linker::parallel::OutputSections::getOrCreateSectionDescriptor(), getUnitSize(), llvm::dwarf_linker::parallel::SectionDescriptor::OS, and llvm::raw_ostream::tell().
Referenced by emitPubAccelerators().
|
inline |
Returns abbreviations for this compile unit.
Definition at line 69 of file DWARFLinkerUnit.h.
References Abbreviations.
Referenced by emitAbbreviations().
|
inline |
Return Clang module name;.
Definition at line 53 of file DWARFLinkerUnit.h.
References ClangModuleName.
|
inlinevirtual |
Returns index(inside .debug_str_offsets) of specified string.
Reimplemented in llvm::dwarf_linker::parallel::TypeUnit.
Definition at line 160 of file DWARFLinkerUnit.h.
References DebugStringIndexMap, and llvm::String.
|
inline |
Return global data.
Definition at line 56 of file DWARFLinkerUnit.h.
References llvm::dwarf_linker::parallel::OutputSections::GlobalData.
Referenced by llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmitDebugLocations(), llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmitLineTable(), llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmitRanges(), and llvm::dwarf_linker::parallel::CompileUnit::cloneDieAttrExpression().
|
inline |
Returns output unit DIE.
Definition at line 74 of file DWARFLinkerUnit.h.
References OutUnitDIE.
Referenced by llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmitDebugMacro(), emitDebugInfo(), and llvm::dwarf_linker::parallel::TypeUnit::finishCloningAndEmit().
|
inline |
Return the DW_AT_LLVM_sysroot of the compile unit or an empty StringRef.
Definition at line 47 of file DWARFLinkerUnit.h.
References SysRoot.
Referenced by llvm::dwarf_linker::parallel::CompileUnit::analyzeImportedModule().
|
inline |
|
inline |
|
inline |
Returns this unit name.
Definition at line 44 of file DWARFLinkerUnit.h.
References UnitName.
Referenced by llvm::dwarf_linker::parallel::TypeUnit::createDIETree(), llvm::dwarf_linker::parallel::CompileUnit::error(), llvm::dwarf_linker::parallel::CompileUnit::error(), error(), llvm::dwarf_linker::parallel::CompileUnit::warn(), llvm::dwarf_linker::parallel::CompileUnit::warn(), llvm::dwarf_linker::parallel::CompileUnit::warn(), and warn().
|
inline |
Returns size of this(newly generated) compile unit.
Definition at line 41 of file DWARFLinkerUnit.h.
References UnitSize.
Referenced by emitPubAcceleratorEntry().
|
inline |
Return true if this compile unit is from Clang module.
Definition at line 50 of file DWARFLinkerUnit.h.
References ClangModuleName.
|
inline |
Returns true if unit is inter-connected(it references/referenced by other unit).
Definition at line 60 of file DWARFLinkerUnit.h.
References IsInterconnectedCU.
|
inline |
Mark this unit as inter-connected(it references/referenced by other unit).
Definition at line 63 of file DWARFLinkerUnit.h.
References IsInterconnectedCU.
|
inline |
Set output unit DIE.
Definition at line 77 of file DWARFLinkerUnit.h.
References llvm::dwarf_linker::parallel::OutputSections::getDebugInfoHeaderSize(), OutUnitDIE, UnitSize, and UnitTag.
Referenced by llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmit(), and llvm::dwarf_linker::parallel::TypeUnit::createDIETree().
|
protected |
Storage for the unique Abbreviations.
Definition at line 198 of file DWARFLinkerUnit.h.
Referenced by assignAbbrev(), getAbbreviations(), and llvm::dwarf_linker::parallel::CompileUnit::maybeResetToLoadedStage().
|
protected |
FoldingSet that uniques the abbreviations.
Definition at line 195 of file DWARFLinkerUnit.h.
Referenced by assignAbbrev(), llvm::dwarf_linker::parallel::CompileUnit::cleanupDataAfterClonning(), and llvm::dwarf_linker::parallel::CompileUnit::maybeResetToLoadedStage().
|
protected |
If this is a Clang module, this holds the module's name.
Definition at line 184 of file DWARFLinkerUnit.h.
Referenced by llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), DwarfUnit(), getClangModuleName(), and isClangModule().
|
protected |
Maps a string into the index inside .debug_str_offsets section.
Definition at line 209 of file DWARFLinkerUnit.h.
Referenced by llvm::dwarf_linker::parallel::TypeUnit::createDIETree(), emitDebugStringOffsetSection(), getDebugStrIndex(), and llvm::dwarf_linker::parallel::TypeUnit::getDebugStrIndex().
|
protected |
Definition at line 206 of file DWARFLinkerUnit.h.
Referenced by llvm::dwarf_linker::parallel::CompileUnit::cleanupDataAfterClonning(), and llvm::dwarf_linker::parallel::CompileUnit::getDirAndFilenameFromLineTable().
|
protected |
Unique ID for the unit.
Definition at line 175 of file DWARFLinkerUnit.h.
Referenced by assignAbbrev(), llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), DwarfUnit(), getUniqueID(), and llvm::dwarf_linker::parallel::TypeUnit::TypeUnit().
|
protected |
true if current unit references_to/is_referenced by other unit.
Definition at line 192 of file DWARFLinkerUnit.h.
Referenced by isInterconnectedCU(), and setInterconnectedCU().
|
protected |
Output unit DIE.
Definition at line 201 of file DWARFLinkerUnit.h.
Referenced by DwarfUnit(), emitDebugInfo(), getOutUnitDIE(), llvm::dwarf_linker::parallel::CompileUnit::maybeResetToLoadedStage(), and setOutUnitDIE().
|
protected |
The DW_AT_LLVM_sysroot of this unit.
Definition at line 181 of file DWARFLinkerUnit.h.
Referenced by llvm::dwarf_linker::parallel::CompileUnit::analyzeImportedModule(), llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), and getSysRoot().
|
protected |
The name of this unit.
Definition at line 178 of file DWARFLinkerUnit.h.
Referenced by llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), getUnitName(), and llvm::dwarf_linker::parallel::TypeUnit::TypeUnit().
|
protected |
Definition at line 186 of file DWARFLinkerUnit.h.
Referenced by getUnitSize(), and setOutUnitDIE().
|
protected |
DWARF unit tag.
Definition at line 189 of file DWARFLinkerUnit.h.
Referenced by getTag(), and setOutUnitDIE().