scripts: decode_stacktrace: fix ARM architecture decoding
Fix the stack decoder for the ARM architecture. An ARM stack is designed as : [ 81.547704] [<c023eb04>] (bucket_find_contain) from [<c023ec88>] (check_sync+0x40/0x4f8) [ 81.559668] [<c023ec88>] (check_sync) from [<c023f8c4>] (debug_dma_sync_sg_for_cpu+0x128/0x194) [ 81.571583] [<c023f8c4>] (debug_dma_sync_sg_for_cpu) from [<c0327dec>] (__videobuf_s The current script doesn't expect the symbols to be bound by parenthesis, and triggers the following errors : awk: cmd. line:1: error: Unmatched ( or \(: / (check_sync$/ [ 81.547704] (bucket_find_contain) from (check_sync+0x40/0x4f8) Fix it by chopping starting and ending parenthesis from the each symbol name. As a side note, this probably comes from the function dump_backtrace_entry(), which is implemented differently for each architecture. That makes a single decoding script a bit a challenge. Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> Cc: Sasha Levin <sasha.levin@oracle.com> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Michal Marek <mmarek@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fa70900e09
commit
e260fe01fa
|
@ -14,11 +14,14 @@ declare -A cache
|
|||
|
||||
parse_symbol() {
|
||||
# The structure of symbol at this point is:
|
||||
# [name]+[offset]/[total length]
|
||||
# ([name]+[offset]/[total length])
|
||||
#
|
||||
# For example:
|
||||
# do_basic_setup+0x9c/0xbf
|
||||
|
||||
# Remove the englobing parenthesis
|
||||
symbol=${symbol#\(}
|
||||
symbol=${symbol%\)}
|
||||
|
||||
# Strip the symbol name so that we could look it up
|
||||
local name=${symbol%+*}
|
||||
|
|
Loading…
Reference in New Issue