class DwarfDebug

Declaration

class DwarfDebug : public DebugHandlerBase { /* full declaration omitted */ };

Description

Collects and handles dwarf debug information.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:294

Inherits from: DebugHandlerBase

Member Variables

private llvm::BumpPtrAllocator DIEValueAllocator
All DIEValues are allocated through this allocator.
private MapVector<const llvm::MDNode*, llvm::DwarfCompileUnit*> CUMap
Maps MDNode with its corresponding DwarfCompileUnit.
private DenseMap<const llvm::DIE*, llvm::DwarfCompileUnit*> CUDieMap
Maps a CU DIE with its corresponding DwarfCompileUnit.
private std::vector<SymbolCU> ArangeLabels
List of all labels used in aranges generation.
private DenseMap<const llvm::MCSymbol*, uint64_t> SymSize
Size of each symbol emitted (for those symbols that have a specific size).
private SmallVector<std::unique_ptr<DbgEntity>, 64> ConcreteEntities
Collection of abstract variables/labels.
private llvm::DebugLocStream DebugLocs
Collection of DebugLocEntry. Stored in a linked list so that DIELocLists can refer to them in spite of insertions into this list.
private SetVector< const llvm::DISubprogram*, SmallVector<const llvm::DISubprogram*, 16>, SmallPtrSet<const llvm::DISubprogram*, 16>> ProcessedSPNodes
This is a collection of subprogram MDNodes that are processed to create DIEs.
private const llvm::MachineFunction* CurFn = nullptr
If nonnull, stores the current machine function we're processing.
private const llvm::DwarfCompileUnit* PrevCU = nullptr
If nonnull, stores the CU in which the previous subprogram was contained.
private llvm::StringRef CompilationDir
As an optimization, there is no need to emit an entry in the directory table for the same directory as DW_AT_comp_dir.
private llvm::DwarfFile InfoHolder
Holder for the file specific debug information.
private DenseMap<const llvm::MDNode*, uint64_t> TypeSignatures
Map from MDNodes for user-defined types to their type signatures. Also used to keep track of which types we have emitted type units for.
private DenseMap<const llvm::MCSection*, const llvm::MCSymbol*> SectionLabels
private SmallVector< std::pair<std::unique_ptr<DwarfTypeUnit>, const DICompositeType*>, 1> TypeUnitsUnderConstruction
private bool UseGNUTLSOpcode
Whether to use the GNU TLS opcode (instead of the standard opcode).
private bool UseDWARF2Bitfields
Whether to use DWARF 2 bitfields (instead of the DWARF 4 format).
private bool UseAllLinkageNames
Whether to emit all linkage names, or just abstract subprograms.
private bool UseInlineStrings = false
Use inlined strings.
private bool UseRangesSection = true
Allow emission of .debug_ranges section.
private bool UseSectionsAsReferences = false
True if the sections itself must be used as references and don't create temp symbols inside DWARF sections.
private bool UseLocSection = true
Allow emission of the .debug_loc section.
private bool GenerateTypeUnits
Generate DWARF v4 type units.
private bool UseDebugMacroSection
Emit a .debug_macro section instead of .debug_macinfo.
private bool EnableOpConvert
Avoid using DW_OP_convert due to consumer incompatibilities.
private llvm::DwarfDebug::MinimizeAddrInV5 MinimizeAddr = MinimizeAddrInV5::Disabled
Force the use of DW_AT_ranges even for single-entry range lists.
private llvm::AccelTableKind TheAccelTableKind
DWARF5 Experimental Options @ {
private bool HasAppleExtensionAttributes
private bool HasSplitDwarf
private bool UseSegmentedStringOffsetsTable
Whether to generate the DWARF v5 string offsets table. It consists of a series of contributions, each preceded by a header. The pre-DWARF v5 string offsets table for split dwarf is, in contrast, a monolithic sequence of string offsets.
private bool EmitDebugEntryValues
Enable production of call site parameters needed to print the debug entry values. Useful for testing purposes when a debugger does not support the feature yet.
private llvm::DwarfFile SkeletonHolder
Holder for the skeleton information.
private llvm::MCDwarfDwoLineTable SplitTypeUnitFileTable
Store file names for type units under fission in a line table header that will be emitted into debug_line.dwo.
private bool SingleCU
True iff there are multiple CUs in this module.
private bool IsDarwin
private DenseMap<const llvm::DIStringType*, unsigned int> StringTypeLocMap
Map for tracking Fortran deferred CHARACTER lengths.
private llvm::AddressPool AddrPool
private AccelTable<llvm::DWARF5AccelTableData> AccelDebugNames
Accelerator tables.
private AccelTable<llvm::AppleAccelTableOffsetData> AccelNames
private AccelTable<llvm::AppleAccelTableOffsetData> AccelObjC
private AccelTable<llvm::AppleAccelTableOffsetData> AccelNamespace
private AccelTable<llvm::AppleAccelTableTypeData> AccelTypes
private llvm::DebuggerKind DebuggerTuning = DebuggerKind::Default
The "tuning" should be used to set defaults for individual feature flags in DwarfDebug; if a given feature has a more specific command-line option, that option should take precedence over the tuning.

Inherited from DebugHandlerBase:

protected Asm
protected MMI
protected PrevInstLoc
protected PrevLabel = nullptr
protected PrevInstBB = nullptr
protected PrologEndLoc
protected CurMI = nullptr
protected LScopes
protected DbgValues
protected DbgLabels
protected LabelsBeforeInsn
protected LabelsAfterInsn

Method Overview

Inherited from DebugHandlerBase:

Inherited from AsmPrinterHandler:

Methods

DwarfDebug(llvm::AsmPrinter* A)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:643

Parameters

llvm::AsmPrinter* A

void addAccelName(const llvm::DICompileUnit& CU,
                  llvm::StringRef Name,
                  const llvm::DIE& Die)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:791

Parameters

const llvm::DICompileUnit& CU
llvm::StringRef Name
const llvm::DIE& Die

template <typename DataT>
void addAccelNameImpl(
    const llvm::DICompileUnit& CU,
    AccelTable<DataT>& AppleAccel,
    llvm::StringRef Name,
    const llvm::DIE& Die)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:478

Templates

DataT

Parameters

const llvm::DICompileUnit& CU
AccelTable<DataT>& AppleAccel
llvm::StringRef Name
const llvm::DIE& Die

void addAccelNamespace(
    const llvm::DICompileUnit& CU,
    llvm::StringRef Name,
    const llvm::DIE& Die)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:795

Parameters

const llvm::DICompileUnit& CU
llvm::StringRef Name
const llvm::DIE& Die

void addAccelObjC(const llvm::DICompileUnit& CU,
                  llvm::StringRef Name,
                  const llvm::DIE& Die)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:793

Parameters

const llvm::DICompileUnit& CU
llvm::StringRef Name
const llvm::DIE& Die

void addAccelType(const llvm::DICompileUnit& CU,
                  llvm::StringRef Name,
                  const llvm::DIE& Die,
                  char Flags)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:798

Parameters

const llvm::DICompileUnit& CU
llvm::StringRef Name
const llvm::DIE& Die
char Flags

void addArangeLabel(llvm::SymbolCU SCU)

Description

Add a label so that arange data can be generated for it.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:669

Parameters

llvm::SymbolCU SCU

void addDwarfTypeUnitType(
    llvm::DwarfCompileUnit& CU,
    llvm::StringRef Identifier,
    llvm::DIE& Die,
    const llvm::DICompositeType* CTy)

Description

Add a DIE to the set of types that we're going to pull into type units.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:665

Parameters

llvm::DwarfCompileUnit& CU
llvm::StringRef Identifier
llvm::DIE& Die
const llvm::DICompositeType* CTy

void addGnuPubAttributes(
    llvm::DwarfCompileUnit& U,
    llvm::DIE& D) const

Description

Flags to let the linker know we have emitted new style pubnames. Only emit it here if we don't have a skeleton CU for split dwarf.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:591

Parameters

llvm::DwarfCompileUnit& U
llvm::DIE& D

void addStringTypeLoc(
    const llvm::DIStringType* ST,
    unsigned int Loc)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:817

Parameters

const llvm::DIStringType* ST
unsigned int Loc

void addSubprogramNames(
    const llvm::DICompileUnit& CU,
    const llvm::DISubprogram* SP,
    llvm::DIE& Die)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:786

Parameters

const llvm::DICompileUnit& CU
const llvm::DISubprogram* SP
llvm::DIE& Die

bool alwaysUseRanges() const

Description

Returns whether range encodings should be used for single entry range lists.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:697

void beginFunctionImpl(
    const llvm::MachineFunction* MF)

Description

Gather pre-function debug information.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:629

Parameters

const llvm::MachineFunction* MF

void beginInstruction(
    const llvm::MachineInstr* MI)

Description

Process beginning of an instruction.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:658

Parameters

const llvm::MachineInstr* MI

void beginModule(llvm::Module* M)

Description

Emit all Dwarf sections that should come prior to the content.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:649

Parameters

llvm::Module* M

bool buildLocationList(
    SmallVectorImpl<llvm::DebugLocEntry>&
        DebugLoc,
    const DbgValueHistoryMap::Entries& Entries)

Description

Build the location list for all DBG_VALUEs in the function that describe the same variable. If the resulting list has only one entry that is valid for entire variable's scope return true.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:617

Parameters

SmallVectorImpl<llvm::DebugLocEntry>& DebugLoc
const DbgValueHistoryMap::Entries& Entries

void collectEntityInfo(
    llvm::DwarfCompileUnit& TheCU,
    const llvm::DISubprogram* SP,
    DenseSet<llvm::DwarfDebug::InlinedEntity>&
        ProcessedVars)

Description

Populate LexicalScope entries with variables' info.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:610

Parameters

llvm::DwarfCompileUnit& TheCU
const llvm::DISubprogram* SP
DenseSet<llvm::DwarfDebug::InlinedEntity>& ProcessedVars

void collectVariableInfoFromMFTable(
    llvm::DwarfCompileUnit& TheCU,
    DenseSet<llvm::DwarfDebug::InlinedEntity>& P)

Description

Collect variable information from the side table maintained by MF.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:621

Parameters

llvm::DwarfCompileUnit& TheCU
DenseSet<llvm::DwarfDebug::InlinedEntity>& P

void constructAbstractSubprogramScopeDIE(
    llvm::DwarfCompileUnit& SrcCU,
    llvm::LexicalScope* Scope)

Description

Construct a DIE for this abstract scope.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:471

Parameters

llvm::DwarfCompileUnit& SrcCU
llvm::LexicalScope* Scope

void constructAndAddImportedEntityDIE(
    llvm::DwarfCompileUnit& TheCU,
    const llvm::DIImportedEntity* N)

Description

Construct imported_module or imported_declaration DIE.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:600

Parameters

llvm::DwarfCompileUnit& TheCU
const llvm::DIImportedEntity* N

void constructCallSiteEntryDIEs(
    const llvm::DISubprogram& SP,
    llvm::DwarfCompileUnit& CU,
    llvm::DIE& ScopeDIE,
    const llvm::MachineFunction& MF)

Description

Construct DIEs for call site entries describing the calls in \p MF.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:474

Parameters

const llvm::DISubprogram& SP
llvm::DwarfCompileUnit& CU
llvm::DIE& ScopeDIE
const llvm::MachineFunction& MF

llvm::DwarfCompileUnit& constructSkeletonCU(
    const llvm::DwarfCompileUnit& CU)

Description

Construct the split debug info compile unit for the debug info section. In DWARF v5, the skeleton unit DIE may have the following attributes: DW_AT_addr_base, DW_AT_comp_dir, DW_AT_dwo_name, DW_AT_high_pc, DW_AT_low_pc, DW_AT_ranges, DW_AT_stmt_list, and DW_AT_str_offsets_base. Prior to DWARF v5 it may also have DW_AT_GNU_dwo_id. DW_AT_GNU_dwo_name is used instead of DW_AT_dwo_name, Dw_AT_GNU_addr_base instead of DW_AT_addr_base, and DW_AT_GNU_ranges_base instead of DW_AT_rnglists_base.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:569

Parameters

const llvm::DwarfCompileUnit& CU

llvm::DbgEntity* createConcreteEntity(
    llvm::DwarfCompileUnit& TheCU,
    llvm::LexicalScope& Scope,
    const llvm::DINode* Node,
    const llvm::DILocation* Location,
    const llvm::MCSymbol* Sym = nullptr)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:464

Parameters

llvm::DwarfCompileUnit& TheCU
llvm::LexicalScope& Scope
const llvm::DINode* Node
const llvm::DILocation* Location
const llvm::MCSymbol* Sym = nullptr

void emitAbbreviations()

Description

Emit the abbreviation section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:493

template <typename AccelTableT>
void emitAccel(AccelTableT& Accel,
               llvm::MCSection* Section,
               llvm::StringRef TableName)

Description

Emit a specified accelerator table.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:500

Templates

AccelTableT

Parameters

AccelTableT& Accel
llvm::MCSection* Section
llvm::StringRef TableName

void emitAccelDebugNames()

Description

Emit DWARF v5 accelerator table.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:503

void emitAccelNames()

Description

Emit visible names into a hashed accelerator table section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:506

void emitAccelNamespaces()

Description

Emit namespace dies into a hashed accelerator table.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:513

void emitAccelObjC()

Description

Emit objective C classes and categories into a hashed accelerator table section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:510

void emitAccelTypes()

Description

Emit type dies into a hashed accelerator table.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:516

void emitDebugARanges()

Description

Emit address ranges into a debug aranges section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:537

void emitDebugAbbrevDWO()

Description

Emit the debug abbrev dwo section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:575

void emitDebugAddr()

Description

Emit DWO addresses.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:587

bool emitDebugEntryValues() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:747

void emitDebugInfo()

Description

Emit the debug info section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:490

void emitDebugInfoDWO()

Description

Emit the debug info dwo section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:572

void emitDebugLineDWO()

Description

Emit the debug line dwo section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:578

void emitDebugLoc()

Description

Emit variable locations into a debug loc section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:529

void emitDebugLocDWO()

Description

Emit variable locations into a debug loc dwo section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:532

void emitDebugLocEntry(
    llvm::ByteStreamer& Streamer,
    const DebugLocStream::Entry& Entry,
    const llvm::DwarfCompileUnit* CU)

Description

Emit an entry for the debug loc section. This can be used to handle an entry that's going to be emitted into the debug loc section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:778

Parameters

llvm::ByteStreamer& Streamer
const DebugLocStream::Entry& Entry
const llvm::DwarfCompileUnit* CU

void emitDebugLocEntryLocation(
    const DebugLocStream::Entry& Entry,
    const llvm::DwarfCompileUnit* CU)

Description

Emit the location for a debug loc entry, including the size header.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:783

Parameters

const DebugLocStream::Entry& Entry
const llvm::DwarfCompileUnit* CU

void emitDebugLocImpl(llvm::MCSection* Sec)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:534

Parameters

llvm::MCSection* Sec

static void emitDebugLocValue(
    const llvm::AsmPrinter& AP,
    const llvm::DIBasicType* BT,
    const llvm::DbgValueLoc& Value,
    llvm::DwarfExpression& DwarfExpr)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:836

Parameters

const llvm::AsmPrinter& AP
const llvm::DIBasicType* BT
const llvm::DbgValueLoc& Value
llvm::DwarfExpression& DwarfExpr

void emitDebugMacinfo()

Description

Emit macros into a debug macinfo section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:545

void emitDebugMacinfoDWO()

Description

Emit macros into a debug macinfo.dwo section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:547

void emitDebugMacinfoImpl(
    llvm::MCSection* Section)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:548

Parameters

llvm::MCSection* Section

void emitDebugPubSection(
    bool GnuStyle,
    llvm::StringRef Name,
    llvm::DwarfCompileUnit* TheU,
    const StringMap<const llvm::DIE*>& Globals)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:521

Parameters

bool GnuStyle
llvm::StringRef Name
llvm::DwarfCompileUnit* TheU
const StringMap<const llvm::DIE*>& Globals

void emitDebugPubSections()

Description

Emit visible names and types into debug pubnames and pubtypes sections.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:519

void emitDebugRanges()

Description

Emit address ranges into a debug ranges section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:540

void emitDebugRangesDWO()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:541

void emitDebugRangesImpl(
    const llvm::DwarfFile& Holder,
    llvm::MCSection* Section)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:542

Parameters

const llvm::DwarfFile& Holder
llvm::MCSection* Section

void emitDebugStr()

Description

Emit null-terminated strings into a debug str section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:526

void emitDebugStrDWO()

Description

Emit the debug str dwo section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:584

llvm::DebugLoc emitInitialLocDirective(
    const llvm::MachineFunction& MF,
    unsigned int CUID)

Description

Emits inital debug location directive.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:655

Parameters

const llvm::MachineFunction& MF
unsigned int CUID

void emitMacro(llvm::DIMacro& M)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:549

Parameters

llvm::DIMacro& M

void emitMacroFile(llvm::DIMacroFile& F,
                   llvm::DwarfCompileUnit& U)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:550

Parameters

llvm::DIMacroFile& F
llvm::DwarfCompileUnit& U

void emitMacroFileImpl(
    llvm::DIMacroFile& F,
    llvm::DwarfCompileUnit& U,
    unsigned int StartFile,
    unsigned int EndFile,
    llvm::StringRef (*)(unsigned int)
        MacroFormToString)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:551

Parameters

llvm::DIMacroFile& F
llvm::DwarfCompileUnit& U
unsigned int StartFile
unsigned int EndFile
llvm::StringRef (*)(unsigned int) MacroFormToString

void emitSectionReference(
    const llvm::DwarfCompileUnit& CU)

Description

Emit the reference to the section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:625

Parameters

const llvm::DwarfCompileUnit& CU

void emitStringOffsetsTableHeader()

Description

Emit the string offsets table header.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:496

void emitStringOffsetsTableHeaderDWO()

Description

Emit the dwo stringoffsets table header.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:581

void endFunctionImpl(
    const llvm::MachineFunction* MF)

Description

Gather and emit post-function debug information.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:632

Parameters

const llvm::MachineFunction* MF

void endModule()

Description

Emit all Dwarf sections that should come after the content.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:652

void ensureAbstractEntityIsCreated(
    llvm::DwarfCompileUnit& CU,
    const llvm::DINode* Node,
    const llvm::MDNode* Scope)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:457

Parameters

llvm::DwarfCompileUnit& CU
const llvm::DINode* Node
const llvm::MDNode* Scope

void ensureAbstractEntityIsCreatedIfScoped(
    llvm::DwarfCompileUnit& CU,
    const llvm::DINode* Node,
    const llvm::MDNode* Scope)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:460

Parameters

llvm::DwarfCompileUnit& CU
const llvm::DINode* Node
const llvm::MDNode* Scope

void finalizeModuleInfo()

Description

Finish off debug information after all functions have been processed.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:487

void finishEntityDefinitions()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:481

void finishSubprogramDefinitions()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:483

void finishUnitAttributes(
    const llvm::DICompileUnit* DIUnit,
    llvm::DwarfCompileUnit& NewCU)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:596

Parameters

const llvm::DICompileUnit* DIUnit
llvm::DwarfCompileUnit& NewCU

bool generateTypeUnits() const

Description

Returns whether to generate DWARF v4 type units.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:722

llvm::AccelTableKind getAccelTableKind() const

Description

Returns what kind (if any) of accelerator tables to emit.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:727

llvm::AddressPool& getAddressPool()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:789

const llvm::MachineFunction* getCurrentFunction()
    const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:801

const llvm::DebugLocStream& getDebugLocs() const

Description

Returns the entries for the .debug_loc section.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:774

unsigned int getDwarfCompileUnitIDForLineTable(
    const llvm::DwarfCompileUnit& CU)

Description

Get Dwarf compile unit ID for line table.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:635

Parameters

const llvm::DwarfCompileUnit& CU

dwarf::Form getDwarfSectionOffsetForm() const

Description

Returns a suitable DWARF form to represent a section offset, i.e. * DW_FORM_sec_offset for DWARF version >= 4; * DW_FORM_data8 for 64-bit DWARFv3; * DW_FORM_data4 for 32-bit DWARFv3 and DWARFv2.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:764

uint16_t getDwarfVersion() const

Description

Returns the Dwarf Version.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:758

llvm::MCDwarfDwoLineTable* getDwoLineTable(
    const llvm::DwarfCompileUnit&)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:449

Parameters

const llvm::DwarfCompileUnit&

Optional<MD5::MD5Result> getMD5AsBytes(
    const llvm::DIFile* File) const

Description

If the \p File has an MD5 checksum, return it as an MD5Result allocated in the MCContext.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:842

Parameters

const llvm::DIFile* File

llvm::DwarfCompileUnit&
getOrCreateDwarfCompileUnit(
    const llvm::DICompileUnit* DIUnit)

Description

Create new DwarfCompileUnit for the given metadata node with tag DW_TAG_compile_unit.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:595

Parameters

const llvm::DICompileUnit* DIUnit

const llvm::DwarfCompileUnit* getPrevCU() const

Description

Returns the previous CU that was being updated

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:767

const llvm::MCSymbol* getSectionLabel(
    const llvm::MCSection* S)

Description

@ }

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:833

