diff options
Diffstat (limited to 'src/pkg/debug/proc/regs_linux_amd64.go')
| -rw-r--r-- | src/pkg/debug/proc/regs_linux_amd64.go | 150 |
1 files changed, 99 insertions, 51 deletions
diff --git a/src/pkg/debug/proc/regs_linux_amd64.go b/src/pkg/debug/proc/regs_linux_amd64.go index ef2a0050e5..068add85d8 100644 --- a/src/pkg/debug/proc/regs_linux_amd64.go +++ b/src/pkg/debug/proc/regs_linux_amd64.go @@ -12,10 +12,10 @@ import ( type amd64Regs struct { syscall.PtraceRegs; - setter func (*syscall.PtraceRegs) os.Error; + setter func(*syscall.PtraceRegs) os.Error; } -var names = [...]string { +var names = [...]string{ "rax", "rbx", "rcx", @@ -81,67 +81,115 @@ func (r *amd64Regs) Names() []string { func (r *amd64Regs) Get(i int) Word { switch i { - case 0: return Word(r.Rax); - case 1: return Word(r.Rbx); - case 2: return Word(r.Rcx); - case 3: return Word(r.Rdx); - case 4: return Word(r.Rsi); - case 5: return Word(r.Rdi); - case 6: return Word(r.Rbp); - case 7: return Word(r.Rsp); - case 8: return Word(r.R8); - case 9: return Word(r.R9); - case 10: return Word(r.R10); - case 11: return Word(r.R11); - case 12: return Word(r.R12); - case 13: return Word(r.R13); - case 14: return Word(r.R14); - case 15: return Word(r.R15); - case 16: return Word(r.Rip); - case 17: return Word(r.Eflags); - case 18: return Word(r.Cs); - case 19: return Word(r.Ss); - case 20: return Word(r.Ds); - case 21: return Word(r.Es); - case 22: return Word(r.Fs); - case 23: return Word(r.Gs); + case 0: + return Word(r.Rax); + case 1: + return Word(r.Rbx); + case 2: + return Word(r.Rcx); + case 3: + return Word(r.Rdx); + case 4: + return Word(r.Rsi); + case 5: + return Word(r.Rdi); + case 6: + return Word(r.Rbp); + case 7: + return Word(r.Rsp); + case 8: + return Word(r.R8); + case 9: + return Word(r.R9); + case 10: + return Word(r.R10); + case 11: + return Word(r.R11); + case 12: + return Word(r.R12); + case 13: + return Word(r.R13); + case 14: + return Word(r.R14); + case 15: + return Word(r.R15); + case 16: + return Word(r.Rip); + case 17: + return Word(r.Eflags); + case 18: + return Word(r.Cs); + case 19: + return Word(r.Ss); + case 20: + return Word(r.Ds); + case 21: + return Word(r.Es); + case 22: + return Word(r.Fs); + case 23: + return Word(r.Gs); } panic("invalid register index ", strconv.Itoa(i)); } func (r *amd64Regs) Set(i int, val Word) os.Error { switch i { - case 0: r.Rax = uint64(val); - case 1: r.Rbx = uint64(val); - case 2: r.Rcx = uint64(val); - case 3: r.Rdx = uint64(val); - case 4: r.Rsi = uint64(val); - case 5: r.Rdi = uint64(val); - case 6: r.Rbp = uint64(val); - case 7: r.Rsp = uint64(val); - case 8: r.R8 = uint64(val); - case 9: r.R9 = uint64(val); - case 10: r.R10 = uint64(val); - case 11: r.R11 = uint64(val); - case 12: r.R12 = uint64(val); - case 13: r.R13 = uint64(val); - case 14: r.R14 = uint64(val); - case 15: r.R15 = uint64(val); - case 16: r.Rip = uint64(val); - case 17: r.Eflags = uint64(val); - case 18: r.Cs = uint64(val); - case 19: r.Ss = uint64(val); - case 20: r.Ds = uint64(val); - case 21: r.Es = uint64(val); - case 22: r.Fs = uint64(val); - case 23: r.Gs = uint64(val); + case 0: + r.Rax = uint64(val); + case 1: + r.Rbx = uint64(val); + case 2: + r.Rcx = uint64(val); + case 3: + r.Rdx = uint64(val); + case 4: + r.Rsi = uint64(val); + case 5: + r.Rdi = uint64(val); + case 6: + r.Rbp = uint64(val); + case 7: + r.Rsp = uint64(val); + case 8: + r.R8 = uint64(val); + case 9: + r.R9 = uint64(val); + case 10: + r.R10 = uint64(val); + case 11: + r.R11 = uint64(val); + case 12: + r.R12 = uint64(val); + case 13: + r.R13 = uint64(val); + case 14: + r.R14 = uint64(val); + case 15: + r.R15 = uint64(val); + case 16: + r.Rip = uint64(val); + case 17: + r.Eflags = uint64(val); + case 18: + r.Cs = uint64(val); + case 19: + r.Ss = uint64(val); + case 20: + r.Ds = uint64(val); + case 21: + r.Es = uint64(val); + case 22: + r.Fs = uint64(val); + case 23: + r.Gs = uint64(val); default: panic("invalid register index ", strconv.Itoa(i)); } return r.setter(&r.PtraceRegs); } -func newRegs(regs *syscall.PtraceRegs, setter func (*syscall.PtraceRegs) os.Error) Regs { +func newRegs(regs *syscall.PtraceRegs, setter func(*syscall.PtraceRegs) os.Error) Regs { res := amd64Regs{}; res.PtraceRegs = *regs; res.setter = setter; |
