gdbserial: actually fix ZMM register support (#2516)
PR #2498 / commit d552b338 left out some code due to a clerical error.
This commit is contained in:
parent
1ebfc5c37b
commit
7f527d26a8
@ -1853,8 +1853,11 @@ func (t *gdbThread) SetReg(regNum uint64, reg *op.DwarfRegister) error {
|
||||
gdbreg, ok := t.regs.regs[regName]
|
||||
if !ok && strings.HasPrefix(regName, "xmm") {
|
||||
// XMMn and YMMn are the same amd64 register (in different sizes), if we
|
||||
// don't find XMMn try YMMn instead.
|
||||
// don't find XMMn try YMMn or ZMMn instead.
|
||||
gdbreg, ok = t.regs.regs["y"+regName[1:]]
|
||||
if !ok {
|
||||
gdbreg, ok = t.regs.regs["z"+regName[1:]]
|
||||
}
|
||||
}
|
||||
if !ok {
|
||||
return fmt.Errorf("could not set register %s: not found", regName)
|
||||
@ -1913,8 +1916,16 @@ func (regs *gdbRegisters) Slice(floatingPoint bool) ([]proc.Register, error) {
|
||||
|
||||
value := regs.regs[reginfo.Name].value
|
||||
xmmName := "x" + reginfo.Name[1:]
|
||||
r = proc.AppendBytesRegister(r, strings.ToUpper(xmmName), value[:16])
|
||||
r = proc.AppendBytesRegister(r, strings.ToUpper(reginfo.Name), value[16:])
|
||||
r = proc.AppendBytesRegister(r, strings.ToUpper(xmmName), value)
|
||||
|
||||
case reginfo.Bitsize == 512:
|
||||
if !strings.HasPrefix(strings.ToLower(reginfo.Name), "zmm") || !floatingPoint {
|
||||
continue
|
||||
}
|
||||
|
||||
value := regs.regs[reginfo.Name].value
|
||||
xmmName := "x" + reginfo.Name[1:]
|
||||
r = proc.AppendBytesRegister(r, strings.ToUpper(xmmName), value)
|
||||
}
|
||||
}
|
||||
return r, nil
|
||||
|
||||
Loading…
Reference in New Issue
Block a user