github.com/SagerNet/gvisor@v0.0.0-20210707092255-7731c139d75c/pkg/abi/linux/ptrace_amd64.go (about) 1 // Copyright 2020 The gVisor Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // +build amd64 16 17 package linux 18 19 // PtraceRegs is the set of CPU registers exposed by ptrace. Source: 20 // syscall.PtraceRegs. 21 // 22 // +marshal 23 // +stateify savable 24 type PtraceRegs struct { 25 R15 uint64 26 R14 uint64 27 R13 uint64 28 R12 uint64 29 Rbp uint64 30 Rbx uint64 31 R11 uint64 32 R10 uint64 33 R9 uint64 34 R8 uint64 35 Rax uint64 36 Rcx uint64 37 Rdx uint64 38 Rsi uint64 39 Rdi uint64 40 Orig_rax uint64 41 Rip uint64 42 Cs uint64 43 Eflags uint64 44 Rsp uint64 45 Ss uint64 46 Fs_base uint64 47 Gs_base uint64 48 Ds uint64 49 Es uint64 50 Fs uint64 51 Gs uint64 52 } 53 54 // InstructionPointer returns the address of the next instruction to 55 // be executed. 56 func (p *PtraceRegs) InstructionPointer() uint64 { 57 return p.Rip 58 } 59 60 // StackPointer returns the address of the Stack pointer. 61 func (p *PtraceRegs) StackPointer() uint64 { 62 return p.Rsp 63 } 64 65 // SetStackPointer sets the stack pointer to the specified value. 66 func (p *PtraceRegs) SetStackPointer(sp uint64) { 67 p.Rsp = sp 68 }