Commit 9b68ac22 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'faddr2line' (patches from Josh)

Merge faddr2line updates from Josh Poimboeuf:

 - revert faddr2line's default output to its original non-code-listing
   output, and make the code listing an optional feature

 - give faddr2line a real maintainer, so get_maintainer.pl will actually
   CC me on future patches

* emailed patches from Josh Poimboeuf <jpoimboe@redhat.com>:
  MAINTAINERS: add Josh Poimboeuf as faddr2line maintainer
  scripts/faddr2line: make the new code listing format optional
parents 716a685f 2562c011
...@@ -5415,6 +5415,11 @@ S: Maintained ...@@ -5415,6 +5415,11 @@ S: Maintained
F: Documentation/hwmon/f71805f F: Documentation/hwmon/f71805f
F: drivers/hwmon/f71805f.c F: drivers/hwmon/f71805f.c
FADDR2LINE
M: Josh Poimboeuf <jpoimboe@redhat.com>
S: Maintained
F: scripts/faddr2line
FANOTIFY FANOTIFY
M: Jan Kara <jack@suse.cz> M: Jan Kara <jack@suse.cz>
R: Amir Goldstein <amir73il@gmail.com> R: Amir Goldstein <amir73il@gmail.com>
......
...@@ -56,7 +56,7 @@ command -v ${SIZE} >/dev/null 2>&1 || die "size isn't installed" ...@@ -56,7 +56,7 @@ command -v ${SIZE} >/dev/null 2>&1 || die "size isn't installed"
command -v ${NM} >/dev/null 2>&1 || die "nm isn't installed" command -v ${NM} >/dev/null 2>&1 || die "nm isn't installed"
usage() { usage() {
echo "usage: faddr2line <object file> <func+offset> <func+offset>..." >&2 echo "usage: faddr2line [--list] <object file> <func+offset> <func+offset>..." >&2
exit 1 exit 1
} }
...@@ -166,15 +166,25 @@ __faddr2line() { ...@@ -166,15 +166,25 @@ __faddr2line() {
local file_lines=$(${ADDR2LINE} -fpie $objfile $addr | sed "s; $dir_prefix\(\./\)*; ;") local file_lines=$(${ADDR2LINE} -fpie $objfile $addr | sed "s; $dir_prefix\(\./\)*; ;")
[[ -z $file_lines ]] && return [[ -z $file_lines ]] && return
if [[ $LIST = 0 ]]; then
echo "$file_lines" | while read -r line
do
echo $line
done
DONE=1;
return
fi
# show each line with context # show each line with context
echo "$file_lines" | while read -r line echo "$file_lines" | while read -r line
do do
echo
echo $line echo $line
n=$(echo $line | sed 's/.*:\([0-9]\+\).*/\1/g') n=$(echo $line | sed 's/.*:\([0-9]\+\).*/\1/g')
n1=$[$n-5] n1=$[$n-5]
n2=$[$n+5] n2=$[$n+5]
f=$(echo $line | sed 's/.*at \(.\+\):.*/\1/g') f=$(echo $line | sed 's/.*at \(.\+\):.*/\1/g')
awk 'NR>=strtonum("'$n1'") && NR<=strtonum("'$n2'") {printf("%d\t%s\n", NR, $0)}' $f awk 'NR>=strtonum("'$n1'") && NR<=strtonum("'$n2'") { if (NR=='$n') printf(">%d<", NR); else printf(" %d ", NR); printf("\t%s\n", $0)}' $f
done done
DONE=1 DONE=1
...@@ -185,6 +195,10 @@ __faddr2line() { ...@@ -185,6 +195,10 @@ __faddr2line() {
[[ $# -lt 2 ]] && usage [[ $# -lt 2 ]] && usage
objfile=$1 objfile=$1
LIST=0
[[ "$objfile" == "--list" ]] && LIST=1 && shift && objfile=$1
[[ ! -f $objfile ]] && die "can't find objfile $objfile" [[ ! -f $objfile ]] && die "can't find objfile $objfile"
shift shift
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment