From patchwork Sat Nov 29 07:59:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 777 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764403282; bh=HTYoQq6kG4CioqXv5oPYav5TsC6Eh9CM4CxyOpQ8kQA=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=R+vJPgFd63uU6dofXTOWJXUGfLQIg25RVw2DU+61znhlEr5VgrEc/b0SW/TUaCDjG HJjmle7KYRxS+amo68N93TYf8gPdlOwCkDIkOoQ2NTlLDKu4WZ7QO+J6oiyEaB9//L R2nMRU68kdZdiMpEkyJwWE+A4w1DyqXXgTJEBsVgs3Ije3RmwveZ5NpOGAJD4O+8Kk AEDq1lhIKG+OUjrlyGGtjAwyOJYhgz+ONhn04FJClSnrFaMs+Sh6z4GWA6AfXO3eAi pQbBUWXsTkUscaQotGJDglKufyDIpS3sAfxWOWz7cBUA+HYTR0T7dMqnXBiIIK2LqZ gi8ZCrnfLCBfg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D48BF6876F for ; Sat, 29 Nov 2025 01:01:22 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id Y1I8AXI06aKV for ; Sat, 29 Nov 2025 01:01:22 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764403282; bh=HTYoQq6kG4CioqXv5oPYav5TsC6Eh9CM4CxyOpQ8kQA=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=R+vJPgFd63uU6dofXTOWJXUGfLQIg25RVw2DU+61znhlEr5VgrEc/b0SW/TUaCDjG HJjmle7KYRxS+amo68N93TYf8gPdlOwCkDIkOoQ2NTlLDKu4WZ7QO+J6oiyEaB9//L R2nMRU68kdZdiMpEkyJwWE+A4w1DyqXXgTJEBsVgs3Ije3RmwveZ5NpOGAJD4O+8Kk AEDq1lhIKG+OUjrlyGGtjAwyOJYhgz+ONhn04FJClSnrFaMs+Sh6z4GWA6AfXO3eAi pQbBUWXsTkUscaQotGJDglKufyDIpS3sAfxWOWz7cBUA+HYTR0T7dMqnXBiIIK2LqZ gi8ZCrnfLCBfg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id C2395687B5 for ; Sat, 29 Nov 2025 01:01:22 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764403281; bh=n7AJkHg7i+a2j4gYmmdKZ6EOCjdwrGNTqJ0g2ghC8vo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TrNxLJiJ6hBs+fxMsk2svYwj+tWxrUdb6/2gvP4Ft/HngPOwfoXam4tvQ+0FxBOQT /CYFulwXE0lUj/ndQRrwcXQ7i5oTg3D2UPKsbwLkp5DNpZj8e31rBqbJugVMhirHdR E9CBDgVypay9zOpmi2y3T6j5ibwE1pph59IFYBD9cBtjestzIoOz6egl0r36P24qfy dULstZ756t3ieI7wXYfgj83yHtWEiVX7snoELBa6V/CerjVSkJm5S63/22ZeNzxWrv oFr0iNM1TnE2WYBW5qcdbCONr95dEr49iu/b/K3ESbuDPa1UvS4ysuc5xqPyU5xtlP bWRvknt1qfUfQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 22F4D6875D; Sat, 29 Nov 2025 01:01:21 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id eE8_-hXtawmU; Sat, 29 Nov 2025 01:01:21 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764403276; bh=GZwofWoY+65NTejZDvPDVOSFPByC7JJARvRq0iHG8rw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eryeVAnizTgb+93joEkdHT9tLT6mhoMJLU2ozihgPIwGbTZ5ILHugPckvDc9GSGUM c4qzzi5eG+cLtgFzg2ztoUjFeAbMBhegvu8Yv2pl+fA1Nyk/kFZnJFFZNoEy5R4mvA L2ktz+DeJM+vJrMUiu1VFwHjGz6BwoY7f/Lw8nyUX7Hzes9Pby/nTsgoC3PX2bgxys TwUvqCusn4HMBoBhdGBFGzRYJpa1P1OSPJ3lDZzdcU4YjQ4JWXVa8LT/XwIsAxLkej MoOVEIlIyJNRvXutTT/cOXSPLkzn0/wP86DEFbmmrCvp3ykdQzLlJg3Mjn6qspzBfw 8NKu3KBmPyXjw== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 5B82B6876F; Sat, 29 Nov 2025 01:01:16 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Sat, 29 Nov 2025 00:59:55 -0700 Message-ID: <20251129080014.758001-11-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251129080014.758001-1-sjg@u-boot.org> References: <20251129080014.758001-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: FUCGMLVTBPMFOK5TSK5PCVUZGDLDDKFA X-Message-ID-Hash: FUCGMLVTBPMFOK5TSK5PCVUZGDLDDKFA X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Heinrich Schuchardt , Simon Glass , Claude X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 10/10] backtrace: Strip the source tree prefix from filenames List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass Display relative paths instead of absolute paths in backtrace output, making the output cleaner and more portable across different build environments. This works by adding a SRCTREE define to lib/backtrace.c and stripping it from filenames when printing. Co-developed-by: Claude Signed-off-by: Simon Glass --- doc/usage/cmd/backtrace.rst | 18 +++++++++--------- lib/Makefile | 1 + lib/backtrace.c | 17 ++++++++++++++++- test/cmd/backtrace.c | 7 ++++++- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/doc/usage/cmd/backtrace.rst b/doc/usage/cmd/backtrace.rst index 37acb0b3067..edee54ccf22 100644 --- a/doc/usage/cmd/backtrace.rst +++ b/doc/usage/cmd/backtrace.rst @@ -29,15 +29,15 @@ Example => backtrace backtrace: 14 addresses - backtrace_show() at /home/user/u-boot/lib/backtrace.c:17 - do_backtrace() at /home/user/u-boot/cmd/backtrace.c:18 - cmd_process() at /home/user/u-boot/common/command.c:637 - run_list_real() at /home/user/u-boot/common/cli_hush.c:1868 - parse_stream_outer() at /home/user/u-boot/common/cli_hush.c:3207 - parse_string_outer() at /home/user/u-boot/common/cli_hush.c:3257 - run_command_list() at /home/user/u-boot/common/cli.c:168 - sandbox_main_loop_init() at /home/user/u-boot/arch/sandbox/cpu/start.c:153 - board_init_r() at /home/user/u-boot/common/board_r.c:774 + backtrace_show() at lib/backtrace.c:18 + do_backtrace() at cmd/backtrace.c:17 + cmd_process() at common/command.c:637 + run_list_real() at common/cli_hush.c:1868 + parse_stream_outer() at common/cli_hush.c:3207 + parse_string_outer() at common/cli_hush.c:3257 + run_command_list() at common/cli.c:168 + sandbox_main_loop_init() at arch/sandbox/cpu/start.c:153 + board_init_r() at common/board_r.c:774 ... Configuration diff --git a/lib/Makefile b/lib/Makefile index b696e81c496..15a43b2cc5e 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -148,6 +148,7 @@ obj-$(CONFIG_LIB_UUID) += uuid.o obj-$(CONFIG_LIB_RAND) += rand.o obj-y += panic.o obj-$(CONFIG_BACKTRACE) += backtrace.o +CFLAGS_backtrace.o += -DSRCTREE='"$(srctree)/"' ifeq ($(CONFIG_XPL_BUILD),y) # SPL U-Boot may use full-printf, tiny-printf or none at all diff --git a/lib/backtrace.c b/lib/backtrace.c index e3d93b80b8a..715d7d1d05e 100644 --- a/lib/backtrace.c +++ b/lib/backtrace.c @@ -8,6 +8,21 @@ #include #include +#include + +static void print_sym(const char *sym) +{ + const char *p; + + /* Look for SRCTREE prefix in the string and skip it */ + p = strstr(sym, SRCTREE); + if (p) { + /* Print part before SRCTREE, then the rest after SRCTREE */ + printf(" %.*s%s\n", (int)(p - sym), sym, p + strlen(SRCTREE)); + } else { + printf(" %s\n", sym); + } +} int backtrace_show(void) { @@ -29,7 +44,7 @@ int backtrace_show(void) printf("backtrace: %d addresses\n", ctx.count); for (i = 0; i < ctx.count; i++) { if (ctx.syms[i]) - printf(" %s\n", ctx.syms[i]); + print_sym(ctx.syms[i]); else printf(" %p\n", ctx.addrs[i]); } diff --git a/test/cmd/backtrace.c b/test/cmd/backtrace.c index 2d999e20f31..9d55c74769e 100644 --- a/test/cmd/backtrace.c +++ b/test/cmd/backtrace.c @@ -14,9 +14,14 @@ /* Test 'backtrace' command */ static int cmd_test_backtrace(struct unit_test_state *uts) { - /* for now, just run the command */ ut_assertok(run_command("backtrace", 0)); + ut_assert_nextlinen("backtrace:"); + ut_assert_nextlinen(" backtrace_show() at lib/backtrace.c:"); + ut_assert_nextlinen(" do_backtrace() at cmd/backtrace.c:"); + ut_assert_nextlinen(" cmd_process() at common/command.c:"); + ut_assert_skip_to_linen(" cmd_test_backtrace() at test/cmd/backtrace.c:"); + return 0; } DM_TEST(cmd_test_backtrace, UTF_SCAN_FDT);