mirror of
https://github.com/rwinkhart/sys.git
synced 2026-08-28 04:46:44 -04:00
unix: add functions PtraceGetRegSetArm64 and PtraceSetRegSetArm64
Since arm64 GNU/Linux version 2.6.34, PTRACE_GETREGS was replaced by PTRACE_GETREGSET, in order to get or set the general purpose and floating-point register values, PTRACE_GETREGSET/PTRACE_SETREGSET request type and a proper "NT_XXX" constant values should be used. For the sake of not breaking the existing API, we added two functions PtraceGetRegSetArm64 and PtraceSetRegSetArm64, they take an additional argument "addr", and use PTRACE_GETREGSET and PTRACE_SETREGSET request types respectively. Change-Id: I14c55733e15cea4b7d775187b1018fcb2880d6a9 Reviewed-on: https://go-review.googlesource.com/c/sys/+/204418 Run-TryBot: eric fang <eric.fang@arm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
committed by
Ian Lance Taylor
parent
ce4227a45e
commit
bc7efcf3b8
@@ -0,0 +1,50 @@
|
||||
// Code generated by linux/mkall.go generatePtracePair("mips", "mips64"). DO NOT EDIT.
|
||||
|
||||
// +build linux
|
||||
// +build mips mips64
|
||||
|
||||
package unix
|
||||
|
||||
import "unsafe"
|
||||
|
||||
// PtraceRegsMips is the registers used by mips binaries.
|
||||
type PtraceRegsMips struct {
|
||||
Regs [32]uint64
|
||||
Lo uint64
|
||||
Hi uint64
|
||||
Epc uint64
|
||||
Badvaddr uint64
|
||||
Status uint64
|
||||
Cause uint64
|
||||
}
|
||||
|
||||
// PtraceGetRegsMips fetches the registers used by mips binaries.
|
||||
func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {
|
||||
return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
|
||||
}
|
||||
|
||||
// PtraceSetRegsMips sets the registers used by mips binaries.
|
||||
func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {
|
||||
return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
|
||||
}
|
||||
|
||||
// PtraceRegsMips64 is the registers used by mips64 binaries.
|
||||
type PtraceRegsMips64 struct {
|
||||
Regs [32]uint64
|
||||
Lo uint64
|
||||
Hi uint64
|
||||
Epc uint64
|
||||
Badvaddr uint64
|
||||
Status uint64
|
||||
Cause uint64
|
||||
}
|
||||
|
||||
// PtraceGetRegsMips64 fetches the registers used by mips64 binaries.
|
||||
func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {
|
||||
return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
|
||||
}
|
||||
|
||||
// PtraceSetRegsMips64 sets the registers used by mips64 binaries.
|
||||
func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {
|
||||
return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
|
||||
}
|
||||
Reference in New Issue
Block a user