Module Name: src Committed By: riastradh Date: Sun Jun 26 22:31:12 UTC 2022
Modified Files: src/sys/arch/amd64/amd64: db_machdep.c Log Message: amd64: Print effective syscall number for SYS_syscall stack traces. This time with compile-testing, at least. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/amd64/amd64/db_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/amd64/amd64/db_machdep.c diff -u src/sys/arch/amd64/amd64/db_machdep.c:1.11 src/sys/arch/amd64/amd64/db_machdep.c:1.12 --- src/sys/arch/amd64/amd64/db_machdep.c:1.11 Sun Jun 26 22:29:28 2022 +++ src/sys/arch/amd64/amd64/db_machdep.c Sun Jun 26 22:31:12 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: db_machdep.c,v 1.11 2022/06/26 22:29:28 riastradh Exp $ */ +/* $NetBSD: db_machdep.c,v 1.12 2022/06/26 22:31:12 riastradh Exp $ */ /* * Mach Operating System @@ -26,11 +26,12 @@ * rights to redistribute these changes. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: db_machdep.c,v 1.11 2022/06/26 22:29:28 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_machdep.c,v 1.12 2022/06/26 22:31:12 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/proc.h> +#include <sys/syscall.h> #include <machine/frame.h> #include <machine/trap.h> @@ -111,6 +112,7 @@ db_nextframe(long **nextframe, long **re struct x86_64_frame *fp; struct intrframe *ifp; int traptype, trapno, err, i; + db_expr_t syscallno; switch (is_trap) { case NONE: @@ -127,8 +129,16 @@ db_nextframe(long **nextframe, long **re case SYSCALL: tf = (struct trapframe *)argp; - (*pr)("--- syscall (number %"DDB_EXPR_FMT"u) ---\n", - db_get_value((long)&tf->tf_rax, 8, false)); + syscallno = db_get_value((long)&tf->tf_rax, 8, false); + if (syscallno == SYS_syscall) { + syscallno = db_get_value((long)&tf->tf_rdi, 8, false); + (*pr)("--- syscall (number %"DDB_EXPR_FMT"u" + " via SYS_syscall) ---\n", + syscallno); + } else { + (*pr)("--- syscall (number %"DDB_EXPR_FMT"u) ---\n", + syscallno); + } return 0; case TRAP: