Script to check for missing FORCE_RET.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2308 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
		
							parent
							
								
									21664424ed
								
							
						
					
					
						commit
						2f67a0d55a
					
				
							
								
								
									
										47
									
								
								check_ops.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										47
									
								
								check_ops.sh
									
									
									
									
									
										Executable file
									
								
							| @ -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_.*!!' | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 pbrook
						pbrook