From: pbrook Date: Sun, 7 Jan 2007 19:38:08 +0000 (+0000) Subject: Script to check for missing FORCE_RET. X-Git-Tag: release_0_9_1~1587 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=05f372ecaf24fe2e80e9ca9f4d07af0c028d0d64;p=qemu-xen-3.3-testing.git Script to check for missing FORCE_RET. --- diff --git a/check_ops.sh b/check_ops.sh new file mode 100755 index 00000000..b1f2f850 --- /dev/null +++ b/check_ops.sh @@ -0,0 +1,47 @@ +#! /bin/sh +# Script to check for duplicate function prologues in op.o +# Typically this indicates missing FORCE_RET(); +# This script does not detect other errors that may be present. + +# Usage: check_ops.sh [-m machine] [op.o] +# machine and op.o are guessed if not specified. + +if [ "x$1" = "x-m" ]; then + machine=$2 + shift 2 +else + machine=`uname -m` +fi +if [ -z "$1" ]; then + for f in `find . -name op.o`; do + /bin/sh "$0" -m $machine $f + done + exit 0 +fi + +case $machine in + i?86) + ret='\tret' + ;; + x86_64) + ret='\tretq' + ;; + arm) + ret='\tldm.*pc' + ;; + ppc* | powerpc*) + ret='\tblr' + ;; + mips*) + ret='\tjr.*ra' + ;; + *) + echo "Unknown machine `uname -m`" + ;; +esac +echo $1 +# op_exit_tb causes false positives on some hosts. +${CROSS}objdump -dr $1 | \ + sed -e '/>:$\|'"$ret"'/!d' -e 's/.*<\(.*\)>:/~\1:/' -e 's/.*'"$ret"'.*/!/' | \ + sed -e ':1;N;s/\n//;t1' | sed -e 's/~/\n/g' | grep -v '^op_exit_tb' | \ + grep '^op_.*!!'