Parameters

const llvm::MCSection* S

unsigned int getStringTypeLoc(
    const llvm::DIStringType* ST) const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:813

Parameters

const llvm::DIStringType* ST

const SmallVectorImpl<
    std::unique_ptr<DwarfCompileUnit>>&
getUnits()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:451

void handleMacroNodes(
    llvm::DIMacroNodeArray Nodes,
    llvm::DwarfCompileUnit& U)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:554

Parameters

llvm::DIMacroNodeArray Nodes
llvm::DwarfCompileUnit& U

void initSkeletonUnit(
    const llvm::DwarfUnit& U,
    llvm::DIE& Die,
    std::unique_ptr<DwarfCompileUnit> NewU)

Description

Initialize common features of skeleton units.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:559

Parameters

const llvm::DwarfUnit& U
llvm::DIE& Die
std::unique_ptr<DwarfCompileUnit> NewU

void insertSectionLabel(const llvm::MCSymbol* S)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:834

Parameters

const llvm::MCSymbol* S

bool isLexicalScopeDIENull(
    llvm::LexicalScope* Scope)

Description

A helper function to check whether the DIE for a given Scope is going to be null.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:805

Parameters

llvm::LexicalScope* Scope

const llvm::DwarfCompileUnit* lookupCU(
    const llvm::DIE* Die) const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:809

