Make MAXTL dynamic, bounds check tl when indexing
[qemu] / check_ops.sh
1 #! /bin/sh
2 # Script to check for duplicate function prologues in op.o
3 # Typically this indicates missing FORCE_RET();
4 # This script does not detect other errors that may be present.
5
6 # Usage: check_ops.sh [-m machine] [op.o]
7 #   machine and op.o are guessed if not specified.
8
9 if [ "x$1" = "x-m" ]; then
10   machine=$2
11   shift 2
12 else
13   machine=`uname -m`
14 fi
15 if [ -z "$1" ]; then
16   for f in `find . -name op.o`; do
17     /bin/sh "$0" -m $machine $f
18   done
19   exit 0
20 fi
21
22 case $machine in
23   i?86)
24     ret='\tret'
25     ;;
26   x86_64)
27     ret='\tretq'
28     ;;
29   arm)
30     ret='\tldm.*pc'
31     ;;
32   ppc* | powerpc*)
33     ret='\tblr'
34     ;;
35   mips*)
36     ret='\tjr.*ra'
37     ;;
38   s390*)
39     ret='\tbr.*'
40     ;;
41   *)
42     echo "Unknown machine `uname -m`"
43     ;;
44 esac
45 echo $1
46 # op_exit_tb causes false positives on some hosts.
47 ${CROSS}objdump -dr $1  | \
48   sed -e '/>:$\|'"$ret"'/!d' -e 's/.*<\(.*\)>:/~\1:/' -e 's/.*'"$ret"'.*/!/' | \
49   sed -e ':1;N;s/\n//;t1' | sed -e 's/~/\n/g' | grep -v '^op_exit_tb' | \
50   grep '^op_.*!!'