Documentation
¶
Overview ¶
Package jit provides a parser for Perf's JITDUMP files
Index ¶
Constants ¶
View Source
const ( JITCodeLoad JITRecordType = 0 // record describing a jitted function JITCodeMove = 1 // record describing an already jitted function which is moved JITCodeDebugInfo = 2 // record describing the debug information for a jitted function JITCodeClose = 3 // record marking the end of the jit runtime (optional) JITCodeUnwindingInfo = 4 // record describing a function unwinding information JITCodeMax = iota // maximum record type )
View Source
const JITHeaderVersion = 1
JITHeaderVersion is the supported version of the JITDUMP specification.
Variables ¶
View Source
var ( // ErrWrongJITDumpMagic is the error returned when the magic in the JITDUMP header is not recognized. ErrWrongJITDumpMagic = errors.New("wrong JITDUMP magic") // ErrWrongJITDumpVersion is the error returned when the version in the JITDUMP header is not 1. ErrWrongJITDumpVersion = errors.New("wrong JITDUMP version") )
Functions ¶
Types ¶
type DebugEntry ¶
type DebugEntry struct {
Addr uint64 // address of function for which the debug information is generated
Lineno uint32 // source file line number (starting at 1)
Discrim uint32 // column discriminator, 0 is default
Name string // source file name in ASCII
}
DebugEntry reprensents an entry from a JITCodeDebugInfo record.
type JITDump ¶
type JITDump struct {
Header *JITHeader // the jitdump file header
CodeLoads []*JRCodeLoad // JITCodeLoad records
CodeMoves []*JRCodeMove // JITCodeMove records
DebugInfo []*JRCodeDebugInfo // JITCodeDebugInfo records
UnwindingInfo []*JRCodeUnwindingInfo // JITCodeUnwindingInfo records
}
nolint: musttag // JSON is used for testing only JITDump represents the loaded jitdump.
type JITHeader ¶
type JITHeader struct {
Magic uint32 // a magic number tagging the file type
Version uint32 // a 4-byte value representing the format version. It is currently set to 1
TotalSize uint32 // size in bytes of file header
ElfMach uint32 // ELF architecture encoding (ELF e_machine value as specified in /usr/include/elf.h)
Pad1 uint32 // padding. Reserved for future use
Pid uint32 // JIT runtime process identification (OS specific)
Timestamp uint64 // timestamp of when the file was created
Flags uint64 // a bitmask of flags
}
JITHeader represent a jitdump file header.
type JITRecordType ¶
type JITRecordType uint32
JITRecordType is the value identifying the record type.
type JRCodeDebugInfo ¶
type JRCodeDebugInfo struct {
Prefix *JRPrefix // the record header
CodeAddr uint64 // address of function for which the debug information is generated
NREntry uint64 // number of debug entries for the function
Entries []*DebugEntry // array of NREntry debug entries for the function
}
JRCodeDebugInfo represents a JITCodeDebugInfo record.
type JRCodeLoad ¶
type JRCodeLoad struct {
Prefix *JRPrefix // the record header
PID uint32 // OS process id of the runtime generating the jitted code
TID uint32 // OS thread identification of the runtime thread generating the jitted code
VMA uint64 // virtual address of jitted code start
CodeAddr uint64 // code start address for the jitted code. By default VMA = CodeAddr
CodeSize uint64 // size in bytes of the generated jitted code
CodeIndex uint64 // unique identifier for the jitted code
Name string // function name in ASCII
Code []byte // raw byte encoding of the jitted code
}
JRCodeLoad represents a JITCodeLoad record.
type JRCodeMove ¶
type JRCodeMove struct {
Prefix *JRPrefix // the record header
PID uint32 // OS process id of the runtime generating the jitted code
TID uint32 // OS thread identification of the runtime thread generating the jitted code
VMA uint64 // new virtual address of jitted code start
OldCodeAddr uint64 // previous code address for the same function
NewCodeAddr uint64 // alternate new code started address for the jitted code. By default it should be equal to the VMA address.
CodeSize uint64 // size in bytes of the jitted code
CodeIndex uint64 // index referring to the JRCodeLoad CodeIndex record of when the function was initially jitted
}
JRCodeMove represents a JITCodeMove record.
type JRCodeUnwindingInfo ¶
type JRCodeUnwindingInfo struct {
Prefix *JRPrefix // the record header
UnwindingSize uint64 // the size in bytes of the unwinding data table at the end of the record
EHFrameHDRSize uint64 // the size in bytes of the DWARF EH Frame Header at the start of the unwinding data table at the end of the record
MappedSize uint64 // the size of the unwinding data mapped in memory
UnwindingData []byte // an array of unwinding data, consisting of the EH Frame Header, followed by the actual EH Frame
}
JRCodeUnwindingInfo represents a JITCodeUnwindingInfo record.
type JRPrefix ¶
type JRPrefix struct {
ID JITRecordType // a value identifying the record type
TotalSize uint32 // the size in bytes of the record including the header
Timestamp uint64 // a timestamp of when the record was created
}
JRPrefix describes the record that follows.
Click to show internal directories.
Click to hide internal directories.