type version … const verUnknown … const ver11 … const ver12 … const ver116 … const ver118 … const ver120 … type LineTable … const oldQuantum … func (t *LineTable) parse(targetPC uint64, targetLine int) (b []byte, pc uint64, line int) { … } func (t *LineTable) slice(pc uint64) *LineTable { … } // PCToLine returns the line number for the given program counter. // // Deprecated: Use Table's PCToLine method instead. func (t *LineTable) PCToLine(pc uint64) int { … } // LineToPC returns the program counter for the given line number, // considering only program counters before maxpc. // // Deprecated: Use Table's LineToPC method instead. func (t *LineTable) LineToPC(line int, maxpc uint64) uint64 { … } // NewLineTable returns a new PC/line table // corresponding to the encoded data. // Text must be the start address of the // corresponding text segment, with the exact // value stored in the 'runtime.text' symbol. // This value may differ from the start // address of the text segment if // binary was built with cgo enabled. func NewLineTable(data []byte, text uint64) *LineTable { … } // isGo12 reports whether this is a Go 1.2 (or later) symbol table. func (t *LineTable) isGo12() bool { … } const go12magic … const go116magic … const go118magic … const go120magic … // uintptr returns the pointer-sized value encoded at b. // The pointer size is dictated by the table being read. func (t *LineTable) uintptr(b []byte) uint64 { … } // parsePclnTab parses the pclntab, setting the version. func (t *LineTable) parsePclnTab() { … } // go12Funcs returns a slice of Funcs derived from the Go 1.2+ pcln table. func (t *LineTable) go12Funcs() []Func { … } // findFunc returns the funcData corresponding to the given program counter. func (t *LineTable) findFunc(pc uint64) funcData { … } // readvarint reads, removes, and returns a varint from *pp. func (t *LineTable) readvarint(pp *[]byte) uint32 { … } // funcName returns the name of the function found at off. func (t *LineTable) funcName(off uint32) string { … } // stringFrom returns a Go string found at off from a position. func (t *LineTable) stringFrom(arr []byte, off uint32) string { … } // string returns a Go string found at off. func (t *LineTable) string(off uint32) string { … } // functabFieldSize returns the size in bytes of a single functab field. func (t *LineTable) functabFieldSize() int { … } // funcTab returns t's funcTab. func (t *LineTable) funcTab() funcTab { … } type funcTab … // Count returns the number of func entries in f. func (f funcTab) Count() int { … } // pc returns the PC of the i'th func in f. func (f funcTab) pc(i int) uint64 { … } // funcOff returns the funcdata offset of the i'th func in f. func (f funcTab) funcOff(i int) uint64 { … } // uint returns the uint stored at b. func (f funcTab) uint(b []byte) uint64 { … } type funcData … // funcData returns the ith funcData in t.functab. func (t *LineTable) funcData(i uint32) funcData { … } // IsZero reports whether f is the zero value. func (f funcData) IsZero() bool { … } // entryPC returns the func's entry PC. func (f *funcData) entryPC() uint64 { … } func (f funcData) nameOff() uint32 { … } func (f funcData) deferreturn() uint32 { … } func (f funcData) pcfile() uint32 { … } func (f funcData) pcln() uint32 { … } func (f funcData) cuOffset() uint32 { … } // field returns the nth field of the _func struct. // It panics if n == 0 or n > 9; for n == 0, call f.entryPC. // Most callers should use a named field accessor (just above). func (f funcData) field(n uint32) uint32 { … } // step advances to the next pc, value pair in the encoded table. func (t *LineTable) step(p *[]byte, pc *uint64, val *int32, first bool) bool { … } // pcvalue reports the value associated with the target pc. // off is the offset to the beginning of the pc-value table, // and entry is the start PC for the corresponding function. func (t *LineTable) pcvalue(off uint32, entry, targetpc uint64) int32 { … } // findFileLine scans one function in the binary looking for a // program counter in the given file on the given line. // It does so by running the pc-value tables mapping program counter // to file number. Since most functions come from a single file, these // are usually short and quick to scan. If a file match is found, then the // code goes to the expense of looking for a simultaneous line number match. func (t *LineTable) findFileLine(entry uint64, filetab, linetab uint32, filenum, line int32, cutab []byte) uint64 { … } // go12PCToLine maps program counter to line number for the Go 1.2+ pcln table. func (t *LineTable) go12PCToLine(pc uint64) (line int) { … } // go12PCToFile maps program counter to file name for the Go 1.2+ pcln table. func (t *LineTable) go12PCToFile(pc uint64) (file string) { … } // go12LineToPC maps a (file, line) pair to a program counter for the Go 1.2+ pcln table. func (t *LineTable) go12LineToPC(file string, line int) (pc uint64) { … } // initFileMap initializes the map from file name to file number. func (t *LineTable) initFileMap() { … } // go12MapFiles adds to m a key for every file in the Go 1.2 LineTable. // Every key maps to obj. That's not a very interesting map, but it provides // a way for callers to obtain the list of files in the program. func (t *LineTable) go12MapFiles(m map[string]*Obj, obj *Obj) { … } const disableRecover …