Ignore built executable files
[atscap.git] / btfd.sh
blobf4e3b40c59d358d53ac59cb700d289c94cecce78
1 #!/bin/sh
2 PREFIX=/usr/local
3 # backtrace symbols .bt file dump helper for atscap-1.1
4 # Usage: $0 <FILENAME
6 # Application name is AN
7 # Application signal handler name is SN
9 # CO PO PC BO BC P1 P2 B1 B2 are checks for various extracts
11 AN="atscap"
12 SN="signal_handler"
13 CO="\#"
14 PO="\("
15 PC="\)"
16 BO="\["
17 BC="\]"
19 while read line
23 NAME=""
24 FUNC=""
25 ADDR=""
27 # extract file name, (function name) and [address]
28 C1=`expr index "$line" "$CO"`
29 if [ "$C1" -eq "1" ]
30 then echo "$line"; continue
33 # echo "RAW $line"
35 N1="0"
36 N2="1"
38 P1=`expr index "$line" "$PO"`
39 P2=`expr index "$line" "$PC"`
41 B1=`expr index "$line" "$BO"`
42 B2=`expr index "$line" "$BC"`
44 # echo " " $C1 $P1 $P2 $B1 $B2
46 if [ "$P1" -gt "0" ]
47 then if [ "$P2" -gt "0" ]
48 then FUNC=${line:$P1:$P2-$P1-1}
52 if [ "$B2" -gt "$B1" ]
53 then ADDR=${line:$B1:$B2-$B1-1}
56 N2=$P1
58 if [ "$N2" -eq "0" ]
59 then N2=$B1;
62 if [ "$N2" -eq "0" ]
63 then N2=$P1;
66 # echo N1 $N1 N2 $N2 P1 $P1 P2 $P2 B1 $B1 B2 $B2
68 if [ "$N2" -gt "$N1" ]
69 then NAME=${line:$N1:$N2-$N1-1}
72 # if [ "$N2" -gt "1" ]
73 # then echo NAME $NAME
74 # fi
76 # if [ "$P2" -gt "1" ]
77 # then echo FUNC $FUNC
78 # fi
80 # if [ "$B2" -gt "1" ]
81 # then echo ADDR $ADDR
82 # fi
83 # echo "+++" NAME $NAME FUNC $FUNC ADDR $ADDR
85 # only want AM matches to application name AN to generate addr2line
86 AM=`expr index "$NAME" "$AN"`
87 # only want SM non-match to signal_handler function to generate addr2line
88 SM=`expr index "$NAME" "$SN"`
89 # echo $NAME $AN $AM
90 # echo $NAME $SN $SM
92 if [ "$AM" -ne "1" ]
93 then continue
96 if [ "$SM" -eq "0" ]
97 then continue
100 # echo DO addr2line.new -s -f -e $PREFIX/bin/atscap $ADDR
102 addr2line -s -f -e $PREFIX/bin/atscap $ADDR
104 done