Namespace: go.std.debug.dwarf
v1.0Contents
Summary
Provides a low-level interface to the debug/dwarf package.
Package dwarf provides access to DWARF debugging information loaded from
executable files, as defined in the DWARF 2.0 Standard at
http://dwarfstd.org/doc/dwarf-2.0.0.pdf
Index
- *AddrType
- *ArrayType
- *Attr
- *BasicType
- *BoolType
- *CharType
- *Class
- *CommonType
- *ComplexType
- *Data
- *DecodeError
- *DotDotDotType
- *Entry
- *EnumType
- *EnumValue
- *Field
- *FloatType
- *FuncType
- *IntType
- *LineEntry
- *LineFile
- *LineReader
- *LineReaderPos
- *Offset
- *PtrType
- *QualType
- *Reader
- *StructField
- *StructType
- *Tag
- *TypedefType
- *UcharType
- *UintType
- *UnspecifiedType
- *UnsupportedType
- *VoidType
- AddrType
- ArrayType
- Attr
- AttrAbstractOrigin
- AttrAccessibility
- AttrAddrBase
- AttrAddrClass
- AttrAlignment
- AttrAllocated
- AttrArtificial
- AttrAssociated
- AttrBaseTypes
- AttrBinaryScale
- AttrBitOffset
- AttrBitSize
- AttrByteSize
- AttrCallAllCalls
- AttrCallAllSourceCalls
- AttrCallAllTailCalls
- AttrCallColumn
- AttrCallDataLocation
- AttrCallDataValue
- AttrCallFile
- AttrCallLine
- AttrCallOrigin
- AttrCallPC
- AttrCallParameter
- AttrCallReturnPC
- AttrCallTailCall
- AttrCallTarget
- AttrCallTargetClobbered
- AttrCallValue
- AttrCalling
- AttrCommonRef
- AttrCompDir
- AttrConstExpr
- AttrConstValue
- AttrContainingType
- AttrCount
- AttrDataBitOffset
- AttrDataLocation
- AttrDataMemberLoc
- AttrDecimalScale
- AttrDecimalSign
- AttrDeclColumn
- AttrDeclFile
- AttrDeclLine
- AttrDeclaration
- AttrDefaultValue
- AttrDefaulted
- AttrDeleted
- AttrDescription
- AttrDigitCount
- AttrDiscr
- AttrDiscrList
- AttrDiscrValue
- AttrDwoName
- AttrElemental
- AttrEncoding
- AttrEndianity
- AttrEntrypc
- AttrEnumClass
- AttrExplicit
- AttrExportSymbols
- AttrExtension
- AttrExternal
- AttrFrameBase
- AttrFriend
- AttrHighpc
- AttrIdentifierCase
- AttrImport
- AttrInline
- AttrIsOptional
- AttrLanguage
- AttrLinkageName
- AttrLocation
- AttrLoclistsBase
- AttrLowerBound
- AttrLowpc
- AttrMacroInfo
- AttrMacros
- AttrMainSubprogram
- AttrMutable
- AttrName
- AttrNamelistItem
- AttrNoreturn
- AttrObjectPointer
- AttrOrdering
- AttrPictureString
- AttrPriority
- AttrProducer
- AttrPrototyped
- AttrPure
- AttrRanges
- AttrRank
- AttrRecursive
- AttrReference
- AttrReturnAddr
- AttrRnglistsBase
- AttrRvalueReference
- AttrSegment
- AttrSibling
- AttrSignature
- AttrSmall
- AttrSpecification
- AttrStartScope
- AttrStaticLink
- AttrStmtList
- AttrStrOffsetsBase
- AttrStride
- AttrStrideSize
- AttrStringLength
- AttrStringLengthBitSize
- AttrStringLengthByteSize
- AttrThreadsScaled
- AttrTrampoline
- AttrType
- AttrUpperBound
- AttrUseLocation
- AttrUseUTF8
- AttrVarParam
- AttrVirtuality
- AttrVisibility
- AttrVtableElemLoc
- BasicType
- BoolType
- CharType
- Class
- ClassAddrPtr
- ClassAddress
- ClassBlock
- ClassConstant
- ClassExprLoc
- ClassFlag
- ClassLinePtr
- ClassLocList
- ClassLocListPtr
- ClassMacPtr
- ClassRangeListPtr
- ClassReference
- ClassReferenceAlt
- ClassReferenceSig
- ClassRngList
- ClassRngListsPtr
- ClassStrOffsetsPtr
- ClassString
- ClassStringAlt
- ClassUnknown
- CommonType
- ComplexType
- Data
- DecodeError
- DotDotDotType
- Entry
- EnumType
- EnumValue
- ErrUnknownPC
- Field
- FloatType
- FuncType
- IntType
- LineEntry
- LineFile
- LineReader
- LineReaderPos
- New
- Offset
- PtrType
- QualType
- Reader
- StructField
- StructType
- Tag
- TagAccessDeclaration
- TagArrayType
- TagAtomicType
- TagBaseType
- TagCallSite
- TagCallSiteParameter
- TagCatchDwarfBlock
- TagClassType
- TagCoarrayType
- TagCommonDwarfBlock
- TagCommonInclusion
- TagCompileUnit
- TagCondition
- TagConstType
- TagConstant
- TagDwarfProcedure
- TagDynamicType
- TagEntryPoint
- TagEnumerationType
- TagEnumerator
- TagFileType
- TagFormalParameter
- TagFriend
- TagGenericSubrange
- TagImmutableType
- TagImportedDeclaration
- TagImportedModule
- TagImportedUnit
- TagInheritance
- TagInlinedSubroutine
- TagInterfaceType
- TagLabel
- TagLexDwarfBlock
- TagMember
- TagModule
- TagMutableType
- TagNamelist
- TagNamelistItem
- TagNamespace
- TagPackedType
- TagPartialUnit
- TagPointerType
- TagPtrToMemberType
- TagReferenceType
- TagRestrictType
- TagRvalueReferenceType
- TagSetType
- TagSharedType
- TagSkeletonUnit
- TagStringType
- TagStructType
- TagSubprogram
- TagSubrangeType
- TagSubroutineType
- TagTemplateAlias
- TagTemplateTypeParameter
- TagTemplateValueParameter
- TagThrownType
- TagTryDwarfBlock
- TagTypeUnit
- TagTypedef
- TagUnionType
- TagUnspecifiedParameters
- TagUnspecifiedType
- TagVariable
- TagVariant
- TagVariantPart
- TagVolatileType
- TagWithStmt
- Type
- TypedefType
- UcharType
- UintType
- UnspecifiedType
- UnsupportedType
- VoidType
- arrayOfAddrType
- arrayOfArrayType
- arrayOfAttr
- arrayOfBasicType
- arrayOfBoolType
- arrayOfCharType
- arrayOfClass
- arrayOfCommonType
- arrayOfComplexType
- arrayOfData
- arrayOfDecodeError
- arrayOfDotDotDotType
- arrayOfEntry
- arrayOfEnumType
- arrayOfEnumValue
- arrayOfField
- arrayOfFloatType
- arrayOfFuncType
- arrayOfIntType
- arrayOfLineEntry
- arrayOfLineFile
- arrayOfLineReader
- arrayOfLineReaderPos
- arrayOfOffset
- arrayOfPtrType
- arrayOfQualType
- arrayOfReader
- arrayOfStructField
- arrayOfStructType
- arrayOfTag
- arrayOfType
- arrayOfTypedefType
- arrayOfUcharType
- arrayOfUintType
- arrayOfUnspecifiedType
- arrayOfUnsupportedType
- arrayOfVoidType
Legend
-
Constant
Variable
Function
Macro
Special form
Type
GoVar
Receiver/Method
Constants
Constants are variables with :const true in their metadata. Joker currently does not recognize them as special; as such, it allows redefining them or their values.-
(None.)
Variables
-
AttrAbstractOrigin
GoObject v1.0 -
AttrAccessibility
GoObject v1.0 -
AttrAddrBase
GoObject v1.0 -
AttrAddrClass
GoObject v1.0 -
AttrAlignment
GoObject v1.0 -
AttrAllocated
GoObject v1.0The following are new in DWARF 3.
-
AttrArtificial
GoObject v1.0 -
AttrAssociated
GoObject v1.0 -
AttrBaseTypes
GoObject v1.0 -
AttrBinaryScale
GoObject v1.0 -
AttrBitOffset
GoObject v1.0 -
AttrBitSize
GoObject v1.0 -
AttrByteSize
GoObject v1.0 -
AttrCallAllCalls
GoObject v1.0 -
AttrCallAllSourceCalls
GoObject v1.0 -
AttrCallAllTailCalls
GoObject v1.0 -
AttrCallColumn
GoObject v1.0 -
AttrCallDataLocation
GoObject v1.0 -
AttrCallDataValue
GoObject v1.0 -
AttrCallFile
GoObject v1.0 -
AttrCallLine
GoObject v1.0 -
AttrCallOrigin
GoObject v1.0 -
AttrCallPC
GoObject v1.0 -
AttrCallParameter
GoObject v1.0 -
AttrCallReturnPC
GoObject v1.0 -
AttrCallTailCall
GoObject v1.0 -
AttrCallTarget
GoObject v1.0 -
AttrCallTargetClobbered
GoObject v1.0 -
AttrCallValue
GoObject v1.0 -
AttrCalling
GoObject v1.0 -
AttrCommonRef
GoObject v1.0 -
AttrCompDir
GoObject v1.0 -
AttrConstExpr
GoObject v1.0 -
AttrConstValue
GoObject v1.0 -
AttrContainingType
GoObject v1.0 -
AttrCount
GoObject v1.0 -
AttrDataBitOffset
GoObject v1.0 -
AttrDataLocation
GoObject v1.0 -
AttrDataMemberLoc
GoObject v1.0 -
AttrDecimalScale
GoObject v1.0 -
AttrDecimalSign
GoObject v1.0 -
AttrDeclColumn
GoObject v1.0 -
AttrDeclFile
GoObject v1.0 -
AttrDeclLine
GoObject v1.0 -
AttrDeclaration
GoObject v1.0 -
AttrDefaultValue
GoObject v1.0 -
AttrDefaulted
GoObject v1.0 -
AttrDeleted
GoObject v1.0 -
AttrDescription
GoObject v1.0 -
AttrDigitCount
GoObject v1.0 -
AttrDiscr
GoObject v1.0 -
AttrDiscrList
GoObject v1.0 -
AttrDiscrValue
GoObject v1.0 -
AttrDwoName
GoObject v1.0 -
AttrElemental
GoObject v1.0 -
AttrEncoding
GoObject v1.0 -
AttrEndianity
GoObject v1.0 -
AttrEntrypc
GoObject v1.0 -
AttrEnumClass
GoObject v1.0 -
AttrExplicit
GoObject v1.0 -
AttrExportSymbols
GoObject v1.0 -
AttrExtension
GoObject v1.0 -
AttrExternal
GoObject v1.0 -
AttrFrameBase
GoObject v1.0 -
AttrFriend
GoObject v1.0 -
AttrHighpc
GoObject v1.0 -
AttrIdentifierCase
GoObject v1.0 -
AttrImport
GoObject v1.0 -
AttrInline
GoObject v1.0 -
AttrIsOptional
GoObject v1.0 -
AttrLanguage
GoObject v1.0 -
AttrLinkageName
GoObject v1.0 -
AttrLocation
GoObject v1.0 -
AttrLoclistsBase
GoObject v1.0 -
AttrLowerBound
GoObject v1.0 -
AttrLowpc
GoObject v1.0 -
AttrMacroInfo
GoObject v1.0 -
AttrMacros
GoObject v1.0 -
AttrMainSubprogram
GoObject v1.0 -
AttrMutable
GoObject v1.0 -
AttrName
GoObject v1.0 -
AttrNamelistItem
GoObject v1.0 -
AttrNoreturn
GoObject v1.0 -
AttrObjectPointer
GoObject v1.0 -
AttrOrdering
GoObject v1.0 -
AttrPictureString
GoObject v1.0 -
AttrPriority
GoObject v1.0 -
AttrProducer
GoObject v1.0 -
AttrPrototyped
GoObject v1.0 -
AttrPure
GoObject v1.0 -
AttrRanges
GoObject v1.0 -
AttrRank
GoObject v1.0 -
AttrRecursive
GoObject v1.0 -
AttrReference
GoObject v1.0 -
AttrReturnAddr
GoObject v1.0 -
AttrRnglistsBase
GoObject v1.0 -
AttrRvalueReference
GoObject v1.0 -
AttrSegment
GoObject v1.0 -
AttrSibling
GoObject v1.0 -
AttrSignature
GoObject v1.0The following are new in DWARF 4.
-
AttrSmall
GoObject v1.0 -
AttrSpecification
GoObject v1.0 -
AttrStartScope
GoObject v1.0 -
AttrStaticLink
GoObject v1.0 -
AttrStmtList
GoObject v1.0 -
AttrStrOffsetsBase
GoObject v1.0 -
AttrStride
GoObject v1.0 -
AttrStrideSize
GoObject v1.0 -
AttrStringLength
GoObject v1.0 -
AttrStringLengthBitSize
GoObject v1.0The following are new in DWARF 5.
-
AttrStringLengthByteSize
GoObject v1.0 -
AttrThreadsScaled
GoObject v1.0 -
AttrTrampoline
GoObject v1.0 -
AttrType
GoObject v1.0 -
AttrUpperBound
GoObject v1.0 -
AttrUseLocation
GoObject v1.0 -
AttrUseUTF8
GoObject v1.0 -
AttrVarParam
GoObject v1.0 -
AttrVirtuality
GoObject v1.0 -
AttrVisibility
GoObject v1.0 -
AttrVtableElemLoc
GoObject v1.0 -
ClassAddrPtr
GoObject v1.0ClassAddrPtr represents values that are an int64 offset
into the "addr" section.
-
ClassAddress
GoObject v1.0ClassAddress represents values of type uint64 that are
addresses on the target machine.
-
ClassBlock
GoObject v1.0ClassBlock represents values of type []byte whose
interpretation depends on the attribute.
-
ClassConstant
GoObject v1.0ClassConstant represents values of type int64 that are
constants. The interpretation of this constant depends on
the attribute.
-
ClassExprLoc
GoObject v1.0ClassExprLoc represents values of type []byte that contain
an encoded DWARF expression or location description.
-
ClassFlag
GoObject v1.0ClassFlag represents values of type bool.
-
ClassLinePtr
GoObject v1.0ClassLinePtr represents values that are an int64 offset
into the "line" section.
-
ClassLocList
GoObject v1.0ClassLocList represents values that are an int64 offset
into the "loclists" section.
-
ClassLocListPtr
GoObject v1.0ClassLocListPtr represents values that are an int64 offset
into the "loclist" section.
-
ClassMacPtr
GoObject v1.0ClassMacPtr represents values that are an int64 offset into
the "mac" section.
-
ClassRangeListPtr
GoObject v1.0ClassRangeListPtr represents values that are an int64 offset into
the "rangelist" section.
-
ClassReference
GoObject v1.0ClassReference represents values that are an Offset offset
of an Entry in the info section (for use with Reader.Seek).
The DWARF specification combines ClassReference and
ClassReferenceSig into class "reference".
-
ClassReferenceAlt
GoObject v1.0ClassReferenceAlt represents values of type int64 that are
an offset into the DWARF "info" section of an alternate
object file.
-
ClassReferenceSig
GoObject v1.0ClassReferenceSig represents values that are a uint64 type
signature referencing a type Entry.
-
ClassRngList
GoObject v1.0ClassRngList represents values that are a uint64 offset
from the base of the "rnglists" section.
-
ClassRngListsPtr
GoObject v1.0ClassRngListsPtr represents values that are an int64 offset
into the "rnglists" section. These are used as the base for
ClassRngList values.
-
ClassStrOffsetsPtr
GoObject v1.0ClassStrOffsetsPtr represents values that are an int64
offset into the "str_offsets" section.
-
ClassString
GoObject v1.0ClassString represents values that are strings. If the
compilation unit specifies the AttrUseUTF8 flag (strongly
recommended), the string value will be encoded in UTF-8.
Otherwise, the encoding is unspecified.
-
ClassStringAlt
GoObject v1.0ClassStringAlt represents values of type int64 that are an
offset into the DWARF string section of an alternate object
file.
-
ClassUnknown
GoObject v1.0ClassUnknown represents values of unknown DWARF class.
-
ErrUnknownPC
Var v1.0ErrUnknownPC is the error returned by LineReader.ScanPC when the
seek PC is not covered by any entry in the line table.
-
TagAccessDeclaration
GoObject v1.0 -
TagArrayType
GoObject v1.0 -
TagAtomicType
GoObject v1.0 -
TagBaseType
GoObject v1.0 -
TagCallSite
GoObject v1.0 -
TagCallSiteParameter
GoObject v1.0 -
TagCatchDwarfBlock
GoObject v1.0 -
TagClassType
GoObject v1.0 -
TagCoarrayType
GoObject v1.0The following are new in DWARF 5.
-
TagCommonDwarfBlock
GoObject v1.0 -
TagCommonInclusion
GoObject v1.0 -
TagCompileUnit
GoObject v1.0 -
TagCondition
GoObject v1.0 -
TagConstType
GoObject v1.0 -
TagConstant
GoObject v1.0 -
TagDwarfProcedure
GoObject v1.0The following are new in DWARF 3.
-
TagDynamicType
GoObject v1.0 -
TagEntryPoint
GoObject v1.0 -
TagEnumerationType
GoObject v1.0 -
TagEnumerator
GoObject v1.0 -
TagFileType
GoObject v1.0 -
TagFormalParameter
GoObject v1.0 -
TagFriend
GoObject v1.0 -
TagGenericSubrange
GoObject v1.0 -
TagImmutableType
GoObject v1.0 -
TagImportedDeclaration
GoObject v1.0 -
TagImportedModule
GoObject v1.0 -
TagImportedUnit
GoObject v1.0 -
TagInheritance
GoObject v1.0 -
TagInlinedSubroutine
GoObject v1.0 -
TagInterfaceType
GoObject v1.0 -
TagLabel
GoObject v1.0 -
TagLexDwarfBlock
GoObject v1.0 -
TagMember
GoObject v1.0 -
TagModule
GoObject v1.0 -
TagMutableType
GoObject v1.0Later removed from DWARF.
-
TagNamelist
GoObject v1.0 -
TagNamelistItem
GoObject v1.0 -
TagNamespace
GoObject v1.0 -
TagPackedType
GoObject v1.0 -
TagPartialUnit
GoObject v1.0 -
TagPointerType
GoObject v1.0 -
TagPtrToMemberType
GoObject v1.0 -
TagReferenceType
GoObject v1.0 -
TagRestrictType
GoObject v1.0 -
TagRvalueReferenceType
GoObject v1.0 -
TagSetType
GoObject v1.0 -
TagSharedType
GoObject v1.0 -
TagSkeletonUnit
GoObject v1.0 -
TagStringType
GoObject v1.0 -
TagStructType
GoObject v1.0 -
TagSubprogram
GoObject v1.0 -
TagSubrangeType
GoObject v1.0 -
TagSubroutineType
GoObject v1.0 -
TagTemplateAlias
GoObject v1.0 -
TagTemplateTypeParameter
GoObject v1.0 -
TagTemplateValueParameter
GoObject v1.0 -
TagThrownType
GoObject v1.0 -
TagTryDwarfBlock
GoObject v1.0 -
TagTypeUnit
GoObject v1.0The following are new in DWARF 4.
-
TagTypedef
GoObject v1.0 -
TagUnionType
GoObject v1.0 -
TagUnspecifiedParameters
GoObject v1.0 -
TagUnspecifiedType
GoObject v1.0 -
TagVariable
GoObject v1.0 -
TagVariant
GoObject v1.0 -
TagVariantPart
GoObject v1.0 -
TagVolatileType
GoObject v1.0 -
TagWithStmt
GoObject v1.0
Functions, Macros, and Special Forms
-
New
Function v1.0(New abbrev aranges frame info line pubnames ranges str)
New returns a new Data object initialized from the given parameters.
Rather than calling this function directly, clients should typically use
the DWARF method of the File type of the appropriate package debug/elf,
debug/macho, or debug/pe.
The []byte arguments are the data from the corresponding debug section
in the object file; for example, for an ELF object, abbrev is the contents of
the ".debug_abbrev" section.
Go input arguments: (abbrev []byte, aranges []byte, frame []byte, info []byte, line []byte, pubnames []byte, ranges []byte, str []byte)
Go returns: (*Data, error)
Joker input arguments: [^arrayOfByte abbrev, ^arrayOfByte aranges, ^arrayOfByte frame, ^arrayOfByte info, ^arrayOfByte line, ^arrayOfByte pubnames, ^arrayOfByte ranges, ^arrayOfByte str]
Joker returns: [^*Data, ^Error]
Types
-
*AddrType
Concrete Type v1.0An AddrType represents a machine address type.
-
Basic
Receiver for *AddrType v1.0([])
-
String
Receiver for *AddrType v1.0([])
-
*ArrayType
Concrete Type v1.0An ArrayType represents a fixed size array type.
-
Common
Receiver for *ArrayType v1.0([])
-
Size
Receiver for *ArrayType v1.0([])
-
String
Receiver for *ArrayType v1.0([])
-
*Attr
Concrete Type v1.0An Attr identifies the attribute type in a DWARF Entry's Field.
-
*BasicType
Concrete Type v1.0A BasicType holds fields common to all basic types.
See the documentation for StructField for more info on the interpretation of
the BitSize/BitOffset/DataBitOffset fields.
-
Basic
Receiver for *BasicType v1.0([])
-
Common
Receiver for *BasicType v1.0([])
-
Size
Receiver for *BasicType v1.0([])
-
String
Receiver for *BasicType v1.0([])
-
*BoolType
Concrete Type v1.0A BoolType represents a boolean type.
-
Basic
Receiver for *BoolType v1.0([])
-
String
Receiver for *BoolType v1.0([])
-
*CharType
Concrete Type v1.0A CharType represents a signed character type.
-
Basic
Receiver for *CharType v1.0([])
-
String
Receiver for *CharType v1.0([])
-
*Class
Concrete Type v1.0A Class is the DWARF 4 class of an attribute value.
In general, a given attribute's value may take on one of several
possible classes defined by DWARF, each of which leads to a
slightly different interpretation of the attribute.
DWARF version 4 distinguishes attribute value classes more finely
than previous versions of DWARF. The reader will disambiguate
coarser classes from earlier versions of DWARF into the appropriate
DWARF 4 class. For example, DWARF 2 uses "constant" for constants
as well as all types of section offsets, but the reader will
canonicalize attributes in DWARF 2 files that refer to section
offsets to one of the Class*Ptr classes, even though these classes
were only defined in DWARF 3.
-
*CommonType
Concrete Type v1.0A CommonType holds fields common to multiple types.
If a field is not known or not applicable for a given type,
the zero value is used.
-
Common
Receiver for *CommonType v1.0([])
-
Size
Receiver for *CommonType v1.0([])
-
*ComplexType
Concrete Type v1.0A ComplexType represents a complex floating point type.
-
Basic
Receiver for *ComplexType v1.0([])
-
String
Receiver for *ComplexType v1.0([])
-
*Data
Concrete Type v1.0Data represents the DWARF debugging information
loaded from an executable file (for example, an ELF or Mach-O executable).
-
AddSection
Receiver for *Data v1.0([name contents])
AddSection adds another DWARF section by name. The name should be a
DWARF section name such as ".debug_addr", ".debug_str_offsets", and
so forth. This approach is used for new DWARF sections added in
DWARF 5 and later.
-
AddTypes
Receiver for *Data v1.0([name types])
AddTypes will add one .debug_types section to the DWARF data. A
typical object with DWARF version 4 debug info will have multiple
.debug_types sections. The name is used for error reporting only,
and serves to distinguish one .debug_types section from another.
-
LineReader
Receiver for *Data v1.0([cu])
LineReader returns a new reader for the line table of compilation
unit cu, which must be an Entry with tag TagCompileUnit.
If this compilation unit has no line table, it returns nil, nil.
-
Ranges
Receiver for *Data v1.0([e])
Ranges returns the PC ranges covered by e, a slice of [low,high) pairs.
Only some entry types, such as TagCompileUnit or TagSubprogram, have PC
ranges; for others, this will return nil with no error.
-
Reader
Receiver for *Data v1.0([])
Reader returns a new Reader for Data.
The reader is positioned at byte offset 0 in the DWARF ``info'' section.
-
Type
Receiver for *Data v1.0([off])
Type reads the type at off in the DWARF ``info'' section.
-
*DecodeError
Concrete Type v1.0 -
*DotDotDotType
Concrete Type v1.0A DotDotDotType represents the variadic ... function parameter.
-
Common
Receiver for *DotDotDotType v1.0([])
-
Size
Receiver for *DotDotDotType v1.0([])
-
String
Receiver for *DotDotDotType v1.0([])
-
*Entry
Concrete Type v1.0An entry is a sequence of attribute/value pairs.
-
AttrField
Receiver for *Entry v1.0([a])
AttrField returns the Field associated with attribute Attr in
Entry, or nil if there is no such attribute.
-
Val
Receiver for *Entry v1.0([a])
Val returns the value associated with attribute Attr in Entry,
or nil if there is no such attribute.
A common idiom is to merge the check for nil return with
the check that the value has the expected dynamic type, as in:
v, ok := e.Val(AttrSibling).(int64)
-
*EnumType
Concrete Type v1.0An EnumType represents an enumerated type.
The only indication of its native integer type is its ByteSize
(inside CommonType).
-
Common
Receiver for *EnumType v1.0([])
-
Size
Receiver for *EnumType v1.0([])
-
String
Receiver for *EnumType v1.0([])
-
*EnumValue
Concrete Type v1.0An EnumValue represents a single enumeration value.
-
*Field
Concrete Type v1.0A Field is a single attribute/value pair in an Entry.
A value can be one of several "attribute classes" defined by DWARF.
The Go types corresponding to each class are:
DWARF class Go type Class
----------- ------- -----
address uint64 ClassAddress
block []byte ClassBlock
constant int64 ClassConstant
flag bool ClassFlag
reference
to info dwarf.Offset ClassReference
to type unit uint64 ClassReferenceSig
string string ClassString
exprloc []byte ClassExprLoc
lineptr int64 ClassLinePtr
loclistptr int64 ClassLocListPtr
macptr int64 ClassMacPtr
rangelistptr int64 ClassRangeListPtr
For unrecognized or vendor-defined attributes, Class may be
ClassUnknown.
-
*FloatType
Concrete Type v1.0A FloatType represents a floating point type.
-
Basic
Receiver for *FloatType v1.0([])
-
String
Receiver for *FloatType v1.0([])
-
*FuncType
Concrete Type v1.0A FuncType represents a function type.
-
Common
Receiver for *FuncType v1.0([])
-
Size
Receiver for *FuncType v1.0([])
-
String
Receiver for *FuncType v1.0([])
-
*IntType
Concrete Type v1.0An IntType represents a signed integer type.
-
Basic
Receiver for *IntType v1.0([])
-
String
Receiver for *IntType v1.0([])
-
*LineEntry
Concrete Type v1.0A LineEntry is a row in a DWARF line table.
-
*LineFile
Concrete Type v1.0A LineFile is a source file referenced by a DWARF line table entry.
-
*LineReader
Concrete Type v1.0A LineReader reads a sequence of LineEntry structures from a DWARF
"line" section for a single compilation unit. LineEntries occur in
order of increasing PC and each LineEntry gives metadata for the
instructions from that LineEntry's PC to just before the next
LineEntry's PC. The last entry will have its EndSequence field set.
-
Files
Receiver for *LineReader v1.0([])
Files returns the file name table of this compilation unit as of
the current position in the line table. The file name table may be
referenced from attributes in this compilation unit such as
AttrDeclFile.
Entry 0 is always nil, since file index 0 represents "no file".
The file name table of a compilation unit is not fixed. Files
returns the file table as of the current position in the line
table. This may contain more entries than the file table at an
earlier position in the line table, though existing entries never
change.
-
Next
Receiver for *LineReader v1.0([entry])
Next sets *entry to the next row in this line table and moves to
the next row. If there are no more entries and the line table is
properly terminated, it returns io.EOF.
Rows are always in order of increasing entry.Address, but
entry.Line may go forward or backward.
-
Reset
Receiver for *LineReader v1.0([])
Reset repositions the line table reader at the beginning of the
line table.
-
Seek
Receiver for *LineReader v1.0([pos])
Seek restores the line table reader to a position returned by Tell.
The argument pos must have been returned by a call to Tell on this
line table.
-
SeekPC
Receiver for *LineReader v1.0([pc entry])
SeekPC sets *entry to the LineEntry that includes pc and positions
the reader on the next entry in the line table. If necessary, this
will seek backwards to find pc.
If pc is not covered by any entry in this line table, SeekPC
returns ErrUnknownPC. In this case, *entry and the final seek
position are unspecified.
Note that DWARF line tables only permit sequential, forward scans.
Hence, in the worst case, this takes time linear in the size of the
line table. If the caller wishes to do repeated fast PC lookups, it
should build an appropriate index of the line table.
-
Tell
Receiver for *LineReader v1.0([])
Tell returns the current position in the line table.
-
*LineReaderPos
Concrete Type v1.0A LineReaderPos represents a position in a line table.
-
*Offset
Concrete Type v1.0An Offset represents the location of an Entry within the DWARF info.
(See Reader.Seek.)
-
*PtrType
Concrete Type v1.0A PtrType represents a pointer type.
-
Common
Receiver for *PtrType v1.0([])
-
Size
Receiver for *PtrType v1.0([])
-
String
Receiver for *PtrType v1.0([])
-
*QualType
Concrete Type v1.0A QualType represents a type that has the C/C++ "const", "restrict", or "volatile" qualifier.
-
Common
Receiver for *QualType v1.0([])
-
Size
Receiver for *QualType v1.0([])
-
String
Receiver for *QualType v1.0([])
-
*Reader
Concrete Type v1.0A Reader allows reading Entry structures from a DWARF ``info'' section.
The Entry structures are arranged in a tree. The Reader's Next function
return successive entries from a pre-order traversal of the tree.
If an entry has children, its Children field will be true, and the children
follow, terminated by an Entry with Tag 0.
-
AddressSize
Receiver for *Reader v1.0([])
AddressSize returns the size in bytes of addresses in the current compilation
unit.
-
ByteOrder
Receiver for *Reader v1.0([])
ByteOrder returns the byte order in the current compilation unit.
-
Next
Receiver for *Reader v1.0([])
Next reads the next entry from the encoded entry stream.
It returns nil, nil when it reaches the end of the section.
It returns an error if the current offset is invalid or the data at the
offset cannot be decoded as a valid Entry.
-
Seek
Receiver for *Reader v1.0([off])
Seek positions the Reader at offset off in the encoded entry stream.
Offset 0 can be used to denote the first entry.
-
SeekPC
Receiver for *Reader v1.0([pc])
SeekPC returns the Entry for the compilation unit that includes pc,
and positions the reader to read the children of that unit. If pc
is not covered by any unit, SeekPC returns ErrUnknownPC and the
position of the reader is undefined.
Because compilation units can describe multiple regions of the
executable, in the worst case SeekPC must search through all the
ranges in all the compilation units. Each call to SeekPC starts the
search at the compilation unit of the last call, so in general
looking up a series of PCs will be faster if they are sorted. If
the caller wishes to do repeated fast PC lookups, it should build
an appropriate index using the Ranges method.
-
SkipChildren
Receiver for *Reader v1.0([])
SkipChildren skips over the child entries associated with
the last Entry returned by Next. If that Entry did not have
children or Next has not been called, SkipChildren is a no-op.
-
*StructField
Concrete Type v1.0A StructField represents a field in a struct, union, or C++ class type.
Bit Fields
The BitSize, BitOffset, and DataBitOffset fields describe the bit
size and offset of data members declared as bit fields in C/C++
struct/union/class types.
BitSize is the number of bits in the bit field.
DataBitOffset, if non-zero, is the number of bits from the start of
the enclosing entity (e.g. containing struct/class/union) to the
start of the bit field. This corresponds to the DW_AT_data_bit_offset
DWARF attribute that was introduced in DWARF 4.
BitOffset, if non-zero, is the number of bits between the most
significant bit of the storage unit holding the bit field to the
most significant bit of the bit field. Here "storage unit" is the
type name before the bit field (for a field "unsigned x:17", the
storage unit is "unsigned"). BitOffset values can vary depending on
the endianness of the system. BitOffset corresponds to the
DW_AT_bit_offset DWARF attribute that was deprecated in DWARF 4 and
removed in DWARF 5.
At most one of DataBitOffset and BitOffset will be non-zero;
DataBitOffset/BitOffset will only be non-zero if BitSize is
non-zero. Whether a C compiler uses one or the other
will depend on compiler vintage and command line options.
Here is an example of C/C++ bit field use, along with what to
expect in terms of DWARF bit offset info. Consider this code:
struct S {
int q;
int j:5;
int k:6;
int m:5;
int n:8;
} s;
For the code above, one would expect to see the following for
DW_AT_bit_offset values (using GCC 8):
Little | Big
Endian | Endian
|
"j": 27 | 0
"k": 21 | 5
"m": 16 | 11
"n": 8 | 16
Note that in the above the offsets are purely with respect to the
containing storage unit for j/k/m/n -- these values won't vary based
on the size of prior data members in the containing struct.
If the compiler emits DW_AT_data_bit_offset, the expected values
would be:
"j": 32
"k": 37
"m": 43
"n": 48
Here the value 32 for "j" reflects the fact that the bit field is
preceded by other data members (recall that DW_AT_data_bit_offset
values are relative to the start of the containing struct). Hence
DW_AT_data_bit_offset values can be quite large for structs with
many fields.
DWARF also allow for the possibility of base types that have
non-zero bit size and bit offset, so this information is also
captured for base types, but it is worth noting that it is not
possible to trigger this behavior using mainstream languages.
-
*StructType
Concrete Type v1.0A StructType represents a struct, union, or C++ class type.
-
Common
Receiver for *StructType v1.0([])
-
Defn
Receiver for *StructType v1.0([])
-
Size
Receiver for *StructType v1.0([])
-
String
Receiver for *StructType v1.0([])
-
*Tag
Concrete Type v1.0A Tag is the classification (the type) of an Entry.
-
*TypedefType
Concrete Type v1.0A TypedefType represents a named type.
-
Common
Receiver for *TypedefType v1.0([])
-
Size
Receiver for *TypedefType v1.0([])
-
String
Receiver for *TypedefType v1.0([])
-
*UcharType
Concrete Type v1.0A UcharType represents an unsigned character type.
-
Basic
Receiver for *UcharType v1.0([])
-
String
Receiver for *UcharType v1.0([])
-
*UintType
Concrete Type v1.0A UintType represents an unsigned integer type.
-
Basic
Receiver for *UintType v1.0([])
-
String
Receiver for *UintType v1.0([])
-
*UnspecifiedType
Concrete Type v1.0An UnspecifiedType represents an implicit, unknown, ambiguous or nonexistent type.
-
Basic
Receiver for *UnspecifiedType v1.0([])
-
String
Receiver for *UnspecifiedType v1.0([])
-
*UnsupportedType
Concrete Type v1.0An UnsupportedType is a placeholder returned in situations where we
encounter a type that isn't supported.
-
Common
Receiver for *UnsupportedType v1.0([])
-
Size
Receiver for *UnsupportedType v1.0([])
-
String
Receiver for *UnsupportedType v1.0([])
-
*VoidType
Concrete Type v1.0A VoidType represents the C void type.
-
Common
Receiver for *VoidType v1.0([])
-
Size
Receiver for *VoidType v1.0([])
-
String
Receiver for *VoidType v1.0([])
-
AddrType
Concrete Type v1.0An AddrType represents a machine address type.
-
ArrayType
Concrete Type v1.0An ArrayType represents a fixed size array type.
-
Attr
Concrete Type v1.0An Attr identifies the attribute type in a DWARF Entry's Field.
-
GoString
Receiver for Attr v1.0([])
-
String
Receiver for Attr v1.0([])
-
BasicType
Concrete Type v1.0A BasicType holds fields common to all basic types.
See the documentation for StructField for more info on the interpretation of
the BitSize/BitOffset/DataBitOffset fields.
-
BoolType
Concrete Type v1.0A BoolType represents a boolean type.
-
CharType
Concrete Type v1.0A CharType represents a signed character type.
-
Class
Concrete Type v1.0A Class is the DWARF 4 class of an attribute value.
In general, a given attribute's value may take on one of several
possible classes defined by DWARF, each of which leads to a
slightly different interpretation of the attribute.
DWARF version 4 distinguishes attribute value classes more finely
than previous versions of DWARF. The reader will disambiguate
coarser classes from earlier versions of DWARF into the appropriate
DWARF 4 class. For example, DWARF 2 uses "constant" for constants
as well as all types of section offsets, but the reader will
canonicalize attributes in DWARF 2 files that refer to section
offsets to one of the Class*Ptr classes, even though these classes
were only defined in DWARF 3.
-
GoString
Receiver for Class v1.0([])
-
String
Receiver for Class v1.0([])
-
CommonType
Concrete Type v1.0A CommonType holds fields common to multiple types.
If a field is not known or not applicable for a given type,
the zero value is used.
-
ComplexType
Concrete Type v1.0A ComplexType represents a complex floating point type.
-
Data
Concrete Type v1.0Data represents the DWARF debugging information
loaded from an executable file (for example, an ELF or Mach-O executable).
-
DecodeError
Concrete Type v1.0 -
Error
Receiver for DecodeError v1.0([])
-
DotDotDotType
Concrete Type v1.0A DotDotDotType represents the variadic ... function parameter.
-
Entry
Concrete Type v1.0An entry is a sequence of attribute/value pairs.
-
EnumType
Concrete Type v1.0An EnumType represents an enumerated type.
The only indication of its native integer type is its ByteSize
(inside CommonType).
-
EnumValue
Concrete Type v1.0An EnumValue represents a single enumeration value.
-
Field
Concrete Type v1.0A Field is a single attribute/value pair in an Entry.
A value can be one of several "attribute classes" defined by DWARF.
The Go types corresponding to each class are:
DWARF class Go type Class
----------- ------- -----
address uint64 ClassAddress
block []byte ClassBlock
constant int64 ClassConstant
flag bool ClassFlag
reference
to info dwarf.Offset ClassReference
to type unit uint64 ClassReferenceSig
string string ClassString
exprloc []byte ClassExprLoc
lineptr int64 ClassLinePtr
loclistptr int64 ClassLocListPtr
macptr int64 ClassMacPtr
rangelistptr int64 ClassRangeListPtr
For unrecognized or vendor-defined attributes, Class may be
ClassUnknown.
-
FloatType
Concrete Type v1.0A FloatType represents a floating point type.
-
FuncType
Concrete Type v1.0A FuncType represents a function type.
-
IntType
Concrete Type v1.0An IntType represents a signed integer type.
-
LineEntry
Concrete Type v1.0A LineEntry is a row in a DWARF line table.
-
LineFile
Concrete Type v1.0A LineFile is a source file referenced by a DWARF line table entry.
-
LineReader
Concrete Type v1.0A LineReader reads a sequence of LineEntry structures from a DWARF
"line" section for a single compilation unit. LineEntries occur in
order of increasing PC and each LineEntry gives metadata for the
instructions from that LineEntry's PC to just before the next
LineEntry's PC. The last entry will have its EndSequence field set.
-
LineReaderPos
Concrete Type v1.0A LineReaderPos represents a position in a line table.
-
Offset
Concrete Type v1.0An Offset represents the location of an Entry within the DWARF info.
(See Reader.Seek.)
-
PtrType
Concrete Type v1.0A PtrType represents a pointer type.
-
QualType
Concrete Type v1.0A QualType represents a type that has the C/C++ "const", "restrict", or "volatile" qualifier.
-
Reader
Concrete Type v1.0A Reader allows reading Entry structures from a DWARF ``info'' section.
The Entry structures are arranged in a tree. The Reader's Next function
return successive entries from a pre-order traversal of the tree.
If an entry has children, its Children field will be true, and the children
follow, terminated by an Entry with Tag 0.
-
StructField
Concrete Type v1.0A StructField represents a field in a struct, union, or C++ class type.
Bit Fields
The BitSize, BitOffset, and DataBitOffset fields describe the bit
size and offset of data members declared as bit fields in C/C++
struct/union/class types.
BitSize is the number of bits in the bit field.
DataBitOffset, if non-zero, is the number of bits from the start of
the enclosing entity (e.g. containing struct/class/union) to the
start of the bit field. This corresponds to the DW_AT_data_bit_offset
DWARF attribute that was introduced in DWARF 4.
BitOffset, if non-zero, is the number of bits between the most
significant bit of the storage unit holding the bit field to the
most significant bit of the bit field. Here "storage unit" is the
type name before the bit field (for a field "unsigned x:17", the
storage unit is "unsigned"). BitOffset values can vary depending on
the endianness of the system. BitOffset corresponds to the
DW_AT_bit_offset DWARF attribute that was deprecated in DWARF 4 and
removed in DWARF 5.
At most one of DataBitOffset and BitOffset will be non-zero;
DataBitOffset/BitOffset will only be non-zero if BitSize is
non-zero. Whether a C compiler uses one or the other
will depend on compiler vintage and command line options.
Here is an example of C/C++ bit field use, along with what to
expect in terms of DWARF bit offset info. Consider this code:
struct S {
int q;
int j:5;
int k:6;
int m:5;
int n:8;
} s;
For the code above, one would expect to see the following for
DW_AT_bit_offset values (using GCC 8):
Little | Big
Endian | Endian
|
"j": 27 | 0
"k": 21 | 5
"m": 16 | 11
"n": 8 | 16
Note that in the above the offsets are purely with respect to the
containing storage unit for j/k/m/n -- these values won't vary based
on the size of prior data members in the containing struct.
If the compiler emits DW_AT_data_bit_offset, the expected values
would be:
"j": 32
"k": 37
"m": 43
"n": 48
Here the value 32 for "j" reflects the fact that the bit field is
preceded by other data members (recall that DW_AT_data_bit_offset
values are relative to the start of the containing struct). Hence
DW_AT_data_bit_offset values can be quite large for structs with
many fields.
DWARF also allow for the possibility of base types that have
non-zero bit size and bit offset, so this information is also
captured for base types, but it is worth noting that it is not
possible to trigger this behavior using mainstream languages.
-
StructType
Concrete Type v1.0A StructType represents a struct, union, or C++ class type.
-
Tag
Concrete Type v1.0A Tag is the classification (the type) of an Entry.
-
GoString
Receiver for Tag v1.0([])
-
String
Receiver for Tag v1.0([])
-
Type
Abstract Type v1.0A Type conventionally represents a pointer to any of the
specific Type structures (CharType, StructType, etc.).
-
Common
Method for Type v1.0([])
-
Size
Method for Type v1.0([])
-
String
Method for Type v1.0([])
-
TypedefType
Concrete Type v1.0A TypedefType represents a named type.
-
UcharType
Concrete Type v1.0A UcharType represents an unsigned character type.
-
UintType
Concrete Type v1.0A UintType represents an unsigned integer type.
-
UnspecifiedType
Concrete Type v1.0An UnspecifiedType represents an implicit, unknown, ambiguous or nonexistent type.
-
UnsupportedType
Concrete Type v1.0An UnsupportedType is a placeholder returned in situations where we
encounter a type that isn't supported.
-
VoidType
Concrete Type v1.0A VoidType represents the C void type.
-
arrayOfAddrType
Concrete Type v1.0An AddrType represents a machine address type.
-
arrayOfArrayType
Concrete Type v1.0An ArrayType represents a fixed size array type.
-
arrayOfAttr
Concrete Type v1.0An Attr identifies the attribute type in a DWARF Entry's Field.
-
arrayOfBasicType
Concrete Type v1.0A BasicType holds fields common to all basic types.
See the documentation for StructField for more info on the interpretation of
the BitSize/BitOffset/DataBitOffset fields.
-
arrayOfBoolType
Concrete Type v1.0A BoolType represents a boolean type.
-
arrayOfCharType
Concrete Type v1.0A CharType represents a signed character type.
-
arrayOfClass
Concrete Type v1.0A Class is the DWARF 4 class of an attribute value.
In general, a given attribute's value may take on one of several
possible classes defined by DWARF, each of which leads to a
slightly different interpretation of the attribute.
DWARF version 4 distinguishes attribute value classes more finely
than previous versions of DWARF. The reader will disambiguate
coarser classes from earlier versions of DWARF into the appropriate
DWARF 4 class. For example, DWARF 2 uses "constant" for constants
as well as all types of section offsets, but the reader will
canonicalize attributes in DWARF 2 files that refer to section
offsets to one of the Class*Ptr classes, even though these classes
were only defined in DWARF 3.
-
arrayOfCommonType
Concrete Type v1.0A CommonType holds fields common to multiple types.
If a field is not known or not applicable for a given type,
the zero value is used.
-
arrayOfComplexType
Concrete Type v1.0A ComplexType represents a complex floating point type.
-
arrayOfData
Concrete Type v1.0Data represents the DWARF debugging information
loaded from an executable file (for example, an ELF or Mach-O executable).
-
arrayOfDecodeError
Concrete Type v1.0 -
arrayOfDotDotDotType
Concrete Type v1.0A DotDotDotType represents the variadic ... function parameter.
-
arrayOfEntry
Concrete Type v1.0An entry is a sequence of attribute/value pairs.
-
arrayOfEnumType
Concrete Type v1.0An EnumType represents an enumerated type.
The only indication of its native integer type is its ByteSize
(inside CommonType).
-
arrayOfEnumValue
Concrete Type v1.0An EnumValue represents a single enumeration value.
-
arrayOfField
Concrete Type v1.0A Field is a single attribute/value pair in an Entry.
A value can be one of several "attribute classes" defined by DWARF.
The Go types corresponding to each class are:
DWARF class Go type Class
----------- ------- -----
address uint64 ClassAddress
block []byte ClassBlock
constant int64 ClassConstant
flag bool ClassFlag
reference
to info dwarf.Offset ClassReference
to type unit uint64 ClassReferenceSig
string string ClassString
exprloc []byte ClassExprLoc
lineptr int64 ClassLinePtr
loclistptr int64 ClassLocListPtr
macptr int64 ClassMacPtr
rangelistptr int64 ClassRangeListPtr
For unrecognized or vendor-defined attributes, Class may be
ClassUnknown.
-
arrayOfFloatType
Concrete Type v1.0A FloatType represents a floating point type.
-
arrayOfFuncType
Concrete Type v1.0A FuncType represents a function type.
-
arrayOfIntType
Concrete Type v1.0An IntType represents a signed integer type.
-
arrayOfLineEntry
Concrete Type v1.0A LineEntry is a row in a DWARF line table.
-
arrayOfLineFile
Concrete Type v1.0A LineFile is a source file referenced by a DWARF line table entry.
-
arrayOfLineReader
Concrete Type v1.0A LineReader reads a sequence of LineEntry structures from a DWARF
"line" section for a single compilation unit. LineEntries occur in
order of increasing PC and each LineEntry gives metadata for the
instructions from that LineEntry's PC to just before the next
LineEntry's PC. The last entry will have its EndSequence field set.
-
arrayOfLineReaderPos
Concrete Type v1.0A LineReaderPos represents a position in a line table.
-
arrayOfOffset
Concrete Type v1.0An Offset represents the location of an Entry within the DWARF info.
(See Reader.Seek.)
-
arrayOfPtrType
Concrete Type v1.0A PtrType represents a pointer type.
-
arrayOfQualType
Concrete Type v1.0A QualType represents a type that has the C/C++ "const", "restrict", or "volatile" qualifier.
-
arrayOfReader
Concrete Type v1.0A Reader allows reading Entry structures from a DWARF ``info'' section.
The Entry structures are arranged in a tree. The Reader's Next function
return successive entries from a pre-order traversal of the tree.
If an entry has children, its Children field will be true, and the children
follow, terminated by an Entry with Tag 0.
-
arrayOfStructField
Concrete Type v1.0A StructField represents a field in a struct, union, or C++ class type.
Bit Fields
The BitSize, BitOffset, and DataBitOffset fields describe the bit
size and offset of data members declared as bit fields in C/C++
struct/union/class types.
BitSize is the number of bits in the bit field.
DataBitOffset, if non-zero, is the number of bits from the start of
the enclosing entity (e.g. containing struct/class/union) to the
start of the bit field. This corresponds to the DW_AT_data_bit_offset
DWARF attribute that was introduced in DWARF 4.
BitOffset, if non-zero, is the number of bits between the most
significant bit of the storage unit holding the bit field to the
most significant bit of the bit field. Here "storage unit" is the
type name before the bit field (for a field "unsigned x:17", the
storage unit is "unsigned"). BitOffset values can vary depending on
the endianness of the system. BitOffset corresponds to the
DW_AT_bit_offset DWARF attribute that was deprecated in DWARF 4 and
removed in DWARF 5.
At most one of DataBitOffset and BitOffset will be non-zero;
DataBitOffset/BitOffset will only be non-zero if BitSize is
non-zero. Whether a C compiler uses one or the other
will depend on compiler vintage and command line options.
Here is an example of C/C++ bit field use, along with what to
expect in terms of DWARF bit offset info. Consider this code:
struct S {
int q;
int j:5;
int k:6;
int m:5;
int n:8;
} s;
For the code above, one would expect to see the following for
DW_AT_bit_offset values (using GCC 8):
Little | Big
Endian | Endian
|
"j": 27 | 0
"k": 21 | 5
"m": 16 | 11
"n": 8 | 16
Note that in the above the offsets are purely with respect to the
containing storage unit for j/k/m/n -- these values won't vary based
on the size of prior data members in the containing struct.
If the compiler emits DW_AT_data_bit_offset, the expected values
would be:
"j": 32
"k": 37
"m": 43
"n": 48
Here the value 32 for "j" reflects the fact that the bit field is
preceded by other data members (recall that DW_AT_data_bit_offset
values are relative to the start of the containing struct). Hence
DW_AT_data_bit_offset values can be quite large for structs with
many fields.
DWARF also allow for the possibility of base types that have
non-zero bit size and bit offset, so this information is also
captured for base types, but it is worth noting that it is not
possible to trigger this behavior using mainstream languages.
-
arrayOfStructType
Concrete Type v1.0A StructType represents a struct, union, or C++ class type.
-
arrayOfTag
Concrete Type v1.0A Tag is the classification (the type) of an Entry.
-
arrayOfType
Concrete Type v1.0A Type conventionally represents a pointer to any of the
specific Type structures (CharType, StructType, etc.).
-
arrayOfTypedefType
Concrete Type v1.0A TypedefType represents a named type.
-
arrayOfUcharType
Concrete Type v1.0A UcharType represents an unsigned character type.
-
arrayOfUintType
Concrete Type v1.0A UintType represents an unsigned integer type.
-
arrayOfUnspecifiedType
Concrete Type v1.0An UnspecifiedType represents an implicit, unknown, ambiguous or nonexistent type.
-
arrayOfUnsupportedType
Concrete Type v1.0An UnsupportedType is a placeholder returned in situations where we
encounter a type that isn't supported.
-
arrayOfVoidType
Concrete Type v1.0A VoidType represents the C void type.