1
0
mirror of https://github.com/golang/go synced 2024-11-19 09:54:49 -07:00
go/src/runtime/defs_nacl_amd64p32.go
Austin Clements c5ed10f3be runtime: support for debugger function calls
This adds a mechanism for debuggers to safely inject calls to Go
functions on amd64. Debuggers must participate in a protocol with the
runtime, and need to know how to lay out a call frame, but the runtime
support takes care of the details of handling live pointers in
registers, stack growth, and detecting the trickier conditions when it
is unsafe to inject a user function call.

Fixes #21678.
Updates derekparker/delve#119.

Change-Id: I56d8ca67700f1f77e19d89e7fc92ab337b228834
Reviewed-on: https://go-review.googlesource.com/109699
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2018-05-22 15:55:05 +00:00

66 lines
1.0 KiB
Go

package runtime
const (
// These values are referred to in the source code
// but really don't matter. Even so, use the standard numbers.
_SIGQUIT = 3
_SIGTRAP = 5
_SIGSEGV = 11
_SIGPROF = 27
)
type timespec struct {
tv_sec int64
tv_nsec int32
}
type excregs386 struct {
eax uint32
ecx uint32
edx uint32
ebx uint32
esp uint32
ebp uint32
esi uint32
edi uint32
eip uint32
eflags uint32
}
type excregsamd64 struct {
rax uint64
rcx uint64
rdx uint64
rbx uint64
rsp uint64
rbp uint64
rsi uint64
rdi uint64
r8 uint64
r9 uint64
r10 uint64
r11 uint64
r12 uint64
r13 uint64
r14 uint64
r15 uint64
rip uint64
rflags uint32
}
type exccontext struct {
size uint32
portable_context_offset uint32
portable_context_size uint32
arch uint32
regs_size uint32
reserved [11]uint32
regs excregsamd64
}
type excportablecontext struct {
pc uint32
sp uint32
fp uint32
}