Merge branch 'master' of git://repo.or.cz/qemu
[qemu/hppa.git] / check_ops.sh
blob1c9cf87e3657c0045037fedff142a37820210e2a
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.
6 # Usage: check_ops.sh [-m machine] [op.o]
7 # machine and op.o are guessed if not specified.
9 if [ "x$1" = "x-m" ]; then
10 machine=$2
11 shift 2
12 else
13 machine=`uname -m`
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
22 case $machine in
23 i?86)
24 ret='\tret'
26 x86_64)
27 ret='\tretq'
29 arm)
30 ret='\tldm.*pc'
32 ppc* | powerpc*)
33 ret='\tblr'
35 mips*)
36 ret='\tjr.*ra'
38 s390*)
39 ret='\tbr.*'
42 echo "Unknown machine `uname -m`"
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_.*!!'