line

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: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DW_LNS_copy             = 1
	DW_LNS_advance_pc       = 2
	DW_LNS_advance_line     = 3
	DW_LNS_set_file         = 4
	DW_LNS_set_column       = 5
	DW_LNS_negate_stmt      = 6
	DW_LNS_set_basic_block  = 7
	DW_LNS_const_add_pc     = 8
	DW_LNS_fixed_advance_pc = 9
	DW_LNS_prologue_end     = 10
	DW_LNS_epilogue_begin   = 11
)

Special opcodes

View Source
const (
	DW_LINE_end_sequence = 1
	DW_LINE_set_address  = 2
	DW_LINE_define_file  = 3
)

Extended opcodes

Variables

View Source
var NoSourceError = errors.New("no source available")

Functions

This section is empty.

Types

type DebugLineInfo

type DebugLineInfo struct {
	Prologue     *DebugLinePrologue
	IncludeDirs  []string
	FileNames    []*FileEntry
	Instructions []byte
	Lookup       map[string]*FileEntry

	Logf func(string, ...interface{})
	// contains filtered or unexported fields
}

func Parse

func Parse(compdir string, buf *bytes.Buffer, logfn func(string, ...interface{})) *DebugLineInfo

Parse parses a single debug_line segment from buf. Compdir is the DW_AT_comp_dir attribute of the associated compile unit.

func (*DebugLineInfo) AllPCsBetween added in v1.0.0

func (lineInfo *DebugLineInfo) AllPCsBetween(begin, end uint64, excludeFile string, excludeLine int) ([]uint64, error)

AllPCsBetween returns all PC addresses between begin and end (including both begin and end) that have the is_stmt flag set and do not belong to excludeFile:excludeLine

func (*DebugLineInfo) AllPCsForFileLine added in v1.0.0

func (lineInfo *DebugLineInfo) AllPCsForFileLine(f string, l int) (pcs []uint64)

Returns all PCs for a given file/line. Useful for loops where the 'for' line could be split amongst 2 PCs.

func (*DebugLineInfo) LineToPC added in v1.0.0

func (lineInfo *DebugLineInfo) LineToPC(filename string, lineno int) uint64

LineToPC returns the first PC address associated with filename:lineno.

func (*DebugLineInfo) PCToLine added in v1.0.0

func (lineInfo *DebugLineInfo) PCToLine(basePC, pc uint64) (string, int)

PCToLine returns the filename and line number associated with pc. If pc isn't found inside lineInfo's table it will return the filename and line number associated with the closest PC address preceding pc. basePC will be used for caching, it's normally the entry point for the function containing pc.

func (*DebugLineInfo) PrologueEndPC added in v1.1.0

func (lineInfo *DebugLineInfo) PrologueEndPC(start, end uint64) (pc uint64, file string, line int, ok bool)

PrologueEndPC returns the first PC address marked as prologue_end in the half open interval [start, end)

type DebugLinePrologue

type DebugLinePrologue struct {
	UnitLength     uint32
	Version        uint16
	Length         uint32
	MinInstrLength uint8
	InitialIsStmt  uint8
	LineBase       int8
	LineRange      uint8
	OpcodeBase     uint8
	StdOpLengths   []uint8
}

type DebugLines

type DebugLines []*DebugLineInfo

func ParseAll added in v1.0.0

func ParseAll(data []byte, logfn func(string, ...interface{})) DebugLines

ParseAll parses all debug_line segments found in data

type FileEntry

type FileEntry struct {
	Path        string
	DirIdx      uint64
	LastModTime uint64
	Length      uint64
}

type Location

type Location struct {
	File    string
	Line    int
	Address uint64
	Delta   int
}

type StateMachine

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

func (*StateMachine) PCToLine added in v1.0.0

func (sm *StateMachine) PCToLine(pc uint64) (string, int, bool)

Jump to

Keyboard shortcuts

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