diff options
author | Konstantin Khlebnikov <khlebnikov@yandex-team.ru> | 2020-08-06 23:17:35 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-08-07 11:33:21 -0700 |
commit | f643b9ee97766e1846fab237c58a56277bf7e530 (patch) | |
tree | c1feff66865ab6517901cf0fd9bf18ed7e4ee4b8 /scripts | |
parent | 1d35b6054a9b94b48511e23a7fab6cd1dbf3fde6 (diff) | |
download | lwn-f643b9ee97766e1846fab237c58a56277bf7e530.tar.gz lwn-f643b9ee97766e1846fab237c58a56277bf7e530.zip |
scripts/decode_stacktrace.sh: skip missing symbols
For now script turns missing symbols into '0' and make bogus decode. Skip
them instead. Also simplify parsing output of 'nm'.
Before:
$ echo 'xxx+0x0/0x0' | ./scripts/decode_stacktrace.sh vmlinux ""
xxx (home/khlebnikov/src/linux/./arch/x86/include/asm/processor.h:398)
After:
$ echo 'xxx+0x0/0x0' | ./scripts/decode_stacktrace.sh vmlinux ""
xxx+0x0/0x0
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Sasha Levin <sashal@kernel.org>
Link: http://lkml.kernel.org/r/159282922499.248444.4883465570858385250.stgit@buzz
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/decode_stacktrace.sh | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/scripts/decode_stacktrace.sh b/scripts/decode_stacktrace.sh index 0869def435ee..b157037af6df 100755 --- a/scripts/decode_stacktrace.sh +++ b/scripts/decode_stacktrace.sh @@ -56,7 +56,11 @@ parse_symbol() { if [[ "${cache[$module,$name]+isset}" == "isset" ]]; then local base_addr=${cache[$module,$name]} else - local base_addr=$(nm "$objfile" | grep -i ' t ' | awk "/ $name\$/ {print \$1}" | head -n1) + local base_addr=$(nm "$objfile" | awk '$3 == "'$name'" && ($2 == "t" || $2 == "T") {print $1; exit}') + if [[ $base_addr == "" ]] ; then + # address not found + return + fi cache[$module,$name]="$base_addr" fi # Let's start doing the math to get the exact address into the |