git: aba250f6264f - stable/12 - amd64: use register macros for gdb_cpu_getreg()

Mitchell Horne mhorne at FreeBSD.org
Mon Jan 4 21:11:18 UTC 2021


The branch stable/12 has been updated by mhorne:

URL: https://cgit.FreeBSD.org/src/commit/?id=aba250f6264fd606b025bed87675530171a8c9f8

commit aba250f6264fd606b025bed87675530171a8c9f8
Author:     Mitchell Horne <mhorne at FreeBSD.org>
AuthorDate: 2020-12-18 16:16:03 +0000
Commit:     Mitchell Horne <mhorne at FreeBSD.org>
CommitDate: 2021-01-04 20:59:35 +0000

    amd64: use register macros for gdb_cpu_getreg()
    
    Prefer these newly-added definitions to bare values.
    
    Sponsored by:   NetApp, Inc.
    Sponsored by:   Klara, Inc.
    
    (cherry picked from commit 72939459bdfa930348d0b3397db5d947593ad348)
---
 sys/amd64/amd64/gdb_machdep.c   | 44 ++++++++++++++++++++---------------------
 sys/amd64/include/gdb_machdep.h |  4 ++++
 2 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/sys/amd64/amd64/gdb_machdep.c b/sys/amd64/amd64/gdb_machdep.c
index cf5979b7a1ea..73022bee7674 100644
--- a/sys/amd64/amd64/gdb_machdep.c
+++ b/sys/amd64/amd64/gdb_machdep.c
@@ -60,31 +60,31 @@ gdb_cpu_getreg(int regnum, size_t *regsz)
 
 	if (kdb_thread  == curthread) {
 		switch (regnum) {
-		case 0:	return (&kdb_frame->tf_rax);
-		case 2:	return (&kdb_frame->tf_rcx);
-		case 3:	return (&kdb_frame->tf_rdx);
-		case 4:	return (&kdb_frame->tf_rsi);
-		case 5:	return (&kdb_frame->tf_rdi);
-		case 8: return (&kdb_frame->tf_r8);
-		case 9: return (&kdb_frame->tf_r9);
-		case 10: return (&kdb_frame->tf_r10);
-		case 11: return (&kdb_frame->tf_r11);
-		case 17: return (&kdb_frame->tf_rflags);
-		case 18: return (&kdb_frame->tf_cs);
-		case 19: return (&kdb_frame->tf_ss);
+		case GDB_REG_RAX: return (&kdb_frame->tf_rax);
+		case GDB_REG_RCX: return (&kdb_frame->tf_rcx);
+		case GDB_REG_RDX: return (&kdb_frame->tf_rdx);
+		case GDB_REG_RSI: return (&kdb_frame->tf_rsi);
+		case GDB_REG_RDI: return (&kdb_frame->tf_rdi);
+		case GDB_REG_R8:  return (&kdb_frame->tf_r8);
+		case GDB_REG_R9:  return (&kdb_frame->tf_r9);
+		case GDB_REG_R10: return (&kdb_frame->tf_r10);
+		case GDB_REG_R11: return (&kdb_frame->tf_r11);
+		case GDB_REG_RFLAGS: return (&kdb_frame->tf_rflags);
+		case GDB_REG_CS:  return (&kdb_frame->tf_cs);
+		case GDB_REG_SS:  return (&kdb_frame->tf_ss);
 		}
 	}
 	switch (regnum) {
-	case 1:  return (&kdb_thrctx->pcb_rbx);
-	case 6:  return (&kdb_thrctx->pcb_rbp);
-	case 7:  return (&kdb_thrctx->pcb_rsp);
-	case 12: return (&kdb_thrctx->pcb_r12);
-	case 13: return (&kdb_thrctx->pcb_r13);
-	case 14: return (&kdb_thrctx->pcb_r14);
-	case 15: return (&kdb_thrctx->pcb_r15);
-	case 16: return (&kdb_thrctx->pcb_rip);
-	case 18: return (&_kcodesel);
-	case 19: return (&_kdatasel);
+	case GDB_REG_RBX: return (&kdb_thrctx->pcb_rbx);
+	case GDB_REG_RBP: return (&kdb_thrctx->pcb_rbp);
+	case GDB_REG_RSP: return (&kdb_thrctx->pcb_rsp);
+	case GDB_REG_R12: return (&kdb_thrctx->pcb_r12);
+	case GDB_REG_R13: return (&kdb_thrctx->pcb_r13);
+	case GDB_REG_R14: return (&kdb_thrctx->pcb_r14);
+	case GDB_REG_R15: return (&kdb_thrctx->pcb_r15);
+	case GDB_REG_PC:  return (&kdb_thrctx->pcb_rip);
+	case GDB_REG_CS:  return (&_kcodesel);
+	case GDB_REG_SS:  return (&_kdatasel);
 	}
 	return (NULL);
 }
diff --git a/sys/amd64/include/gdb_machdep.h b/sys/amd64/include/gdb_machdep.h
index add6dc94dfec..cd297addb965 100644
--- a/sys/amd64/include/gdb_machdep.h
+++ b/sys/amd64/include/gdb_machdep.h
@@ -50,6 +50,10 @@
 #define	GDB_REG_R14	14
 #define	GDB_REG_R15	15
 #define	GDB_REG_PC	16
+#define	GDB_REG_RFLAGS	17
+#define	GDB_REG_CS	18
+#define	GDB_REG_SS	19
+_Static_assert(GDB_BUFSZ >= (GDB_NREGS * 16), "buffer fits 'g' regs");
 
 static __inline size_t
 gdb_cpu_regsz(int regnum)


More information about the dev-commits-src-branches mailing list