Parameters

const llvm::DIE* Die

llvm::DwarfCompileUnit* lookupCU(
    const llvm::DIE* Die)

Description

Find the matching DwarfCompileUnit for the given CU DIE.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:808

Parameters

const llvm::DIE* Die

static uint64_t makeTypeSignature(
    llvm::StringRef Identifier)

Description

Perform an MD5 checksum of \p Identifier and return the lower 64 bits.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:661

Parameters

llvm::StringRef Identifier

void recordSourceLine(unsigned int Line,
                      unsigned int Col,
                      const llvm::MDNode* Scope,
                      unsigned int Flags)

Description

Register a source line with debug info. Returns the unique label that was emitted and which provides correspondence to the source line list.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:606

Parameters

unsigned int Line
unsigned int Col
const llvm::MDNode* Scope
unsigned int Flags

void setPrevCU(
    const llvm::DwarfCompileUnit* PrevCU)

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:768

Parameters

const llvm::DwarfCompileUnit* PrevCU

void setSymbolSize(const llvm::MCSymbol* Sym,
                   uint64_t Size)

Description

For symbols that have a size designated (e.g. common symbols), this tracks that size.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:673

Parameters

const llvm::MCSymbol* Sym
uint64_t Size

bool shareAcrossDWOCUs() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:755

