delve/pkg/proc/fbsdutil/regs_test.go
Robert Ayrapetyan df65be43ae *: FreeBSD initial support (#1480)
* FreeBSD initial support

* first code review fixes

* regs slice upd

* execPtraceFunc wrap

* disabled concurrency tests
fixed kill() issue

* disabled concurrency tests
fixed kill() issue

* cleanup vendor related code

* cleanup ptrace calls

* vendoring latest changes

* Revert "vendoring latest changes"

This reverts commit 833cb87b

* vendoring latest changes

* requested changes
2019-07-12 18:28:04 -07:00

61 lines
1.1 KiB
Go

package fbsdutil
import (
"testing"
"golang.org/x/arch/x86/x86asm"
)
func TestAMD64Get(t *testing.T) {
val := int64(0x7fffffffdeadbeef)
regs := AMD64Registers{
Regs: &AMD64PtraceRegs{
Rax: val,
},
}
// Test AL, low 8 bits of RAX
al, err := regs.Get(int(x86asm.AL))
if err != nil {
t.Fatal(err)
}
if al != 0xef {
t.Fatalf("expected %#v, got %#v\n", 0xef, al)
}
// Test AH, high 8 bits of RAX
ah, err := regs.Get(int(x86asm.AH))
if err != nil {
t.Fatal(err)
}
if ah != 0xBE {
t.Fatalf("expected %#v, got %#v\n", 0xbe, ah)
}
// Test AX, lower 16 bits of RAX
ax, err := regs.Get(int(x86asm.AX))
if err != nil {
t.Fatal(err)
}
if ax != 0xBEEF {
t.Fatalf("expected %#v, got %#v\n", 0xbeef, ax)
}
// Test EAX, lower 32 bits of RAX
eax, err := regs.Get(int(x86asm.EAX))
if err != nil {
t.Fatal(err)
}
if eax != 0xDEADBEEF {
t.Fatalf("expected %#v, got %#v\n", 0xdeadbeef, eax)
}
// Test RAX, full 64 bits of register
rax, err := regs.Get(int(x86asm.RAX))
if err != nil {
t.Fatal(err)
}
if rax != uint64(val) {
t.Fatalf("expected %#v, got %#v\n", val, rax)
}
}