mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
scripts/decode_stacktrace.sh: fix build ID and PC source parsing
commit7d9f7d390fupstream. Support for parsing PC source info in stacktraces (e.g. '(P)') was added in commit2bff77c665("scripts/decode_stacktrace.sh: fix decoding of lines with an additional info"). However, this logic was placed after the build ID processing. This incorrect order fails to parse lines containing both elements, e.g.: drm_gem_mmap_obj+0x114/0x200 [drm 03d0564e0529947d67bb2008c3548be77279fd27] (P) This patch fixes the problem by extracting the PC source info first and then processing the module build ID. With this change, the line above is now properly parsed as such: drm_gem_mmap_obj (./include/linux/mmap_lock.h:212 ./include/linux/mm.h:811 drivers/gpu/drm/drm_gem.c:1177) drm (P) While here, also add a brief explanation the build ID section. Link: https://lkml.kernel.org/r/20251030010347.2731925-1-cmllamas@google.com Fixes:2bff77c665("scripts/decode_stacktrace.sh: fix decoding of lines with an additional info") Signed-off-by: Carlos Llamas <cmllamas@google.com> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Cc: Breno Leitao <leitao@debian.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Marc Rutland <mark.rutland@arm.com> Cc: Mark Brown <broonie@kernel.org> Cc: Matthieu Baerts <matttbe@kernel.org> Cc: Miroslav Benes <mbenes@suse.cz> Cc: Puranjay Mohan <puranjay@kernel.org> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
6ca8437dc7
commit
f290de3c0f
@@ -275,12 +275,6 @@ handle_line() {
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ${words[$last]} =~ ^[0-9a-f]+\] ]]; then
|
||||
words[$last-1]="${words[$last-1]} ${words[$last]}"
|
||||
unset words[$last] spaces[$last]
|
||||
last=$(( $last - 1 ))
|
||||
fi
|
||||
|
||||
# Extract info after the symbol if present. E.g.:
|
||||
# func_name+0x54/0x80 (P)
|
||||
# ^^^
|
||||
@@ -293,6 +287,14 @@ handle_line() {
|
||||
last=$(( $last - 1 ))
|
||||
fi
|
||||
|
||||
# Join module name with its build id if present, as these were
|
||||
# split during tokenization (e.g. "[module" and "modbuildid]").
|
||||
if [[ ${words[$last]} =~ ^[0-9a-f]+\] ]]; then
|
||||
words[$last-1]="${words[$last-1]} ${words[$last]}"
|
||||
unset words[$last] spaces[$last]
|
||||
last=$(( $last - 1 ))
|
||||
fi
|
||||
|
||||
if [[ ${words[$last]} =~ \[([^]]+)\] ]]; then
|
||||
module=${words[$last]}
|
||||
# some traces format is "(%pS)", which like "(foo+0x0/0x1 [bar])"
|
||||
|
||||
Reference in New Issue
Block a user