reader

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2018 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var TypeNotFoundErr = errors.New("no type entry found, use 'types' for a list of valid types")

Functions

This section is empty.

Types

type Entry added in v1.0.0

type Entry interface {
	Val(dwarf.Attr) interface{}
}

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 LoadAbstractOrigin added in v1.0.0

func LoadAbstractOrigin(entry *dwarf.Entry, aordr *dwarf.Reader) (Entry, dwarf.Offset)

LoadAbstractOrigin loads the entry corresponding to the DW_AT_abstract_origin of entry and returns a combination of entry and its abstract origin.

type InlineStackReader added in v1.1.0

type InlineStackReader struct {
	// contains filtered or unexported fields
}

InlineStackReader provides a way to read the stack of inlined calls at a specified PC address.

func InlineStack added in v1.1.0

func InlineStack(dwarf *dwarf.Data, fnoff dwarf.Offset, pc uint64) *InlineStackReader

InlineStack returns an InlineStackReader for the specified function and PC address. If pc is 0 then all inlined calls will be returned.

func (*InlineStackReader) Entry added in v1.1.0

func (irdr *InlineStackReader) Entry() *dwarf.Entry

Entry returns the DIE for the current inlined call.

func (*InlineStackReader) Err added in v1.1.0

func (irdr *InlineStackReader) Err() error

Err returns an error, if any was encountered.

func (*InlineStackReader) Next added in v1.1.0

func (irdr *InlineStackReader) Next() bool

Next reads next inlined call in the stack, returns false if there aren't any.

func (*InlineStackReader) SkipChildren added in v1.1.0

func (irdr *InlineStackReader) SkipChildren()

SkipChildren skips all children of the current inlined call.

type Reader

type Reader struct {
	*dwarf.Reader
	// contains filtered or unexported fields
}

func New

func New(data *dwarf.Data) *Reader

New returns a reader for the specified dwarf data.

func (*Reader) AddrFor

func (reader *Reader) AddrFor(name string) (uint64, error)

Returns the address for the named entry.

func (*Reader) AddrForMember

func (reader *Reader) AddrForMember(member string, initialInstructions []byte) (uint64, error)

Returns the address for the named struct member. Expects the reader to be at the parent entry or one of the parents children, thus does not seek to parent by itself.

func (*Reader) FindEntryNamed

func (reader *Reader) FindEntryNamed(name string, member bool) (*dwarf.Entry, error)

Finds the entry for 'name'.

func (*Reader) InstructionsForEntry

func (reader *Reader) InstructionsForEntry(entry *dwarf.Entry) ([]byte, error)

func (*Reader) InstructionsForEntryNamed

func (reader *Reader) InstructionsForEntryNamed(name string, member bool) ([]byte, error)

func (*Reader) NextCompileUnit

func (reader *Reader) NextCompileUnit() (*dwarf.Entry, error)

func (*Reader) NextMemberVariable

func (reader *Reader) NextMemberVariable() (*dwarf.Entry, error)

NextMemberVariable moves the reader to the next debug entry that describes a member variable and returns the entry.

func (*Reader) NextPackageVariable

func (reader *Reader) NextPackageVariable() (*dwarf.Entry, error)

NextPackageVariable moves the reader to the next debug entry that describes a package variable. Any TagVariable entry that is not inside a sub prgram entry and is marked external is considered a package variable.

func (*Reader) NextType

func (reader *Reader) NextType() (*dwarf.Entry, error)

func (*Reader) Seek

func (reader *Reader) Seek(off dwarf.Offset)

Seek moves the reader to an arbitrary offset.

func (*Reader) SeekToEntry

func (reader *Reader) SeekToEntry(entry *dwarf.Entry) error

SeekToEntry moves the reader to an arbitrary entry.

func (*Reader) SeekToFunction

func (reader *Reader) SeekToFunction(pc uint64) (*dwarf.Entry, error)

SeekToFunctionEntry moves the reader to the function that includes the specified program counter.

func (*Reader) SeekToType

func (reader *Reader) SeekToType(entry *dwarf.Entry, resolveTypedefs bool, resolvePointerTypes bool) (*dwarf.Entry, error)

SeekToType moves the reader to the type specified by the entry, optionally resolving typedefs and pointer types. If the reader is set to a struct type the NextMemberVariable call can be used to walk all member data.

func (*Reader) SeekToTypeNamed

func (reader *Reader) SeekToTypeNamed(name string) (*dwarf.Entry, error)

SeekToTypeNamed moves the reader to the type specified by the name. If the reader is set to a struct type the NextMemberVariable call can be used to walk all member data.

type VariableReader added in v1.0.0

type VariableReader struct {
	// contains filtered or unexported fields
}

VariableReader provides a way of reading the local variables and formal parameters of a function that are visible at the specified PC address.

func Variables added in v1.0.0

func Variables(dwarf *dwarf.Data, off dwarf.Offset, pc uint64, line int, onlyVisible bool) *VariableReader

Variables returns a VariableReader for the function or lexical block at off. If onlyVisible is true only variables visible at pc will be returned by the VariableReader.

func (*VariableReader) Depth added in v1.0.0

func (vrdr *VariableReader) Depth() int

Depth returns the depth of the current scope

func (*VariableReader) Entry added in v1.0.0

func (vrdr *VariableReader) Entry() *dwarf.Entry

Entry returns the current variable entry.

func (*VariableReader) Err added in v1.0.0

func (vrdr *VariableReader) Err() error

Err returns the error if there was one.

func (*VariableReader) Next added in v1.0.0

func (vrdr *VariableReader) Next() bool

Next reads the next variable entry, returns false if there aren't any.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL