class DwarfEmitter

Declaration

class DwarfEmitter { /* full declaration omitted */ };

Description

DwarfEmitter presents interface to generate all debug info tables.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:85

Method Overview

  • public virtual void emitAbbrevs(const std::vector<std::unique_ptr<DIEAbbrev>> & Abbrevs, unsigned int DwarfVersion)
  • public virtual void emitAppleNames(AccelTable<llvm::AppleAccelTableStaticOffsetData> & Table)
  • public virtual void emitAppleNamespaces(AccelTable<llvm::AppleAccelTableStaticOffsetData> & Table)
  • public virtual void emitAppleObjc(AccelTable<llvm::AppleAccelTableStaticOffsetData> & Table)
  • public virtual void emitAppleTypes(AccelTable<llvm::AppleAccelTableStaticTypeData> & Table)
  • public virtual void emitCIE(llvm::StringRef CIEBytes)
  • public virtual void emitCompileUnitHeader(llvm::CompileUnit & Unit, unsigned int DwarfVersion)
  • public virtual void emitDIE(llvm::DIE & Die)
  • public virtual void emitDebugNames(AccelTable<llvm::DWARF5AccelTableStaticData> & Table)
  • public virtual void emitFDE(uint32_t CIEOffset, uint32_t AddreSize, uint32_t Address, llvm::StringRef Bytes)
  • public virtual void emitLineTableForUnit(llvm::MCDwarfLineTableParams Params, llvm::StringRef PrologueBytes, unsigned int MinInstLength, std::vector<DWARFDebugLine::Row> & Rows, unsigned int AdddressSize)
  • public virtual void emitLocationsForUnit(const llvm::CompileUnit & Unit, llvm::DWARFContext & Dwarf, std::function<void (StringRef, SmallVectorImpl<uint8_t> &)> ProcessExpr)
  • public virtual void emitPaperTrailWarningsDie(llvm::DIE & Die)
  • public virtual void emitPubNamesForUnit(const llvm::CompileUnit & Unit)
  • public virtual void emitPubTypesForUnit(const llvm::CompileUnit & Unit)
  • public virtual void emitRangesEntries(int64_t UnitPcOffset, uint64_t OrigLowPc, Optional<std::pair<AddressRange, int64_t>> FuncRange, const std::vector<DWARFDebugRangeList::RangeListEntry> & Entries, unsigned int AddressSize)
  • public virtual void emitSectionContents(llvm::StringRef SecData, llvm::StringRef SecName)
  • public virtual void emitStrings(const llvm::NonRelocatableStringpool & Pool)
  • public virtual void emitUnitRangesEntries(llvm::CompileUnit & Unit, bool DoRangesSection)
  • public virtual uint64_t getDebugInfoSectionSize() const
  • public virtual uint64_t getFrameSectionSize() const
  • public virtual uint64_t getLineSectionSize() const
  • public virtual uint64_t getRangesSectionSize() const
  • public virtual void translateLineTable(llvm::DataExtractor LineData, uint64_t Offset)
  • public virtual ~DwarfEmitter()

Methods

virtual void emitAbbrevs(
    const std::vector<std::unique_ptr<DIEAbbrev>>&
        Abbrevs,
    unsigned int DwarfVersion)

Description

Emit the abbreviation table \p Abbrevs to the .debug_abbrev section.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:97

Parameters

const std::vector<std::unique_ptr<DIEAbbrev>>& Abbrevs
unsigned int DwarfVersion

virtual void emitAppleNames(
    AccelTable<
        llvm::AppleAccelTableStaticOffsetData>&
        Table)

Description

Emit Apple names accelerator table.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:113

Parameters

AccelTable<llvm::AppleAccelTableStaticOffsetData>& Table

virtual void emitAppleNamespaces(
    AccelTable<
        llvm::AppleAccelTableStaticOffsetData>&
        Table)

Description

Emit Apple namespaces accelerator table.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:109

Parameters

AccelTable<llvm::AppleAccelTableStaticOffsetData>& Table

virtual void emitAppleObjc(
    AccelTable<
        llvm::AppleAccelTableStaticOffsetData>&
        Table)

Description

Emit Apple Objective-C accelerator table.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:117

Parameters

AccelTable<llvm::AppleAccelTableStaticOffsetData>& Table

virtual void emitAppleTypes(
    AccelTable<
        llvm::AppleAccelTableStaticTypeData>&
        Table)

Description

Emit Apple type accelerator table.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:121

Parameters

AccelTable<llvm::AppleAccelTableStaticTypeData>& Table

virtual void emitCIE(llvm::StringRef CIEBytes)

Description

Emit a CIE.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:155

Parameters

llvm::StringRef CIEBytes

virtual void emitCompileUnitHeader(
    llvm::CompileUnit& Unit,
    unsigned int DwarfVersion)

Description

Emit the compilation unit header for \p Unit in the .debug_info section. As a side effect, this also switches the current Dwarf version of the MC layer to the one of U.getOrigUnit().

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:174