void skippedNonDebugFunction()

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:637

void terminateLineTable(
    const llvm::DwarfCompileUnit* CU)

Description

Terminate the line table by adding the last range label.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:771

Parameters

const llvm::DwarfCompileUnit* CU

bool tuneForDBX() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:830

bool tuneForGDB() const

Description

Returns whether we are "tuning" for a given debugger. @ {

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:827

bool tuneForLLDB() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:828

bool tuneForSCE() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:829

bool useAddrOffsetExpressions() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:703

bool useAddrOffsetForm() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:709

bool useAllLinkageNames() const

Description

Returns whether we should emit all DW_AT_[MIPS_]linkage_name. If not, we still might emit certain cases.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:679

bool useAppleExtensionAttributes() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:729

bool useDWARF2Bitfields() const

Description

Returns whether to use the DWARF2 format for bitfields instyead of the DWARF4 format.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:687

bool useGNUTLSOpcode() const

Description

Returns whether to use DW_OP_GNU_push_tls_address, instead of the standard DW_OP_form_tls_address opcode

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:683

bool useInlineStrings() const

Description

Returns whether to use inline strings.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:690

bool useLocSection() const

Description

Returns whether .debug_loc section should be emitted.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:719

bool useOpConvert() const

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:751

bool useRangesSection() const

Description

Returns whether ranges section should be emitted.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:693

bool useSectionsAsReferences() const

Description

Returns whether to use sections as labels rather than temp symbols.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:714

bool useSegmentedStringOffsetsTable() const

Description

Returns whether to generate a string offsets table with (possibly shared) contributions from each CU and type unit. This implies the use of DW_FORM_strx* indirect references with DWARF v5 and beyond. Note that DW_FORM_GNU_str_index is also an indirect reference, but it is used with a pre-DWARF v5 implementation of split DWARF sections, which uses a monolithic string offsets table.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:743

bool useSplitDwarf() const

Description

Returns whether or not to change the current debug info for the split dwarf proposal support.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:735

~DwarfDebug()

Description

Pin vtable to this file.

Declared at: llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h:645