From nobody Tue Jul 4 15:39:05 2023 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QwRmB0DrJz4m9ch; Tue, 4 Jul 2023 15:39:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QwRm96KQnz45XV; Tue, 4 Jul 2023 15:39:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1688485145; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lZWXRFNsLYKgU1txrP0UhhFolR42kT6MXUDUBNWlDMI=; b=EBXNrJ/yxsMVq5PP8hBe4epo3RIpRnwGljEHRnoX323WASQ1WzDLjS/iNI/iUI2xgyrBoj YlHNKgyp8hVsURtYoNsqgyaTfExKw1i6d9zy4VTdLcuN+lXaszO2fLf1V3Rk07DBLk22lv AP9st0DRRns+20LnF3kcJgTIYBNNn4DpAZ2x+9pQpPfuJr659BH0TusSFd3s+6QH63yb5H d+UaLiNzlgkQ/RN4d6FBqqoOh9UBaTL0XbvECMAG80TaCFNxbmOa/Dv2thxtekTcv3nFYJ kQyXTkxDImMy+azTClFKrzBsN1g9FxUThFYgGPiwq1hdLPVMkddb7y0LAwGO0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1688485145; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lZWXRFNsLYKgU1txrP0UhhFolR42kT6MXUDUBNWlDMI=; b=x4UvuhWrBfMzOwA5vfKT0jX4MBvzBiGNEQQT3GkfXX5XnVfHhpXAW+1T3R/F/rLJicDrcU uITSDhLcAow29nIfEPC5iTaNGLKxtUXmaS1Fcgpnsb44On1+n6Kbyz42R5zgujfqH3Gr0p tCGrEelgjLcUjJCOlNiq0qf+Z5wyg6IZHoiLOxHCfcvqv70e9erLcG2IRhsmwxy3wgogkH 6jbgdE42Li3tOtZfPReo5aHyx/vjsH+PgdADzDjuQSgFoEYatAmDJuupEGseNCKTDDezhW CJBp3wa3Cm6W7p8W5DhTkUwYjHz8tYcQlT0k6GR3SyXD0wU7up9MOaeoxnrTUg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1688485145; a=rsa-sha256; cv=none; b=uCbHFsEqfBAuushtvRXf2+kAu/6Ht5SQC55rbADdDIehpf8E8/E5aXQ31mkCNFh+QXGFYv emaBFT7liUaiMUquqhOBua6v1m20KhXXf8sAu5J1KitiAg2Rnbcdz4FFPZoFcUNp1OWGCI VC3HTwcOSlLFKzw9IeoyNXOzJ3pl1e3HxiwPHSpf6mX++crNiv7qZj1L2ieWiSb0EPsFGK RaYN6foBYXqznN5gTdBATLHOFWRV8v6f2K94kfrLqVOZ/NrhBcBnngpDsWiWZ4qGZWOaP/ gX0zQL4Pxb+HhrPHQKuaGKDlHXDWhQg6CnawMW4qCb97amY2GQ19tmTHfi2cEQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4QwRm95Q9yzdT7; Tue, 4 Jul 2023 15:39:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 364Fd55m032732; Tue, 4 Jul 2023 15:39:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 364Fd5fo032731; Tue, 4 Jul 2023 15:39:05 GMT (envelope-from git) Date: Tue, 4 Jul 2023 15:39:05 GMT Message-Id: <202307041539.364Fd5fo032731@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Christos Margiolis Subject: git: 1c776124513c - main - riscv: improve register dumping List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1c776124513c0a1976d599077e50b5a1c034dadc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=1c776124513c0a1976d599077e50b5a1c034dadc commit 1c776124513c0a1976d599077e50b5a1c034dadc Author: Christos Margiolis AuthorDate: 2023-07-04 15:38:37 +0000 Commit: Christos Margiolis CommitDate: 2023-07-04 15:38:37 +0000 riscv: improve register dumping Search for and print kernel symbols in case a register's value is a kernel address. Also improve column alignment. Reviewed by: mhorne, jhb Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D40829 --- sys/riscv/riscv/trap.c | 67 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/sys/riscv/riscv/trap.c b/sys/riscv/riscv/trap.c index ac481c313e15..49da91235c66 100644 --- a/sys/riscv/riscv/trap.c +++ b/sys/riscv/riscv/trap.c @@ -35,6 +35,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_ddb.h" + #include #include #include @@ -69,6 +71,11 @@ __FBSDID("$FreeBSD$"); #include #endif +#ifdef DDB +#include +#include +#endif + int (*dtrace_invop_jump_addr)(struct trapframe *); /* Called from exception.S */ @@ -127,31 +134,57 @@ cpu_fetch_syscall_args(struct thread *td) #include "../../kern/subr_syscall.c" +static void +print_with_symbol(const char *name, uint64_t value) +{ +#ifdef DDB + c_db_sym_t sym; + db_expr_t sym_value; + db_expr_t offset; + const char *sym_name; +#endif + + printf("%7s: 0x%016lx", name, value); + +#ifdef DDB + if (value >= VM_MIN_KERNEL_ADDRESS) { + sym = db_search_symbol(value, DB_STGY_ANY, &offset); + if (sym != C_DB_SYM_NULL) { + db_symbol_values(sym, &sym_name, &sym_value); + printf(" (%s + 0x%lx)", sym_name, offset); + } + } +#endif + printf("\n"); +} + static void dump_regs(struct trapframe *frame) { - int n; + char name[6]; int i; - n = nitems(frame->tf_t); - for (i = 0; i < n; i++) - printf("t[%d] == 0x%016lx\n", i, frame->tf_t[i]); - - n = nitems(frame->tf_s); - for (i = 0; i < n; i++) - printf("s[%d] == 0x%016lx\n", i, frame->tf_s[i]); + for (i = 0; i < nitems(frame->tf_t); i++) { + snprintf(name, sizeof(name), "t[%d]", i); + print_with_symbol(name, frame->tf_t[i]); + } - n = nitems(frame->tf_a); - for (i = 0; i < n; i++) - printf("a[%d] == 0x%016lx\n", i, frame->tf_a[i]); + for (i = 0; i < nitems(frame->tf_s); i++) { + snprintf(name, sizeof(name), "s[%d]", i); + print_with_symbol(name, frame->tf_s[i]); + } - printf("ra == 0x%016lx\n", frame->tf_ra); - printf("sp == 0x%016lx\n", frame->tf_sp); - printf("gp == 0x%016lx\n", frame->tf_gp); - printf("tp == 0x%016lx\n", frame->tf_tp); + for (i = 0; i < nitems(frame->tf_a); i++) { + snprintf(name, sizeof(name), "a[%d]", i); + print_with_symbol(name, frame->tf_a[i]); + } - printf("sepc == 0x%016lx\n", frame->tf_sepc); - printf("sstatus == 0x%016lx\n", frame->tf_sstatus); + print_with_symbol("ra", frame->tf_ra); + print_with_symbol("sp", frame->tf_sp); + print_with_symbol("gp", frame->tf_gp); + print_with_symbol("tp", frame->tf_tp); + print_with_symbol("sepc", frame->tf_sepc); + printf("sstatus: 0x%016lx\n", frame->tf_sstatus); } static void