LLVM: llvm::dwarf Namespace Reference (original) (raw)

Calculates the starting offsets for various sections within the .debug_names section. More...

Classes
class CFIProgram
Represent a sequence of Call Frame Information instructions that, when read in order, construct a table mapping PC to frame state. More...
class CIE
DWARF Common Information Entry (CIE) More...
struct EnumTraits
struct EnumTraits< Attribute >
struct EnumTraits< Form >
struct EnumTraits< Index >
struct EnumTraits< LineNumberOps >
struct EnumTraits< LocationAtom >
struct EnumTraits< Tag >
class FDE
DWARF Frame Description Entry (FDE) More...
struct FormParams
A helper struct providing information about the byte size of DW_FORM values that vary in size depending on the DWARF version, address byte size, or DWARF32/DWARF64. More...
class FrameEntry
An entry in either debug_frame or eh_frame. More...
struct PubIndexEntryDescriptor
Describes an entry of the various gnu_pub* debug sections. More...
class RegisterLocations
A class that can track all registers with locations in a UnwindRow object. More...
class UnwindLocation
A class that represents a location for the Call Frame Address (CFA) or a register. More...
class UnwindRow
A class that represents a single row in the unwind table that is decoded by parsing the DWARF Call Frame Information opcodes. More...
class UnwindTable
A class that contains all UnwindRow objects for an FDE or a single unwind row for a CIE. More...
Enumerations
enum LLVMConstants : uint32_t { DW_TAG_invalid = ~0U , DW_VIRTUALITY_invalid = ~0U , DW_MACINFO_invalid = ~0U , DW_APPLE_ENUM_KIND_invalid = ~0U , DW_LENGTH_lo_reserved = 0xfffffff0 , DW_LENGTH_DWARF64 = 0xffffffff , DW_LENGTH_hi_reserved = 0xffffffff , DWARF_VERSION = 4 , DW_PUBTYPES_VERSION = 2 , DW_PUBNAMES_VERSION = 2 , DW_ARANGES_VERSION = 2 , DWARF_VENDOR_DWARF = 0 , DWARF_VENDOR_APPLE = 1 , DWARF_VENDOR_BORLAND = 2 , DWARF_VENDOR_GNU = 3 , DWARF_VENDOR_GOOGLE = 4 , DWARF_VENDOR_LLVM = 5 , DWARF_VENDOR_MIPS = 6 , DWARF_VENDOR_WASM = 7 , DWARF_VENDOR_ALTIUM, DWARF_VENDOR_COMPAQ, DWARF_VENDOR_GHS, DWARF_VENDOR_GO, DWARF_VENDOR_HP, DWARF_VENDOR_IBM, DWARF_VENDOR_INTEL, DWARF_VENDOR_PGI, DWARF_VENDOR_SUN, DWARF_VENDOR_UPC }
enum DwarfFormat : uint8_t { DWARF32, DWARF64 }
Constants that define the DWARF format as 32 or 64 bit. More...
enum Tag : uint16_t { DW_TAG_lo_user = 0x4080 , DW_TAG_hi_user = 0xffff , DW_TAG_user_base = 0x1000 }
enum Attribute : uint16_t { DW_AT_lo_user = 0x2000 , DW_AT_hi_user = 0x3fff }
Attributes. More...
enum Form : uint16_t { DW_FORM_lo_user = 0x1f00 }
enum LocationAtom { DW_OP_lo_user = 0xe0 , DW_OP_hi_user = 0xff , DW_OP_LLVM_fragment = 0x1000 , DW_OP_LLVM_convert = 0x1001 , DW_OP_LLVM_tag_offset = 0x1002 , DW_OP_LLVM_entry_value = 0x1003 , DW_OP_LLVM_implicit_pointer = 0x1004 , DW_OP_LLVM_arg = 0x1005 , DW_OP_LLVM_extract_bits_sext = 0x1006 , DW_OP_LLVM_extract_bits_zext = 0x1007 }
enum LlvmUserLocationAtom
enum TypeKind : uint8_t { DW_ATE_lo_user = 0x80 , DW_ATE_hi_user = 0xff }
enum DecimalSignEncoding { DW_DS_unsigned = 0x01 , DW_DS_leading_overpunch = 0x02 , DW_DS_trailing_overpunch = 0x03 , DW_DS_leading_separate = 0x04 , DW_DS_trailing_separate = 0x05 }
enum EndianityEncoding { DW_END_lo_user = 0x40 , DW_END_hi_user = 0xff }
enum AccessAttribute { DW_ACCESS_public = 0x01 , DW_ACCESS_protected = 0x02 , DW_ACCESS_private = 0x03 }
enum VisibilityAttribute { DW_VIS_local = 0x01 , DW_VIS_exported = 0x02 , DW_VIS_qualified = 0x03 }
enum VirtualityAttribute { DW_VIRTUALITY_max = 0x02 }
enum EnumKindAttribute { DW_APPLE_ENUM_KIND_max = 0x01 }
enum DefaultedMemberAttribute { DW_DEFAULTED_max = 0x02 }
enum SourceLanguage { DW_LANG_lo_user = 0x8000 , DW_LANG_hi_user = 0xffff }
enum SourceLanguageName : uint16_t
enum CaseSensitivity { DW_ID_case_sensitive = 0x00 , DW_ID_up_case = 0x01 , DW_ID_down_case = 0x02 , DW_ID_case_insensitive = 0x03 }
enum CallingConvention { DW_CC_lo_user = 0x40 , DW_CC_hi_user = 0xff }
enum AddressSpace
enum InlineAttribute { DW_INL_not_inlined = 0x00 , DW_INL_inlined = 0x01 , DW_INL_declared_not_inlined = 0x02 , DW_INL_declared_inlined = 0x03 }
enum ArrayDimensionOrdering { DW_ORD_row_major = 0x00 , DW_ORD_col_major = 0x01 }
enum DiscriminantList { DW_DSC_label = 0x00 , DW_DSC_range = 0x01 }
enum LineNumberOps : uint8_t
Line Number Standard Opcode Encodings. More...
enum LineNumberExtendedOps { DW_LNE_lo_user = 0x80 , DW_LNE_hi_user = 0xff }
Line Number Extended Opcode Encodings. More...
enum LineNumberEntryFormat { DW_LNCT_lo_user = 0x2000 , DW_LNCT_hi_user = 0x3fff }
enum MacinfoRecordType { DW_MACINFO_define = 0x01 , DW_MACINFO_undef = 0x02 , DW_MACINFO_start_file = 0x03 , DW_MACINFO_end_file = 0x04 , DW_MACINFO_vendor_ext = 0xff }
enum MacroEntryType { DW_MACRO_lo_user = 0xe0 , DW_MACRO_hi_user = 0xff }
DWARF v5 macro information entry type encodings. More...
enum GnuMacroEntryType { DW_MACRO_GNU_lo_user = 0xe0 , DW_MACRO_GNU_hi_user = 0xff }
GNU .debug_macro macro information entry type encodings. More...
enum RnglistEntries
DWARF v5 range list entry encoding values. More...
enum LoclistEntries
DWARF v5 loc list entry encoding values. More...
enum CallFrameInfo { DW_CFA_extended = 0x00 , DW_CFA_lo_user = 0x1c , DW_CFA_hi_user = 0x3f }
Call frame instruction encodings. More...
enum Constants { DW_CHILDREN_no = 0x00 , DW_CHILDREN_yes = 0x01 , DW_EH_PE_absptr = 0x00 , DW_EH_PE_omit = 0xff , DW_EH_PE_uleb128 = 0x01 , DW_EH_PE_udata2 = 0x02 , DW_EH_PE_udata4 = 0x03 , DW_EH_PE_udata8 = 0x04 , DW_EH_PE_sleb128 = 0x09 , DW_EH_PE_sdata2 = 0x0A , DW_EH_PE_sdata4 = 0x0B , DW_EH_PE_sdata8 = 0x0C , DW_EH_PE_signed = 0x08 , DW_EH_PE_pcrel = 0x10 , DW_EH_PE_textrel = 0x20 , DW_EH_PE_datarel = 0x30 , DW_EH_PE_funcrel = 0x40 , DW_EH_PE_aligned = 0x50 , DW_EH_PE_indirect = 0x80 }
enum ApplePropertyAttributes
Constants for the DW_APPLE_PROPERTY_attributes attribute. More...
enum UnitType : unsigned char { DW_UT_lo_user = 0x80 , DW_UT_hi_user = 0xff }
Constants for unit types in DWARF v5. More...
enum Index { DW_IDX_lo_user = 0x2000 , DW_IDX_hi_user = 0x3fff }
enum AcceleratorTable { DW_ATOM_null = 0u , DW_ATOM_die_offset = 1u , DW_ATOM_cu_offset = 2u , DW_ATOM_die_tag = 3u , DW_ATOM_type_flags = 4u , DW_ATOM_type_type_flags = 5u , DW_ATOM_qual_name_hash = 6u , DW_FLAG_type_implementation = 2u , DW_hash_function_djb = 0u }
enum GDBIndexEntryKind { GIEK_NONE, GIEK_TYPE, GIEK_VARIABLE, GIEK_FUNCTION, GIEK_OTHER, GIEK_UNUSED5, GIEK_UNUSED6, GIEK_UNUSED7 }
enum GDBIndexEntryLinkage { GIEL_EXTERNAL, GIEL_STATIC }
Functions
bool isType (Tag T)
std::optional< SourceLanguage > toDW_LANG (SourceLanguageName name, uint32_t version)
Convert a DWARF 6 pair of language name and version to a DWARF 5 DW_LANG.
std::optional< std::pair< SourceLanguageName, uint32_t > > toDW_LNAME (SourceLanguage language)
Convert a DWARF 5 DW_LANG to a DWARF 6 pair of language name and version.
LLVM_ABI llvm::StringRef LanguageDescription (SourceLanguageName name)
Returns a version-independent language name.
LLVM_ABI llvm::StringRef LanguageDescription (SourceLanguageName Name, uint32_t Version)
Returns a language name corresponding to the specified version.
bool isCPlusPlus (SourceLanguage S)
bool isFortran (SourceLanguage S)
bool isC (SourceLanguage S)
TypeKind getArrayIndexTypeEncoding (SourceLanguage S)
bool isUnitType (uint8_t UnitType)
bool isUnitType (dwarf::Tag T)
uint32_t getDebugNamesBucketCount (uint32_t UniqueHashCount)
LLVM_ABI StringRef TagString (unsigned Tag)
LLVM_ABI StringRef ChildrenString (unsigned Children)
LLVM_ABI StringRef AttributeString (unsigned Attribute)
LLVM_ABI StringRef FormEncodingString (unsigned Encoding)
LLVM_ABI StringRef OperationEncodingString (unsigned Encoding)
LLVM_ABI StringRef SubOperationEncodingString (unsigned OpEncoding, unsigned SubOpEncoding)
LLVM_ABI StringRef AttributeEncodingString (unsigned Encoding)
LLVM_ABI StringRef DecimalSignString (unsigned Sign)
LLVM_ABI StringRef EndianityString (unsigned Endian)
LLVM_ABI StringRef AccessibilityString (unsigned Access)
LLVM_ABI StringRef DefaultedMemberString (unsigned DefaultedEncodings)
LLVM_ABI StringRef VisibilityString (unsigned Visibility)
LLVM_ABI StringRef VirtualityString (unsigned Virtuality)
LLVM_ABI StringRef EnumKindString (unsigned EnumKind)
LLVM_ABI StringRef LanguageString (unsigned Language)
LLVM_ABI StringRef SourceLanguageNameString (SourceLanguageName Lang)
LLVM_ABI StringRef CaseString (unsigned Case)
LLVM_ABI StringRef ConventionString (unsigned Convention)
LLVM_ABI StringRef InlineCodeString (unsigned Code)
LLVM_ABI StringRef ArrayOrderString (unsigned Order)
LLVM_ABI StringRef LNStandardString (unsigned Standard)
LLVM_ABI StringRef LNExtendedString (unsigned Encoding)
LLVM_ABI StringRef MacinfoString (unsigned Encoding)
LLVM_ABI StringRef MacroString (unsigned Encoding)
LLVM_ABI StringRef GnuMacroString (unsigned Encoding)
LLVM_ABI StringRef RangeListEncodingString (unsigned Encoding)
LLVM_ABI StringRef LocListEncodingString (unsigned Encoding)
LLVM_ABI StringRef CallFrameString (unsigned Encoding, Triple::ArchType Arch)
LLVM_ABI StringRef ApplePropertyString (unsigned)
LLVM_ABI StringRef UnitTypeString (unsigned)
LLVM_ABI StringRef AtomTypeString (unsigned Atom)
LLVM_ABI StringRef GDBIndexEntryKindString (GDBIndexEntryKind Kind)
LLVM_ABI StringRef GDBIndexEntryLinkageString (GDBIndexEntryLinkage Linkage)
LLVM_ABI StringRef IndexString (unsigned Idx)
LLVM_ABI StringRef FormatString (DwarfFormat Format)
LLVM_ABI StringRef FormatString (bool IsDWARF64)
LLVM_ABI StringRef RLEString (unsigned RLE)
LLVM_ABI StringRef AddressSpaceString (unsigned AS, const llvm::Triple &TT)
LLVM_ABI unsigned getTag (StringRef TagString)
LLVM_ABI unsigned getOperationEncoding (StringRef OperationEncodingString)
LLVM_ABI unsigned getSubOperationEncoding (unsigned OpEncoding, StringRef SubOperationEncodingString)
LLVM_ABI unsigned getVirtuality (StringRef VirtualityString)
LLVM_ABI unsigned getEnumKind (StringRef EnumKindString)
LLVM_ABI unsigned getLanguage (StringRef LanguageString)
LLVM_ABI unsigned getSourceLanguageName (StringRef SourceLanguageNameString)
LLVM_ABI unsigned getCallingConvention (StringRef LanguageString)
LLVM_ABI unsigned getAttributeEncoding (StringRef EncodingString)
LLVM_ABI unsigned getMacinfo (StringRef MacinfoString)
LLVM_ABI unsigned getMacro (StringRef MacroString)
LLVM_ABI unsigned TagVersion (Tag T)
LLVM_ABI unsigned AttributeVersion (Attribute A)
LLVM_ABI unsigned FormVersion (Form F)
LLVM_ABI unsigned OperationVersion (LocationAtom O)
LLVM_ABI unsigned AttributeEncodingVersion (TypeKind E)
LLVM_ABI unsigned LanguageVersion (SourceLanguage L)
LLVM_ABI unsigned TagVendor (Tag T)
LLVM_ABI unsigned AttributeVendor (Attribute A)
LLVM_ABI unsigned FormVendor (Form F)
LLVM_ABI unsigned OperationVendor (LocationAtom O)
LLVM_ABI unsigned AttributeEncodingVendor (TypeKind E)
LLVM_ABI unsigned LanguageVendor (SourceLanguage L)
LLVM_ABI std::optional< unsigned > OperationOperands (LocationAtom O)
The number of operands for the given LocationAtom.
LLVM_ABI std::optional< unsigned > OperationArity (LocationAtom O)
The arity of the given LocationAtom.
LLVM_ABI std::optional< unsigned > LanguageLowerBound (SourceLanguage L)
uint8_t getDwarfOffsetByteSize (DwarfFormat Format)
The size of a reference determined by the DWARF 32/64-bit format.
uint8_t getUnitLengthFieldByteSize (DwarfFormat Format)
Get the byte size of the unit length field depending on the DWARF format.
LLVM_ABI std::optional< uint8_t > getFixedFormByteSize (dwarf::Form Form, FormParams Params)
Get the fixed byte size for a given form.
LLVM_ABI bool isValidFormForVersion (Form F, unsigned Version, bool ExtensionsOk=true)
Tells whether the specified form is defined in the specified version, or is an extension if extensions are allowed.
LLVM_ABI StringRef AttributeValueString (uint16_t Attr, unsigned Val)
Returns the symbolic string representing Val when used as a value for attribute Attr.
LLVM_ABI StringRef AtomValueString (uint16_t Atom, unsigned Val)
Returns the symbolic string representing Val when used as a value for atom Atom.
uint64_t computeTombstoneAddress (uint8_t AddressByteSize)
LLVM_ABI DWARFDebugNames::DWARFDebugNamesOffsets findDebugNamesOffsets (uint64_t EndOfHeaderOffset, const DWARFDebugNames::Header &Hdr)
LLVM_ABI void printCFIProgram (const CFIProgram &P, raw_ostream &OS, const DIDumpOptions &DumpOpts, unsigned IndentLevel, std::optional< uint64_t > Address)
LLVM_ABI Expected< UnwindTable > createUnwindTable (const CIE *Cie)
Create an UnwindTable from a Common Information Entry (CIE).
LLVM_ABI Expected< UnwindTable > createUnwindTable (const FDE *Fde)
Create an UnwindTable from a Frame Descriptor Entry (FDE).
std::optional< const char * > toString (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract a string value from it.
StringRef toStringRef (const std::optional< DWARFFormValue > &V, StringRef Default={})
Take an optional DWARFFormValue and try to extract a string value from it.
const char * toString (const std::optional< DWARFFormValue > &V, const char *Default)
Take an optional DWARFFormValue and extract a string value from it.
std::optional< uint64_t > toUnsigned (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract an unsigned constant.
uint64_t toUnsigned (const std::optional< DWARFFormValue > &V, uint64_t Default)
Take an optional DWARFFormValue and extract a unsigned constant.
std::optional< uint64_t > toRelativeReference (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract a relative offset reference.
uint64_t toRelativeReference (const std::optional< DWARFFormValue > &V, uint64_t Default)
Take an optional DWARFFormValue and extract a relative offset reference.
std::optional< uint64_t > toDebugInfoReference (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract an absolute debug info offset reference.
uint64_t toDebugInfoReference (const std::optional< DWARFFormValue > &V, uint64_t Default)
Take an optional DWARFFormValue and extract an absolute debug info offset reference.
std::optional< uint64_t > toSignatureReference (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract a signature reference.
uint64_t toSignatureReference (const std::optional< DWARFFormValue > &V, uint64_t Default)
Take an optional DWARFFormValue and extract a signature reference.
std::optional< uint64_t > toSupplementaryReference (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract a supplementary debug info reference.
uint64_t toSupplementaryReference (const std::optional< DWARFFormValue > &V, uint64_t Default)
Take an optional DWARFFormValue and extract a supplementary debug info reference.
std::optional< int64_t > toSigned (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract an signed constant.
int64_t toSigned (const std::optional< DWARFFormValue > &V, int64_t Default)
Take an optional DWARFFormValue and extract a signed integer.
std::optional< uint64_t > toAddress (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract an address.
std::optional< object::SectionedAddress > toSectionedAddress (const std::optional< DWARFFormValue > &V)
uint64_t toAddress (const std::optional< DWARFFormValue > &V, uint64_t Default)
Take an optional DWARFFormValue and extract a address.
std::optional< uint64_t > toSectionOffset (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract an section offset.
uint64_t toSectionOffset (const std::optional< DWARFFormValue > &V, uint64_t Default)
Take an optional DWARFFormValue and extract a section offset.
std::optional< ArrayRef< uint8_t > > toBlock (const std::optional< DWARFFormValue > &V)
Take an optional DWARFFormValue and try to extract block data.
LLVM_ABI bool doesFormBelongToClass (dwarf::Form Form, DWARFFormValue::FormClass FC, uint16_t DwarfVersion)
Check whether specified Form belongs to the FC class.
LLVM_ABI raw_ostream & operator<< (raw_ostream &OS, const UnwindLocation &R)
LLVM_ABI raw_ostream & operator<< (raw_ostream &OS, const RegisterLocations &RL)
LLVM_ABI raw_ostream & operator<< (raw_ostream &OS, const UnwindRow &Row)
LLVM_ABI void printUnwindTable (const UnwindTable &Rows, raw_ostream &OS, DIDumpOptions DumpOpts, unsigned IndentLevel=0)
Print a UnwindTable to the stream.
LLVM_ABI raw_ostream & operator<< (raw_ostream &OS, const UnwindTable &Rows)
LLVM_ABI Expected< UnwindTable::RowContainer > parseRows (const CFIProgram &CFIP, UnwindRow &CurrRow, const RegisterLocations *InitialLocs)
Parse the information in the CFIProgram and update the CurrRow object that the state machine describes.
Variables
const uint32_t DW_INVALID_OFFSET = UINT32_MAX
Identifier of an invalid DIE offset in the .debug_info section.
constexpr uint32_t InvalidRegisterNumber = UINT32_MAX
constexpr Tag DW_TAG_unaligned = Tag(dwarf::DW_TAG_hi_user + 1)
const uint32_t DW_CIE_ID = UINT32_MAX
Special ID values that distinguish a CIE from a FDE in DWARF CFI.
const uint64_t DW64_CIE_ID = UINT64_MAX

Calculates the starting offsets for various sections within the .debug_names section.

AcceleratorTable

Enumerator
DW_ATOM_null
DW_ATOM_die_offset Marker as the end of a list of atoms.
DW_ATOM_cu_offset
DW_ATOM_die_tag
DW_ATOM_type_flags
DW_ATOM_type_type_flags
DW_ATOM_qual_name_hash
DW_FLAG_type_implementation
DW_hash_function_djb

Definition at line 937 of file Dwarf.h.

AccessAttribute

Enumerator
DW_ACCESS_public
DW_ACCESS_protected
DW_ACCESS_private

Definition at line 183 of file Dwarf.h.

AddressSpace

ApplePropertyAttributes

Constants for the DW_APPLE_PROPERTY_attributes attribute.

Keep this list in sync with clang's DeclObjCCommon.h ObjCPropertyAttribute::Kind!

Definition at line 890 of file Dwarf.h.

ArrayDimensionOrdering

Enumerator
DW_ORD_row_major
DW_ORD_col_major

Definition at line 782 of file Dwarf.h.

Attribute

Attributes.

Enumerator
DW_AT_lo_user
DW_AT_hi_user

Definition at line 125 of file Dwarf.h.

CallFrameInfo

Call frame instruction encodings.

Enumerator
DW_CFA_extended
DW_CFA_lo_user
DW_CFA_hi_user

Definition at line 853 of file Dwarf.h.

CallingConvention

Enumerator
DW_CC_lo_user
DW_CC_hi_user

Definition at line 760 of file Dwarf.h.

CaseSensitivity

Enumerator
DW_ID_case_sensitive
DW_ID_up_case
DW_ID_down_case
DW_ID_case_insensitive

Definition at line 752 of file Dwarf.h.

Constants

Enumerator
DW_CHILDREN_no
DW_CHILDREN_yes
DW_EH_PE_absptr
DW_EH_PE_omit
DW_EH_PE_uleb128
DW_EH_PE_udata2
DW_EH_PE_udata4
DW_EH_PE_udata8
DW_EH_PE_sleb128
DW_EH_PE_sdata2
DW_EH_PE_sdata4
DW_EH_PE_sdata8
DW_EH_PE_signed
DW_EH_PE_pcrel
DW_EH_PE_textrel
DW_EH_PE_datarel
DW_EH_PE_funcrel
DW_EH_PE_aligned
DW_EH_PE_indirect

Definition at line 863 of file Dwarf.h.

DecimalSignEncoding

Enumerator
DW_DS_unsigned
DW_DS_leading_overpunch
DW_DS_trailing_overpunch
DW_DS_leading_separate
DW_DS_trailing_separate

Definition at line 166 of file Dwarf.h.

DefaultedMemberAttribute

Enumerator
DW_DEFAULTED_max

Definition at line 209 of file Dwarf.h.

DiscriminantList

Enumerator
DW_DSC_label
DW_DSC_range

Definition at line 788 of file Dwarf.h.

DwarfFormat

Constants that define the DWARF format as 32 or 64 bit.

Enumerator
DWARF32
DWARF64

Definition at line 93 of file Dwarf.h.

EndianityEncoding

Enumerator
DW_END_lo_user
DW_END_hi_user

Definition at line 175 of file Dwarf.h.

EnumKindAttribute

Enumerator
DW_APPLE_ENUM_KIND_max

Definition at line 203 of file Dwarf.h.

Form

Enumerator
DW_FORM_lo_user Not specified by DWARF.

Definition at line 132 of file Dwarf.h.

GDBIndexEntryKind

Enumerator
GIEK_NONE
GIEK_TYPE
GIEK_VARIABLE
GIEK_FUNCTION
GIEK_OTHER
GIEK_UNUSED5
GIEK_UNUSED6
GIEK_UNUSED7

Definition at line 971 of file Dwarf.h.

GDBIndexEntryLinkage

Enumerator
GIEL_EXTERNAL
GIEL_STATIC

Definition at line 982 of file Dwarf.h.

GnuMacroEntryType

GNU .debug_macro macro information entry type encodings.

Enumerator
DW_MACRO_GNU_lo_user
DW_MACRO_GNU_hi_user

Definition at line 833 of file Dwarf.h.

Index

Enumerator
DW_IDX_lo_user
DW_IDX_hi_user

Definition at line 903 of file Dwarf.h.

InlineAttribute

Enumerator
DW_INL_not_inlined
DW_INL_inlined
DW_INL_declared_not_inlined
DW_INL_declared_inlined

Definition at line 774 of file Dwarf.h.

LineNumberEntryFormat

Enumerator
DW_LNCT_lo_user
DW_LNCT_hi_user

Definition at line 808 of file Dwarf.h.

LineNumberExtendedOps

Line Number Extended Opcode Encodings.

Enumerator
DW_LNE_lo_user
DW_LNE_hi_user

Definition at line 801 of file Dwarf.h.

LineNumberOps

Line Number Standard Opcode Encodings.

Definition at line 795 of file Dwarf.h.

LLVMConstants

Enumerator
DW_TAG_invalid LLVM mock tags (see also llvm/BinaryFormat/Dwarf.def). Tag for invalid results.
DW_VIRTUALITY_invalid Virtuality for invalid results.
DW_MACINFO_invalid Macinfo type for invalid results.
DW_APPLE_ENUM_KIND_invalid Enum kind for invalid results.
DW_LENGTH_lo_reserved Special values for an initial length field. Lower bound of the reserved range.
DW_LENGTH_DWARF64 Indicator of 64-bit DWARF format.
DW_LENGTH_hi_reserved Upper bound of the reserved range.
DWARF_VERSION Other constants. Default dwarf version we output.
DW_PUBTYPES_VERSION Section version number for .debug_pubtypes.
DW_PUBNAMES_VERSION Section version number for .debug_pubnames.
DW_ARANGES_VERSION Section version number for .debug_aranges.
DWARF_VENDOR_DWARF Identifiers we use to distinguish vendor extensions. Defined in v2 or later of the DWARF standard.
DWARF_VENDOR_APPLE
DWARF_VENDOR_BORLAND
DWARF_VENDOR_GNU
DWARF_VENDOR_GOOGLE
DWARF_VENDOR_LLVM
DWARF_VENDOR_MIPS
DWARF_VENDOR_WASM
DWARF_VENDOR_ALTIUM
DWARF_VENDOR_COMPAQ
DWARF_VENDOR_GHS
DWARF_VENDOR_GO
DWARF_VENDOR_HP
DWARF_VENDOR_IBM
DWARF_VENDOR_INTEL
DWARF_VENDOR_PGI
DWARF_VENDOR_SUN
DWARF_VENDOR_UPC

Definition at line 45 of file Dwarf.h.

LlvmUserLocationAtom

LocationAtom

Enumerator
DW_OP_lo_user
DW_OP_hi_user
DW_OP_LLVM_fragment Only used in LLVM metadata.
DW_OP_LLVM_convert Only used in LLVM metadata.
DW_OP_LLVM_tag_offset Only used in LLVM metadata.
DW_OP_LLVM_entry_value Only used in LLVM metadata.
DW_OP_LLVM_implicit_pointer Only used in LLVM metadata.
DW_OP_LLVM_arg Only used in LLVM metadata.
DW_OP_LLVM_extract_bits_sext Only used in LLVM metadata.
DW_OP_LLVM_extract_bits_zext Only used in LLVM metadata.

Definition at line 138 of file Dwarf.h.

LoclistEntries

DWARF v5 loc list entry encoding values.

Definition at line 847 of file Dwarf.h.

MacinfoRecordType

Enumerator
DW_MACINFO_define
DW_MACINFO_undef
DW_MACINFO_start_file
DW_MACINFO_end_file
DW_MACINFO_vendor_ext

Definition at line 815 of file Dwarf.h.

MacroEntryType

DWARF v5 macro information entry type encodings.

Enumerator
DW_MACRO_lo_user
DW_MACRO_hi_user

Definition at line 825 of file Dwarf.h.

RnglistEntries

DWARF v5 range list entry encoding values.

Definition at line 841 of file Dwarf.h.

SourceLanguage

Enumerator
DW_LANG_lo_user
DW_LANG_hi_user

Definition at line 215 of file Dwarf.h.

SourceLanguageName

Tag

Enumerator
DW_TAG_lo_user
DW_TAG_hi_user
DW_TAG_user_base Recommended base for user tags.

Definition at line 105 of file Dwarf.h.

TypeKind

Enumerator
DW_ATE_lo_user
DW_ATE_hi_user

Definition at line 159 of file Dwarf.h.

UnitType

Constants for unit types in DWARF v5.

Enumerator
DW_UT_lo_user
DW_UT_hi_user

Definition at line 896 of file Dwarf.h.

VirtualityAttribute

Enumerator
DW_VIRTUALITY_max

Definition at line 197 of file Dwarf.h.

VisibilityAttribute

Enumerator
DW_VIS_local
DW_VIS_exported
DW_VIS_qualified

Definition at line 190 of file Dwarf.h.

AtomValueString()

AttributeValueString()

Returns the symbolic string representing Val when used as a value for attribute Attr.

Definition at line 866 of file Dwarf.cpp.

References AccessibilityString(), ArrayOrderString(), AttributeEncodingString(), CaseString(), ConventionString(), DecimalSignString(), DefaultedMemberString(), EndianityString(), EnumKindString(), InlineCodeString(), LanguageString(), SourceLanguageNameString(), VirtualityString(), and VisibilityString().

Referenced by dumpAttribute().

computeTombstoneAddress()

uint64_t llvm::dwarf::computeTombstoneAddress ( uint8_t AddressByteSize) inline

createUnwindTable() [1/2]

createUnwindTable() [2/2]

Create an UnwindTable from a Frame Descriptor Entry (FDE).

Parameters

Fde The Frame Descriptor Entry to extract the table from. The CFIProgram is retrieved from the Fde object and used to create the UnwindTable.

Returns

An error if the DWARF Call Frame Information opcodes have state machine errors, or a valid UnwindTable otherwise.

Definition at line 36 of file DWARFDebugFrame.cpp.

References llvm::dwarf::FrameEntry::cfis(), llvm::createStringError(), llvm::dwarf::CFIProgram::empty(), llvm::dwarf::FDE::getInitialLocation(), llvm::dwarf::FDE::getLinkedCIE(), llvm::dwarf::FrameEntry::getOffset(), llvm::invalid_argument, parseRows(), llvm::dwarf::UnwindRow::setAddress(), and llvm::dwarf::UnwindLocation::Unspecified.

doesFormBelongToClass()

findDebugNamesOffsets()

Definition at line 568 of file DWARFAcceleratorTable.cpp.

References llvm::DWARFDebugNames::Header::AbbrevTableSize, llvm::DWARFDebugNames::Header::BucketCount, llvm::DWARFDebugNames::DWARFDebugNamesOffsets::BucketsBase, llvm::DWARFDebugNames::Header::CompUnitCount, llvm::DWARFDebugNames::DWARFDebugNamesOffsets::CUsBase, llvm::DWARFDebugNames::DWARFDebugNamesOffsets::EntriesBase, llvm::DWARFDebugNames::DWARFDebugNamesOffsets::EntryOffsetsBase, llvm::DWARFDebugNames::Header::ForeignTypeUnitCount, llvm::DWARFDebugNames::Header::Format, getDwarfOffsetByteSize(), llvm::DWARFDebugNames::DWARFDebugNamesOffsets::HashesBase, llvm::DWARFDebugNames::Header::LocalTypeUnitCount, llvm::DWARFDebugNames::Header::NameCount, and llvm::DWARFDebugNames::DWARFDebugNamesOffsets::StringOffsetsBase.

Referenced by llvm::DWARFDebugNames::NameIndex::extract().

getArrayIndexTypeEncoding()

TypeKind llvm::dwarf::getArrayIndexTypeEncoding ( SourceLanguage S) inline

getDebugNamesBucketCount()

uint32_t llvm::dwarf::getDebugNamesBucketCount ( uint32_t UniqueHashCount) inline

getDwarfOffsetByteSize()

uint8_t llvm::dwarf::getDwarfOffsetByteSize ( DwarfFormat Format) inline

The size of a reference determined by the DWARF 32/64-bit format.

Definition at line 1097 of file Dwarf.h.

References DWARF32, DWARF64, llvm::Format, and llvm_unreachable.

Referenced by llvm::DWARFCompileUnit::dump(), llvm::DWARFDebugAddrTable::dump(), llvm::DWARFDebugArangeSet::dump(), llvm::DWARFDebugLine::Prologue::dump(), llvm::DWARFDebugPubTable::dump(), llvm::DWARFFormValue::dump(), llvm::DWARFListTableHeader::dump(), llvm::DWARFTypeUnit::dump(), dumpStringOffsetsSection(), llvm::MCDwarfLineTableHeader::Emit(), llvm::MCStreamer::emitDwarfUnitLength(), llvm::MCStreamer::emitDwarfUnitLength(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), llvm::mcdwarf::emitListsTableHeaderStart(), llvm::MCDwarfLineStr::emitRef(), llvm::DWARFDebugArangeSet::extract(), llvm::DWARFDebugNames::NameIndex::extract(), llvm::DWARFDebugPubTable::extract(), findDebugNamesOffsets(), llvm::DWARFDebugNames::NameIndex::getCUOffset(), llvm::AsmPrinter::getDwarfOffsetByteSize(), llvm::dwarf::FormParams::getDwarfOffsetByteSize(), llvm::DWARFDebugNames::NameIndex::getForeignTUSignature(), llvm::DWARFDebugNames::NameIndex::getLocalTUOffset(), llvm::DWARFDebugNames::NameIndex::getNameTableEntry(), and llvm::DWARFVerifier::verifyDebugStrOffsets().

getFixedFormByteSize()

getUnitLengthFieldByteSize()

uint8_t llvm::dwarf::getUnitLengthFieldByteSize ( DwarfFormat Format) inline

Get the byte size of the unit length field depending on the DWARF format.

Definition at line 1139 of file Dwarf.h.

References DWARF32, DWARF64, llvm::Format, and llvm_unreachable.

Referenced by EmitGenDwarfAranges(), EmitGenDwarfInfo(), llvm::DWARFDebugArangeSet::extract(), llvm::DWARFListTableHeader::extract(), llvm::DWARFDebugAddrTable::getFullLength(), llvm::DWARFDebugNames::NameIndex::getNextUnitOffset(), llvm::AsmPrinter::getUnitLengthFieldByteSize(), llvm::DWARFUnitHeader::getUnitLengthFieldByteSize(), and llvm::DWARFListTableHeader::length().

isC()

bool llvm::dwarf::isC ( SourceLanguage S) inline

isCPlusPlus()

bool llvm::dwarf::isCPlusPlus ( SourceLanguage S) inline

isFortran()

bool llvm::dwarf::isFortran ( SourceLanguage S) inline

isType()

bool llvm::dwarf::isType ( Tag T) inline

isUnitType() [1/2]

bool llvm::dwarf::isUnitType ( dwarf::Tag T) inline

isUnitType() [2/2]

bool llvm::dwarf::isUnitType ( uint8_t UnitType) inline

isValidFormForVersion()

bool llvm::dwarf::isValidFormForVersion ( Form F,
unsigned Version,
bool ExtensionsOk = true )

LanguageDescription() [1/2]

LanguageDescription() [2/2]

Returns a language name corresponding to the specified version.

If the version is not recognized for the specified language, returns the version-independent name.

Definition at line 475 of file Dwarf.cpp.

References LanguageDescription(), and llvm::Version.

LanguageLowerBound()

std::optional< unsigned > llvm::dwarf::LanguageLowerBound ( dwarf::SourceLanguage Lang )

OperationArity()

std::optional< unsigned > llvm::dwarf::OperationArity ( dwarf::LocationAtom Op )

The arity of the given LocationAtom.

This is the number of elements on the stack this operation operates on. Returns -1 if the arity is variable (e.g. depending on the argument) or unknown.

Definition at line 239 of file Dwarf.cpp.

OperationOperands()

std::optional< unsigned > llvm::dwarf::OperationOperands ( dwarf::LocationAtom Op )

The number of operands for the given LocationAtom.

Definition at line 226 of file Dwarf.cpp.

operator<<() [1/4]

operator<<() [2/4]

operator<<() [3/4]

operator<<() [4/4]

parseRows()

Parse the information in the CFIProgram and update the CurrRow object that the state machine describes.

This function emulates the state machine described in the DWARF Call Frame Information opcodes and will push CurrRow onto a RowContainer when needed.

Parameters

CFIP the CFI program that contains the opcodes from a CIE or FDE.
CurrRow the current row to modify while parsing the state machine.
InitialLocs If non-NULL, we are parsing a FDE and this contains the initial register locations from the CIE. If NULL, then a CIE's opcodes are being parsed and this is not needed. This is used for the DW_CFA_restore and DW_CFA_restore_extended opcodes.

Returns

An error if the DWARF Call Frame Information opcodes have state machine errors, or the accumulated rows otherwise.

Definition at line 81 of file DWARFUnwindTable.cpp.

References llvm::Triple::aarch64, llvm::Triple::aarch64_32, llvm::Triple::aarch64_be, llvm::dwarf::CFIProgram::callFrameString(), llvm::dwarf::UnwindLocation::Constant, llvm::dwarf::UnwindLocation::createAtCFAPlusOffset(), llvm::dwarf::UnwindLocation::createAtDWARFExpression(), llvm::dwarf::UnwindLocation::createIsCFAPlusOffset(), llvm::dwarf::UnwindLocation::createIsConstant(), llvm::dwarf::UnwindLocation::createIsDWARFExpression(), llvm::dwarf::UnwindLocation::createIsRegisterPlusOffset(), llvm::dwarf::UnwindLocation::createSame(), llvm::createStringError(), llvm::dwarf::UnwindLocation::createUndefined(), llvm::Triple::getArchTypeName(), llvm::dwarf::RegisterLocations::getRegisterLocation(), llvm::invalid_argument, llvm::not_supported, llvm::Offset, llvm::dwarf::UnwindLocation::RegPlusOffset, llvm::Triple::sparc, llvm::Triple::sparcel, llvm::Triple::sparcv9, llvm::StringRef::str(), llvm::Expected< T >::takeError(), and llvm::dwarf::CFIProgram::triple().

Referenced by createUnwindTable(), and createUnwindTable().

printCFIProgram()

printUnwindTable()

Print a UnwindTable to the stream.

Parameters

Rows the UnwindTable to print.
OS the stream to use for output.
MRI register information that helps emit register names instead of raw register numbers.
IsEH true if the DWARF Call Frame Information is from .eh_frame instead of from .debug_frame. This is needed for register number conversion because some register numbers differ between the two sections for certain architectures like x86.
IndentLevel specify the indent level as an integer. The UnwindRow will be output to the stream preceded by 2 * IndentLevel number of spaces.

Definition at line 174 of file DWARFUnwindTablePrinter.cpp.

References printUnwindRow().

Referenced by llvm::dwarf::CIE::dump(), llvm::dwarf::FDE::dump(), and operator<<().

toAddress() [1/2]

toAddress() [2/2]

Take an optional DWARFFormValue and extract a address.

Parameters

V and optional DWARFFormValue to attempt to extract the value from.
Default the default value to return in case of failure.

Returns

the extracted address value or Default if the V doesn't have a value or the form value's encoding wasn't an address form.

Definition at line 393 of file DWARFFormValue.h.

References llvm::Default, and toAddress().

toBlock()

Take an optional DWARFFormValue and try to extract block data.

Parameters

Returns

an optional value that contains a value if the form value was valid and has a block form.

Definition at line 427 of file DWARFFormValue.h.

toDebugInfoReference() [1/2]

Take an optional DWARFFormValue and try to extract an absolute debug info offset reference.

Parameters

Returns

an optional value that contains a value if the form value was valid and has an (absolute) debug info offset reference form.

Definition at line 279 of file DWARFFormValue.h.

Referenced by toDebugInfoReference().

toDebugInfoReference() [2/2]

Take an optional DWARFFormValue and extract an absolute debug info offset reference.

Parameters

V an optional DWARFFormValue to attempt to extract the value from.
Default the default value to return in case of failure.

Returns

the extracted reference value or Default if the V doesn't have a value or the form value's encoding wasn't an absolute debug info offset reference form.

Definition at line 293 of file DWARFFormValue.h.

References llvm::Default, and toDebugInfoReference().

toDW_LANG()

std::optional< SourceLanguage > llvm::dwarf::toDW_LANG ( SourceLanguageName name, uint32_t version ) inline

Convert a DWARF 6 pair of language name and version to a DWARF 5 DW_LANG.

If the version number doesn't exactly match a known version it is rounded up to the next-highest known version number.

Definition at line 231 of file Dwarf.h.

References name.

Referenced by llvm::DwarfUnit::getSourceLanguage().

toDW_LNAME()

std::optional< std::pair< SourceLanguageName, uint32_t > > llvm::dwarf::toDW_LNAME ( SourceLanguage language) inline

toRelativeReference() [1/2]

Take an optional DWARFFormValue and try to extract a relative offset reference.

Parameters

Returns

an optional value that contains a value if the form value was valid and has a relative reference form.

Definition at line 255 of file DWARFFormValue.h.

Referenced by toRelativeReference().

toRelativeReference() [2/2]

Take an optional DWARFFormValue and extract a relative offset reference.

Parameters

V an optional DWARFFormValue to attempt to extract the value from.
Default the default value to return in case of failure.

Returns

the extracted reference value or Default if the V doesn't have a value or the form value's encoding wasn't a relative offset reference form.

Definition at line 267 of file DWARFFormValue.h.

References llvm::Default, and toRelativeReference().

toSectionedAddress()

toSectionOffset() [1/2]

toSectionOffset() [2/2]

Take an optional DWARFFormValue and extract a section offset.

Parameters

V and optional DWARFFormValue to attempt to extract the value from.
Default the default value to return in case of failure.

Returns

the extracted section offset value or Default if the V doesn't have a value or the form value's encoding wasn't a section offset form.

Definition at line 416 of file DWARFFormValue.h.

References llvm::Default, and toSectionOffset().

toSignatureReference() [1/2]

Take an optional DWARFFormValue and try to extract a signature reference.

Parameters

Returns

an optional value that contains a value if the form value was valid and has a signature reference form.

Definition at line 304 of file DWARFFormValue.h.

Referenced by toSignatureReference().

toSignatureReference() [2/2]

Take an optional DWARFFormValue and extract a signature reference.

Parameters

V an optional DWARFFormValue to attempt to extract the value from.
Default the default value to return in case of failure.

Returns

the extracted reference value or Default if the V doesn't have a value or the form value's encoding wasn't a signature reference form.

Definition at line 316 of file DWARFFormValue.h.

References llvm::Default, and toSignatureReference().

toSigned() [1/2]

std::optional< int64_t > llvm::dwarf::toSigned ( const std::optional< DWARFFormValue > & V) inline

Take an optional DWARFFormValue and try to extract an signed constant.

Parameters

Returns

an optional value that contains a value if the form value was valid and has a signed constant form.

Definition at line 351 of file DWARFFormValue.h.

Referenced by toSigned().

toSigned() [2/2]

Take an optional DWARFFormValue and extract a signed integer.

Parameters

V and optional DWARFFormValue to attempt to extract the value from.
Default the default value to return in case of failure.

Returns

the extracted signed integer value or Default if the V doesn't have a value or the form value's encoding wasn't a signed integer form.

Definition at line 363 of file DWARFFormValue.h.

References llvm::Default, and toSigned().

toString() [1/2]

Take an optional DWARFFormValue and try to extract a string value from it.

Parameters

Returns

an optional value that contains a value if the form value was valid and was a string.

Definition at line 182 of file DWARFFormValue.h.

References llvm::consumeError(), and E().

Referenced by llvm::analyzeContextInfo(), llvm::analyzeImportedModule(), llvm::dwarf_linker::parallel::CompileUnit::analyzeImportedModule(), llvm::dwarf_linker::parallel::DIEAttributeCloner::cloneStringAttr(), llvm::gsym::DwarfTransformer::convert(), llvm::logicalview::LVDWARFReader::createScopes(), llvm::DWARFUnit::getCompilationDir(), llvm::DWARFDebugLine::LineTable::getDirectoryForEntry(), llvm::DWARFDebugLine::Prologue::getFileNameByIndex(), llvm::DWARFDie::getLinkageName(), getPCMFile(), llvm::getPCMFile(), llvm::DWARFDie::getShortName(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::isClangModuleRef(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::loadClangModule(), llvm::prettyPrintBaseTypeRef(), llvm::resolveRelativeObjectPath(), resolveRelativeObjectPath(), and toString().

toString() [2/2]

Take an optional DWARFFormValue and extract a string value from it.

Parameters

V and optional DWARFFormValue to attempt to extract the value from.
Default the default value to return in case of failure.

Returns

the string value or Default if the V doesn't have a value or the form value's encoding wasn't a string.

Definition at line 218 of file DWARFFormValue.h.

References llvm::Default, E(), and toString().

toStringRef()

toSupplementaryReference() [1/2]

Take an optional DWARFFormValue and try to extract a supplementary debug info reference.

Parameters

Returns

an optional value that contains a value if the form value was valid and has a supplementary reference form.

Definition at line 328 of file DWARFFormValue.h.

Referenced by toSupplementaryReference().

toSupplementaryReference() [2/2]

Take an optional DWARFFormValue and extract a supplementary debug info reference.

Parameters

V an optional DWARFFormValue to attempt to extract the value from.
Default the default value to return in case of failure.

Returns

the extracted reference value or Default if the V doesn't have a value or the form value's encoding wasn't a supplementary reference form.

Definition at line 341 of file DWARFFormValue.h.

References llvm::Default, and toSupplementaryReference().

toUnsigned() [1/2]

Take an optional DWARFFormValue and try to extract an unsigned constant.

Parameters

Returns

an optional value that contains a value if the form value was valid and has a unsigned constant form.

Definition at line 231 of file DWARFFormValue.h.

Referenced by llvm::dwarf_linker::parallel::SyntheticTypeNameBuilder::addDieNameFromDeclFileAndDeclLine(), llvm::dwarf_linker::parallel::SyntheticTypeNameBuilder::addParamNames(), llvm::dwarf_linker::classic::CompileUnit::CompileUnit(), llvm::dwarf_linker::parallel::CompileUnit::CompileUnit(), convertFunctionLineTable(), llvm::gsym::CUInfo::CUInfo(), llvm::DWARFDie::getCallerFrame(), llvm::dwarf_linker::classic::DeclContextTree::getChildDeclContext(), llvm::DWARFDie::getDeclLine(), llvm::DWARFContext::getDWOCompileUnitForHash(), getDwoId(), llvm::getDwoId(), llvm::dwarf_linker::classic::CompileUnit::getLanguage(), llvm::dwarf_linker::parallel::DWARFLinkerImpl::link(), parseInlineInfo(), llvm::dwarf_linker::parallel::AcceleratorRecordsSaver::save(), toUnsigned(), llvm::DWARFUnit::tryExtractDIEsIfNeeded(), and llvm::updatePruning().

toUnsigned() [2/2]

Take an optional DWARFFormValue and extract a unsigned constant.

Parameters

V and optional DWARFFormValue to attempt to extract the value from.
Default the default value to return in case of failure.

Returns

the extracted unsigned value or Default if the V doesn't have a value or the form value's encoding wasn't an unsigned constant form.

Definition at line 243 of file DWARFFormValue.h.

References llvm::Default, and toUnsigned().

DW64_CIE_ID

DW_CIE_ID

Special ID values that distinguish a CIE from a FDE in DWARF CFI.

Not inside an enum because a 64-bit value is needed.

Definition at line 98 of file Dwarf.h.

Referenced by getCIEId().

DW_INVALID_OFFSET

DW_TAG_unaligned

Tag llvm::dwarf::DW_TAG_unaligned = Tag(dwarf::DW_TAG_hi_user + 1) constexpr

InvalidRegisterNumber

uint32_t llvm::dwarf::InvalidRegisterNumber = UINT32_MAX constexpr