Documentation
¶
Index ¶
- Constants
- func GetDebugSectionElf(f *elf.File, name string) ([]byte, error)
- func GetDebugSectionMacho(f *macho.File, name string) ([]byte, error)
- func GetDebugSectionPE(f *pe.File, name string) ([]byte, error)
- type AddrType
- type ArrayType
- type BasicType
- type BoolType
- type ChanType
- type CharType
- type CommonType
- type ComplexType
- type DebugAddr
- type DebugAddrSection
- type DotDotDotType
- type Entry
- type EnumType
- type EnumValue
- type FloatType
- type FuncType
- type IntType
- type InterfaceType
- type MapType
- type ParametricType
- type PtrType
- type QualType
- type SliceType
- type StringType
- type StructField
- type StructType
- type Tree
- type Type
- type TypedefType
- type UcharType
- type UintType
- type UnspecifiedType
- type UnsupportedType
- type VoidType
Constants ¶
const ( AttrGoKind dwarf.Attr = 0x2900 AttrGoKey dwarf.Attr = 0x2901 AttrGoElem dwarf.Attr = 0x2902 AttrGoEmbeddedField dwarf.Attr = 0x2903 AttrGoRuntimeType dwarf.Attr = 0x2904 AttrGoPackageName dwarf.Attr = 0x2905 AttrGoDictIndex dwarf.Attr = 0x2906 AttrGoClosureOffset dwarf.Attr = 0x2907 )
Variables ¶
This section is empty.
Functions ¶
func GetDebugSectionElf ¶
GetDebugSectionElf returns the data contents of the specified debug section, decompressing it if it is compressed. For example GetDebugSectionElf("line") will return the contents of .debug_line, if .debug_line doesn't exist it will try to return the decompressed contents of .zdebug_line.
func GetDebugSectionMacho ¶
GetDebugSectionMacho returns the data contents of the specified debug section, decompressing it if it is compressed. For example GetDebugSectionMacho("line") will return the contents of __debug_line, if __debug_line doesn't exist it will try to return the decompressed contents of __zdebug_line.
func GetDebugSectionPE ¶
GetDebugSectionPE returns the data contents of the specified debug section, decompressing it if it is compressed. For example GetDebugSectionPE("line") will return the contents of .debug_line, if .debug_line doesn't exist it will try to return the decompressed contents of .zdebug_line.
Types ¶
type ArrayType ¶
type ArrayType struct {
CommonType
Type Type
StrideBitSize int64 // if > 0, number of bits to hold each element
Count int64 // if == -1, an incomplete array, like char x[].
}
An ArrayType represents a fixed size array type.
type BasicType ¶
type BasicType struct {
CommonType
BitSize int64
BitOffset int64
}
A BasicType holds fields common to all basic types.
type ChanType ¶
type ChanType struct {
TypedefType
ElemType Type
}
A ChanType represents a Go channel type.
type CommonType ¶
type CommonType struct {
Index int // index supplied by caller of ReadType
ByteSize int64 // size of value of this type, in bytes
Name string // name that can be used to refer to type
ReflectKind reflect.Kind // the reflect kind of the type.
Offset dwarf.Offset // the offset at which this type was read
}
A 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.
func (*CommonType) Align ¶
func (c *CommonType) Align() int64
func (*CommonType) Common ¶
func (c *CommonType) Common() *CommonType
func (*CommonType) Size ¶
func (c *CommonType) Size() int64
type ComplexType ¶
type ComplexType struct {
BasicType
}
A ComplexType represents a complex floating point type.
type DebugAddr ¶
type DebugAddr struct {
*DebugAddrSection
// contains filtered or unexported fields
}
DebugAddr represents a subsection of the debug_addr section with a specific base address
type DebugAddrSection ¶
type DebugAddrSection struct {
// contains filtered or unexported fields
}
DebugAddrSection represents the debug_addr section of DWARFv5. See DWARFv5 section 7.27 page 241 and following.
func ParseAddr ¶
func ParseAddr(data []byte) *DebugAddrSection
ParseAddr parses the header of a debug_addr section.
func (*DebugAddrSection) GetSubsection ¶
func (addr *DebugAddrSection) GetSubsection(addrBase uint64) *DebugAddr
GetSubsection returns the subsection of debug_addr starting at addrBase
type DotDotDotType ¶
type DotDotDotType struct {
CommonType
}
A DotDotDotType represents the variadic ... function parameter.
func (*DotDotDotType) String ¶
func (t *DotDotDotType) String() string
type Entry ¶
Entry represents a debug_info entry. When calling Val, if the entry does not have the specified attribute, the entry specified by DW_AT_abstract_origin will be searched recursively.
func LoadAbstractOriginAndSpecification ¶
func LoadAbstractOriginAndSpecification(entry *dwarf.Entry, aordr *dwarf.Reader) (Entry, dwarf.Offset)
LoadAbstractOriginAndSpecification loads the entry corresponding to the DW_AT_abstract_origin and/or DW_AT_specification of entry and returns a combination of entry and its abstract origin. If a DIE has both a specification and an abstract origin the specification will be ignored, the DWARF standard is unclear on how this should be handled
type EnumType ¶
type EnumType struct {
CommonType
EnumName string
Val []*EnumValue
}
An EnumType represents an enumerated type. The only indication of its native integer type is its ByteSize (inside CommonType).
type FuncType ¶
type FuncType struct {
CommonType
ReturnType Type
ParamType []Type
}
A FuncType represents a function type.
type InterfaceType ¶
type InterfaceType struct {
TypedefType
}
An InterfaceType represents a Go interface.
func (*InterfaceType) String ¶
func (t *InterfaceType) String() string
type MapType ¶
type MapType struct {
TypedefType
KeyType Type
ElemType Type
}
A MapType represents a Go map type. It looks like a TypedefType, describing the runtime-internal structure, with extra fields.
type ParametricType ¶
type ParametricType struct {
TypedefType
DictIndex int64
}
type QualType ¶
type QualType struct {
CommonType
Qual string
Type Type
}
A QualType represents a type that has the C/C++ "const", "restrict", or "volatile" qualifier.
type SliceType ¶
type SliceType struct {
StructType
ElemType Type
}
A SliceType represents a Go slice type. It looks like a StructType, describing the runtime-internal structure, with extra fields.
type StringType ¶
type StringType struct {
StructType
}
A StringType represents a Go string type. It looks like a StructType, describing the runtime-internal structure, but we wrap it for neatness.
func (*StringType) String ¶
func (t *StringType) String() string
type StructField ¶
type StructField struct {
Name string
Type Type
ByteOffset int64
ByteSize int64
BitOffset int64 // within the ByteSize bytes at ByteOffset
BitSize int64 // zero if not a bit field
Embedded bool
}
A StructField represents a field in a struct, union, or C++ class type.
type StructType ¶
type StructType struct {
CommonType
StructName string
Kind string // "struct", "union", or "class".
Field []*StructField
Incomplete bool // if true, struct, union, class is declared but not defined
}
A StructType represents a struct, union, or C++ class type.
func (*StructType) Align ¶
func (t *StructType) Align() int64
func (*StructType) Defn ¶
func (t *StructType) Defn(recCheck recCheck) string
func (*StructType) Size ¶
func (t *StructType) Size() int64
func (*StructType) String ¶
func (t *StructType) String() string
type Tree ¶
type Tree struct {
Entry
Tag dwarf.Tag
Offset dwarf.Offset
Ranges [][2]uint64
Children []*Tree
// contains filtered or unexported fields
}
Tree represents a tree of dwarf objects.
func EntryToTree ¶
EntryToTree converts a single entry, without children, to a *Tree object.
func LoadTree ¶
LoadTree returns the tree of DIE rooted at offset 'off'. Abstract origins are automatically loaded, if present. DIE ranges are bubbled up automatically, if the child of a DIE covers a range of addresses that is not covered by its parent LoadTree will fix the parent entry.
func (*Tree) ContainsPC ¶
ContainsPC returns true if the ranges of this DIE contains PC.
type Type ¶
type Type interface {
Common() *CommonType
String() string
Size() int64
Align() int64
// contains filtered or unexported methods
}
A Type conventionally represents a pointer to any of the specific Type structures (CharType, StructType, etc.).
func FakeBasicType ¶
FakeBasicType synthesizes a basic type numeric type (int8, uint16, float32, etc)
func FakeSliceType ¶
FakeSliceType synthesizes a slice type with the given field type.
type TypedefType ¶
type TypedefType struct {
CommonType
Type Type
}
A TypedefType represents a named type.
func (*TypedefType) Align ¶
func (t *TypedefType) Align() int64
func (*TypedefType) Size ¶
func (t *TypedefType) Size() int64
func (*TypedefType) String ¶
func (t *TypedefType) String() string
type UcharType ¶
type UcharType struct {
BasicType
}
A UcharType represents an unsigned character type.
type UnspecifiedType ¶
type UnspecifiedType struct {
BasicType
}
An UnspecifiedType represents an implicit, unknown, ambiguous or nonexistent type.
type UnsupportedType ¶
type UnsupportedType struct {
CommonType
Tag dwarf.Tag
}
An UnsupportedType is a placeholder returned in situations where we encounter a type that isn't supported.
func (*UnsupportedType) String ¶
func (t *UnsupportedType) String() string