diff options
| -rw-r--r-- | MAINTAINERS | 5 | ||||
| -rwxr-xr-x | scripts/faddr2line | 18 |
2 files changed, 21 insertions, 2 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index aa635837a6af..c3e2e7076a95 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -5415,6 +5415,11 @@ S: Maintained | |||
| 5415 | F: Documentation/hwmon/f71805f | 5415 | F: Documentation/hwmon/f71805f |
| 5416 | F: drivers/hwmon/f71805f.c | 5416 | F: drivers/hwmon/f71805f.c |
| 5417 | 5417 | ||
| 5418 | FADDR2LINE | ||
| 5419 | M: Josh Poimboeuf <jpoimboe@redhat.com> | ||
| 5420 | S: Maintained | ||
| 5421 | F: scripts/faddr2line | ||
| 5422 | |||
| 5418 | FANOTIFY | 5423 | FANOTIFY |
| 5419 | M: Jan Kara <jack@suse.cz> | 5424 | M: Jan Kara <jack@suse.cz> |
| 5420 | R: Amir Goldstein <amir73il@gmail.com> | 5425 | R: Amir Goldstein <amir73il@gmail.com> |
diff --git a/scripts/faddr2line b/scripts/faddr2line index 1876a741087c..a0149db00be7 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line | |||
| @@ -56,7 +56,7 @@ command -v ${SIZE} >/dev/null 2>&1 || die "size isn't installed" | |||
| 56 | command -v ${NM} >/dev/null 2>&1 || die "nm isn't installed" | 56 | command -v ${NM} >/dev/null 2>&1 || die "nm isn't installed" |
| 57 | 57 | ||
| 58 | usage() { | 58 | usage() { |
| 59 | echo "usage: faddr2line <object file> <func+offset> <func+offset>..." >&2 | 59 | echo "usage: faddr2line [--list] <object file> <func+offset> <func+offset>..." >&2 |
| 60 | exit 1 | 60 | exit 1 |
| 61 | } | 61 | } |
| 62 | 62 | ||
| @@ -166,15 +166,25 @@ __faddr2line() { | |||
| 166 | local file_lines=$(${ADDR2LINE} -fpie $objfile $addr | sed "s; $dir_prefix\(\./\)*; ;") | 166 | local file_lines=$(${ADDR2LINE} -fpie $objfile $addr | sed "s; $dir_prefix\(\./\)*; ;") |
| 167 | [[ -z $file_lines ]] && return | 167 | [[ -z $file_lines ]] && return |
| 168 | 168 | ||
| 169 | if [[ $LIST = 0 ]]; then | ||
| 170 | echo "$file_lines" | while read -r line | ||
| 171 | do | ||
| 172 | echo $line | ||
| 173 | done | ||
| 174 | DONE=1; | ||
| 175 | return | ||
| 176 | fi | ||
| 177 | |||
| 169 | # show each line with context | 178 | # show each line with context |
| 170 | echo "$file_lines" | while read -r line | 179 | echo "$file_lines" | while read -r line |
| 171 | do | 180 | do |
| 181 | echo | ||
| 172 | echo $line | 182 | echo $line |
| 173 | n=$(echo $line | sed 's/.*:\([0-9]\+\).*/\1/g') | 183 | n=$(echo $line | sed 's/.*:\([0-9]\+\).*/\1/g') |
| 174 | n1=$[$n-5] | 184 | n1=$[$n-5] |
| 175 | n2=$[$n+5] | 185 | n2=$[$n+5] |
| 176 | f=$(echo $line | sed 's/.*at \(.\+\):.*/\1/g') | 186 | f=$(echo $line | sed 's/.*at \(.\+\):.*/\1/g') |
| 177 | awk 'NR>=strtonum("'$n1'") && NR<=strtonum("'$n2'") {printf("%d\t%s\n", NR, $0)}' $f | 187 | awk 'NR>=strtonum("'$n1'") && NR<=strtonum("'$n2'") { if (NR=='$n') printf(">%d<", NR); else printf(" %d ", NR); printf("\t%s\n", $0)}' $f |
| 178 | done | 188 | done |
| 179 | 189 | ||
| 180 | DONE=1 | 190 | DONE=1 |
| @@ -185,6 +195,10 @@ __faddr2line() { | |||
| 185 | [[ $# -lt 2 ]] && usage | 195 | [[ $# -lt 2 ]] && usage |
| 186 | 196 | ||
| 187 | objfile=$1 | 197 | objfile=$1 |
| 198 | |||
| 199 | LIST=0 | ||
| 200 | [[ "$objfile" == "--list" ]] && LIST=1 && shift && objfile=$1 | ||
| 201 | |||
| 188 | [[ ! -f $objfile ]] && die "can't find objfile $objfile" | 202 | [[ ! -f $objfile ]] && die "can't find objfile $objfile" |
| 189 | shift | 203 | shift |
| 190 | 204 | ||
