SMP half-idle fix.
[qemu/mini2440.git] / check_ops.sh
blobb1f2f8500c518e3c191a21c7184df226a037339a
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'
39 echo "Unknown machine `uname -m`"
41 esac
42 echo $1
43 # op_exit_tb causes false positives on some hosts.
44 ${CROSS}objdump -dr $1 | \
45 sed -e '/>:$\|'"$ret"'/!d' -e 's/.*<\(.*\)>:/~\1:/' -e 's/.*'"$ret"'.*/!/' | \
46 sed -e ':1;N;s/\n//;t1' | sed -e 's/~/\n/g' | grep -v '^op_exit_tb' | \
47 grep '^op_.*!!'