elf

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Mar 19, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ReaderLanguageGolang = 22

Functions

This section is empty.

Types

type ArgLocation

type ArgLocation struct {
	Type   LocationType
	Offset uint64
}

type ArgumentLocator

type ArgumentLocator interface {
	// GetLocation of the argument
	GetLocation(typeClass TypeClass, typeSize uint64, alignmentSize uint64, primitivesCount int, isRetArg bool) (*ArgLocation, error)
}

func NewArgumentLocator

func NewArgumentLocator(r *DwarfReader) ArgumentLocator

type ClassInfo

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

func (*ClassInfo) GetInheritanceOffset

func (c *ClassInfo) GetInheritanceOffset(name string) int64

func (*ClassInfo) GetMemberOffset

func (c *ClassInfo) GetMemberOffset(name string) int64

type ClassInheritance

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

type DwarfReader

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

func (*DwarfReader) GetClass

func (r *DwarfReader) GetClass(name string) *ClassInfo

func (*DwarfReader) GetClassMemberOffset

func (r *DwarfReader) GetClassMemberOffset(className, memberName string) (uint64, error)

func (*DwarfReader) GetClassParentOffset

func (r *DwarfReader) GetClassParentOffset(className, parentClassName string) (uint64, error)

func (*DwarfReader) GetFunction

func (r *DwarfReader) GetFunction(name string) *FunctionInfo

func (*DwarfReader) GetStructMemberOffset

func (r *DwarfReader) GetStructMemberOffset(structName, memberName string) (uint64, error)

func (*DwarfReader) GetStructure

func (r *DwarfReader) GetStructure(name string) *StructureInfo

func (*DwarfReader) IsRetArgs

func (r *DwarfReader) IsRetArgs(entry *dwarf.Entry) (bool, error)

type File

type File struct {
	Path string
	// contains filtered or unexported fields
}

func NewFile

func NewFile(path string) (*File, error)

func (*File) Close

func (f *File) Close() error

func (*File) FindBaseAddressForAttach added in v0.4.0

func (f *File) FindBaseAddressForAttach(symbolLocation uint64) uint64

func (*File) FindSymbol

func (f *File) FindSymbol(name string) *Symbol

func (*File) NewDwarfReader

func (f *File) NewDwarfReader(attrNames ...string) (*DwarfReader, error)

func (*File) ReadSymbolData

func (f *File) ReadSymbolData(section string, offset, size uint64) ([]byte, error)

type FunctionArgsInfo

type FunctionArgsInfo struct {
	IsRet    bool
	Location *ArgLocation
	// contains filtered or unexported fields
}

type FunctionInfo

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

func (*FunctionInfo) Args

func (f *FunctionInfo) Args(name string) *FunctionArgsInfo

func (*FunctionInfo) Name

func (f *FunctionInfo) Name() string

type GolangRegisterLocator

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

func (*GolangRegisterLocator) GetLocation

func (g *GolangRegisterLocator) GetLocation(typeClass TypeClass, typeSize, alignmentSize uint64, primitivesCount int,
	isRetArg bool) (*ArgLocation, error)

type GolangStackLocator

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

func (*GolangStackLocator) GetLocation

func (g *GolangStackLocator) GetLocation(_ TypeClass, typeSize, alignmentSize uint64, _ int, _ bool) (*ArgLocation, error)

type LocationType

type LocationType uint64
const (
	ArgLocationTypeUnknown    LocationType = 0
	ArgLocationTypeStack      LocationType = 1 // frame stack pointer
	ArgLocationTypeStackBP    LocationType = 2 // frame base pointer
	ArgLocationTypeRegister   LocationType = 3 // integer register
	ArgLocationTypeRegisterFP LocationType = 4 // float-point register
)

type RegisterName

type RegisterName int
const (
	// for int type class
	RegisterNameRAX RegisterName = 0
	RegisterNameRBX RegisterName = 1
	RegisterNameRCX RegisterName = 2
	RegisterNameRDX RegisterName = 3
	RegisterNameRDI RegisterName = 4
	RegisterNameRSI RegisterName = 5
	RegisterNameR8  RegisterName = 6
	RegisterNameR9  RegisterName = 7
	RegisterNameR10 RegisterName = 8
	RegisterNameR11 RegisterName = 9

	// for float type class
	RegisterNameXMM0  RegisterName = 100
	RegisterNameXMM1  RegisterName = 101
	RegisterNameXMM2  RegisterName = 102
	RegisterNameXMM3  RegisterName = 103
	RegisterNameXMM4  RegisterName = 104
	RegisterNameXMM5  RegisterName = 105
	RegisterNameXMM6  RegisterName = 106
	RegisterNameXMM7  RegisterName = 107
	RegisterNameXMM8  RegisterName = 108
	RegisterNameXMM9  RegisterName = 109
	RegisterNameXMM10 RegisterName = 110
	RegisterNameXMM11 RegisterName = 111
	RegisterNameXMM12 RegisterName = 112
	RegisterNameXMM13 RegisterName = 113
	RegisterNameXMM14 RegisterName = 114
)

type StructureFieldInfo

type StructureFieldInfo struct {
	Name   string
	Offset int64
}

type StructureInfo

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

func (*StructureInfo) GetField

func (s *StructureInfo) GetField(name string) *StructureFieldInfo

type Symbol

type Symbol struct {
	Name     string
	Location uint64
	Size     uint64
}

type TypeClass

type TypeClass int
const (
	TypeClassNone    TypeClass = 0
	TypeClassInteger TypeClass = 1
	TypeClassFloat   TypeClass = 2
	TypeClassMixed   TypeClass = 3
)

func (TypeClass) Combine

func (c TypeClass) Combine(other TypeClass) TypeClass

type UnknownLocator

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

func (*UnknownLocator) GetLocation

func (u *UnknownLocator) GetLocation(typeClass TypeClass, typeSize, alignmentSize uint64, primitivesCount int, isRetArg bool) (*ArgLocation, error)

Jump to

Keyboard shortcuts

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