
The next-instruction (nexti) command behaves like step-instruction (stepi) however, similar to the `next` command it will step over function calls.
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package proc_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/go-delve/delve/pkg/dwarf/op"
|
|
"github.com/go-delve/delve/pkg/dwarf/regnum"
|
|
"github.com/go-delve/delve/pkg/proc"
|
|
|
|
protest "github.com/go-delve/delve/pkg/proc/test"
|
|
)
|
|
|
|
func TestSetYMMRegister(t *testing.T) {
|
|
// Checks that setting a XMM register works. This checks that the
|
|
// workaround for a bug in debugserver works.
|
|
// See issue #2767.
|
|
withTestProcess("setymmreg/", t, func(p *proc.Target, grp *proc.TargetGroup, fixture protest.Fixture) {
|
|
setFunctionBreakpoint(p, t, "main.asmFunc")
|
|
assertNoError(grp.Continue(), t, "Continue()")
|
|
|
|
getReg := func(pos string) *op.DwarfRegister {
|
|
regs := getRegisters(p, t)
|
|
|
|
arch := p.BinInfo().Arch
|
|
dregs := arch.RegistersToDwarfRegisters(0, regs)
|
|
|
|
r := dregs.Reg(regnum.AMD64_XMM0)
|
|
t.Logf("%s: %#v", pos, r)
|
|
return r
|
|
}
|
|
|
|
getReg("before")
|
|
|
|
p.CurrentThread().SetReg(regnum.AMD64_XMM0, op.DwarfRegisterFromBytes([]byte{
|
|
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
|
|
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
|
|
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
|
|
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}))
|
|
assertNoError(grp.StepInstruction(false), t, "StepInstruction")
|
|
|
|
xmm0 := getReg("after")
|
|
|
|
for i := range xmm0.Bytes {
|
|
if xmm0.Bytes[i] != 0x44 {
|
|
t.Fatalf("wrong register value")
|
|
}
|
|
}
|
|
})
|
|
}
|