// Copyright (c) 2026 Petr BalvĂ­n (https://petrbalvin.org) // SPDX-License-Identifier: BSD-3-Clause //go:build linux && amd64 package debug import "fmt" // SetReg modifies a register value in the debuggee. func (s *Session) SetReg(name string, value uint64) error { regs, err := s.GetRegs() if err != nil { return err } switch name { case "rax", "eax", "ax", "al": regs.RAX = value case "rbx", "ebx", "bx", "bl": regs.RBX = value case "rcx", "ecx", "cx", "cl": regs.RCX = value case "rdx", "edx", "dx", "dl": regs.RDX = value case "rsi", "esi", "si": regs.RSI = value case "rdi", "edi", "di": regs.RDI = value case "rbp", "ebp", "bp": regs.RBP = value case "rsp", "esp", "sp": regs.RSP = value case "r8": regs.R8 = value case "r9": regs.R9 = value case "r10": regs.R10 = value case "r11": regs.R11 = value case "r12": regs.R12 = value case "r13": regs.R13 = value case "r14": regs.R14 = value case "r15": regs.R15 = value case "rip", "eip": regs.RIP = value default: return fmt.Errorf("debug: unknown register %q", name) } return s.SetRegs(®s) }