zu den aenderungen:
per gdb gedumpt werden nun nur noch methoden die im erzeugten ASM-file *und* im
dazugehoerigen CALL-file existieren. davor wurden alle methoden die im erzeugten
ASM-file vorkammen per gdb gedumpt (was vor methodenaufrufen auch noch keine
probleme machte).
ausserdem werden nun nur methodennamen gegrept die unserer grammatik entsprechen
(minimale aenderung im regexausdruck).
aus diesen aenderungen ergibt auch, dass nun nicht mehr zwingend ein '.' vor den
labels, die fuer if bzw. while benoetigt werden, stehen muss.
dementsprechend gibts ein instr-update fuer ein paar gesamt-testfaelle
#LABEL=`grep '.globl' $TMPNAME.s | sed 's/^.*\\.globl *\\([a-zA-Z0-9_]\\+\\).*$/\1/g'`
# this won't work, we need all actual labels
#LABEL=`grep '.globl' $TMPNAME.s | sed 's/^.*\\.globl *\\([a-zA-Z0-9_]\\+\\).*$/\1/g'`
# this won't work, we need all actual labels
- LABEL=`grep '[a-zA-Z0-9_.$]\\+:' $TMPNAME.s | sed 's/^\\(.*[^a-zA-Z0-9_.$]\\)\\?\\([a-zA-Z0-9_.$]\\+\\):.*$/\2/g'`
+ grep '[a-zA-Z_][a-zA-Z0-9_]*:' $TMPNAME.s | sed 's/^\(.*[^a-zA-Z_.]\)\?\([a-zA-Z0-9_.$]\+\):.*$/\2/g' > $TMPNAME.uniq
+
+ LABEL_ASM=`cat $TMPNAME.uniq`
+
+ # functionidentifiers from CALL-file
+ grep '[a-zA-Z_][a-zA-Z0-9_]*(.*)' ${i%.0}.call | sed 's/.*[^a-zA-Z_]\([a-zA-Z_][a-zA-Z0-9_]*\)(.*)\;/\1/g' | sort | uniq >> $TMPNAME.uniq
+
+ LABEL=`sort $TMPNAME.uniq | uniq -d`
+ rm $TMPNAME.uniq
- MATCHES="$MATCHES\\|$j"
# count instructions
$DUMPINSTR $TMPNAME $j > /dev/null
if [ $? != 0 ]; then
# count instructions
$DUMPINSTR $TMPNAME $j > /dev/null
if [ $? != 0 ]; then
+ MATCHES=0
+ for j in $LABEL_ASM; do
+ MATCHES="$MATCHES\\|$j"
+ done
+
# filter trace
grep "<\\($MATCHES\\)\\(+[0-9]*\\)\\?>:" $TMPNAME.trace > $TRACEDIR/$bi.trace
# filter trace
grep "<\\($MATCHES\\)\\(+[0-9]*\\)\\?>:" $TMPNAME.trace > $TRACEDIR/$bi.trace