aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xscripts/faddr2line18
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"
56command -v ${NM} >/dev/null 2>&1 || die "nm isn't installed" 56command -v ${NM} >/dev/null 2>&1 || die "nm isn't installed"
57 57
58usage() { 58usage() {
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
187objfile=$1 197objfile=$1
198
199LIST=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"
189shift 203shift
190 204