|  | #!/bin/sh | 
|  |  | 
|  | FILE=$1 | 
|  | if [ ! -f $FILE ]; then | 
|  | echo "ERROR: Not a file: $FILE" | 
|  | exit 3 | 
|  | fi | 
|  | ret=0 | 
|  | if [ "x$LLVM_CONFIG" = "x" ]; then | 
|  | LLVM_CONFIG=llvm-config | 
|  | echo 'WARNING: $LLVM_CONFIG not set, falling back to $PATH llvm-config' | 
|  | ret=2 | 
|  | fi | 
|  |  | 
|  |  | 
|  | BIN_DIR=$($LLVM_CONFIG --bindir) | 
|  | DIS="$BIN_DIR/llvm-dis" | 
|  | if [ ! -x $DIS ]; then | 
|  | echo "ERROR: Disassembler '$DIS' is not executable" | 
|  | exit 3 | 
|  | fi | 
|  |  | 
|  | TMP_FILE=$(mktemp) | 
|  |  | 
|  | # Check for calls. Calls to llvm intrinsics are OK | 
|  | $DIS < $FILE | grep ' call ' | grep -v '@llvm' > "$TMP_FILE" | 
|  | COUNT=$(wc -l < "$TMP_FILE") | 
|  |  | 
|  | if [ "$COUNT" -ne "0" ]; then | 
|  | echo "ERROR: $COUNT unresolved calls detected in $FILE" | 
|  | cat $TMP_FILE | 
|  | ret=1 | 
|  | else | 
|  | echo "File $FILE is OK" | 
|  | fi | 
|  | exit $ret |