diff --git a/printpcs b/printpcs index 32b33cc..81d039b 100755 --- a/printpcs +++ b/printpcs @@ -1,11 +1,14 @@ #!/bin/sh -# Decode the symbols from a panic stack trace on stdin +# Decode the symbols from a panic EIP list -if which addr2line -then - p="addr2line" -else - p="i386-jos-elf-addr2line" -fi -echo grep '^ ' | $p -e kernel $* +# Find a working addr2line +for p in i386-jos-elf-addr2line addr2line; do + if which $p 2>&1 >/dev/null && \ + $p -h 2>&1 | grep -q '\belf32-i386\b'; then + break + fi +done + +# Enable as much pretty-printing as this addr2line can do +$p $($p -h | grep ' -[aipsf] ' | awk '{print $1}') -e kernel "$@"