diff options
author | Austin Clements <[email protected]> | 2012-08-24 14:51:52 -0400 |
---|---|---|
committer | Austin Clements <[email protected]> | 2012-08-24 14:51:52 -0400 |
commit | 951b77f7eced2165312d5c12d6256e874dba10f8 (patch) | |
tree | 0a5f592d363f725a671b9ffad9d9280fa9aa19e9 | |
parent | 020acb4f10832d0c003f24272b75a95859d4188f (diff) | |
download | xv6-labs-951b77f7eced2165312d5c12d6256e874dba10f8.tar.gz xv6-labs-951b77f7eced2165312d5c12d6256e874dba10f8.tar.bz2 xv6-labs-951b77f7eced2165312d5c12d6256e874dba10f8.zip |
Various fixes and improvements to printpcs
Search for an addr2line that supports elf32-i386. Don't print the
path of addr2line as a side-effect of which. Don't uselessly pipe
"grep '^ '" to addr2line's stdin. Enable as many pretty-printing and
otherwise helpful options as possible (this makes the output *much*
more pleasant on modern addr2lines).
-rwxr-xr-x | printpcs | 19 |
1 files changed, 11 insertions, 8 deletions
@@ -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 "$@" |