diff options
-rwxr-xr-x | scripts/faddr2line | 18 |
1 files changed, 16 insertions, 2 deletions
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 | ||