Parameters

llvm::CompileUnit& Unit
unsigned int DwarfVersion

virtual void emitDIE(llvm::DIE& Die)

Description

Recursively emit the DIE tree rooted at \p Die.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:178

Parameters

llvm::DIE& Die

virtual void emitDebugNames(
    AccelTable<llvm::DWARF5AccelTableStaticData>&
        Table)

Description

Emit DWARF debug names.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:105

Parameters

AccelTable<llvm::DWARF5AccelTableStaticData>& Table

virtual void emitFDE(uint32_t CIEOffset,
                     uint32_t AddreSize,
                     uint32_t Address,
                     llvm::StringRef Bytes)

Description

Emit an FDE with data \p Bytes.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:158

Parameters

uint32_t CIEOffset
uint32_t AddreSize
uint32_t Address
llvm::StringRef Bytes

virtual void emitLineTableForUnit(
    llvm::MCDwarfLineTableParams Params,
    llvm::StringRef PrologueBytes,
    unsigned int MinInstLength,
    std::vector<DWARFDebugLine::Row>& Rows,
    unsigned int AdddressSize)

Description

Emit the line table described in \p Rows into the .debug_line section.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:142

Parameters

llvm::MCDwarfLineTableParams Params
llvm::StringRef PrologueBytes
unsigned int MinInstLength
std::vector<DWARFDebugLine::Row>& Rows
unsigned int AdddressSize

virtual void emitLocationsForUnit(
    const llvm::CompileUnit& Unit,
    llvm::DWARFContext& Dwarf,
    std::function<void(StringRef,
                       SmallVectorImpl<uint8_t>&)>
        ProcessExpr)

Description

Emit the .debug_loc contribution for \p Unit by copying the entries from\p Dwarf and offsetting them. Update the location attributes to point to the new entries.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:164

Parameters

const llvm::CompileUnit& Unit
llvm::DWARFContext& Dwarf
std::function<void(StringRef, SmallVectorImpl<uint8_t>&)> ProcessExpr

virtual void emitPaperTrailWarningsDie(
    llvm::DIE& Die)

Description

Emit DIE containing warnings.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:90

Parameters

llvm::DIE& Die

virtual void emitPubNamesForUnit(
    const llvm::CompileUnit& Unit)

Description

Emit the .debug_pubnames contribution for \p Unit.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:149

Parameters

const llvm::CompileUnit& Unit

virtual void emitPubTypesForUnit(
    const llvm::CompileUnit& Unit)

Description

Emit the .debug_pubtypes contribution for \p Unit.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:152

Parameters

const llvm::CompileUnit& Unit

virtual void emitRangesEntries(
    int64_t UnitPcOffset,
    uint64_t OrigLowPc,
    Optional<std::pair<AddressRange, int64_t>>
        FuncRange,
    const std::vector<
        DWARFDebugRangeList::RangeListEntry>&
        Entries,
    unsigned int AddressSize)

Description

Emit .debug_ranges for \p FuncRange by translating the original \p Entries.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:125

Parameters

int64_t UnitPcOffset
uint64_t OrigLowPc
Optional<std::pair<AddressRange, int64_t>> FuncRange
const std::vector< DWARFDebugRangeList::RangeListEntry>& Entries
unsigned int AddressSize

virtual void emitSectionContents(
    llvm::StringRef SecData,
    llvm::StringRef SecName)

Description

Emit section named SecName with data SecData.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:93

Parameters

llvm::StringRef SecData
llvm::StringRef SecName

virtual void emitStrings(
    const llvm::NonRelocatableStringpool& Pool)

Description

Emit the string table described by \p Pool.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:101

Parameters

const llvm::NonRelocatableStringpool& Pool

virtual void emitUnitRangesEntries(
    llvm::CompileUnit& Unit,
    bool DoRangesSection)

Description

Emit .debug_aranges entries for \p Unit and if \p DoRangesSection is true, also emit the .debug_ranges entries for the DW_TAG_compile_unit's DW_AT_ranges attribute.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:134

Parameters

llvm::CompileUnit& Unit
bool DoRangesSection

virtual uint64_t getDebugInfoSectionSize() const

Description

Returns size of generated .debug_info section.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:190

virtual uint64_t getFrameSectionSize() const

Description

Returns size of generated .debug_frame section.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:184

virtual uint64_t getLineSectionSize() const

Description

Returns size of generated .debug_line section.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:181

virtual uint64_t getRangesSectionSize() const

Description

Returns size of generated .debug_ranges section.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:187

virtual void translateLineTable(
    llvm::DataExtractor LineData,
    uint64_t Offset)

Description

Copy the .debug_line over to the updated binary while unobfuscating the file names and directories.

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:139

Parameters

llvm::DataExtractor LineData
uint64_t Offset

virtual ~DwarfEmitter()

Declared at: llvm/include/llvm/DWARFLinker/DWARFLinker.h:87