db/fixup_kernel.sh: fix clear_user() handling
[smatch.git] / smatch_scripts / test_kernel.sh
blob5d14c42fc7ca2d3053cd973c688d1b02f1a62db8
1 #!/bin/bash
3 NR_CPU=$(cat /proc/cpuinfo | grep ^processor | wc -l)
4 TARGET="bzImage modules"
5 WLOG="smatch_warns.txt"
6 LOG="smatch_compile.warns"
7 function usage {
8 echo
9 echo "Usage: $0 [smatch options]"
10 echo "Compiles the kernel with -j${NR_CPU}"
11 echo " available options:"
12 echo " --endian : enable endianess check"
13 echo " --target {TARGET} : specify build target, default: $TARGET"
14 echo " --log {FILE} : Output compile log to file, default is: $LOG"
15 echo " --wlog {FILE} : Output warnigs to file, default is: $WLOG"
16 echo " --help : Show this usage"
17 exit 1
21 while true ; do
22 if [[ "$1" == "--endian" ]] ; then
23 ENDIAN="CF=-D__CHECK_ENDIAN__"
24 shift
25 elif [[ "$1" == "--target" ]] ; then
26 shift
27 TARGET="$1"
28 shift
29 elif [[ "$1" == "--log" ]] ; then
30 shift
31 LOG="$1"
32 shift
33 elif [[ "$1" == "--wlog" ]] ; then
34 shift
35 WLOG="$1"
36 shift
37 elif [[ "$1" == "--help" ]] ; then
38 usage
39 else
40 break
42 done
44 INFO=0
45 if echo "$*" | grep -q info ; then
46 INFO=1
49 # receive parameters from environment, which override
50 [ -z "${SMATCH_ENV_TARGET:-}" ] || TARGET="$SMATCH_ENV_TARGET"
51 [ -z "${SMATCH_ENV_BUILD_PARAM:-}" ] || BUILD_PARAM="$SMATCH_ENV_BUILD_PARAM"
53 SCRIPT_DIR=$(dirname $0)
54 if [ -e $SCRIPT_DIR/../smatch ] ; then
55 cp $SCRIPT_DIR/../smatch $SCRIPT_DIR/../bak.smatch
56 CMD=$SCRIPT_DIR/../bak.smatch
57 elif which smatch | grep smatch > /dev/null ; then
58 CMD=smatch
59 else
60 echo "Smatch binary not found."
61 exit 1
64 if [[ ! -z $ARCH ]]; then
65 KERNEL_ARCH="ARCH=$ARCH"
67 if [[ ! -z $CROSS_COMPILE ]] ; then
68 KERNEL_CROSS_COMPILE="CROSS_COMPILE=$CROSS_COMPILE"
71 make $KERNEL_ARCH $KERNEL_CROSS_COMPILE clean
72 find -name \*.c.smatch -exec rm \{\} \;
73 find -name \*.c.smatch.sql -exec rm \{\} \;
74 find -name \*.c.smatch.caller_info -exec rm \{\} \;
75 make $KERNEL_ARCH $KERNEL_CROSS_COMPILE -j${NR_CPU} $ENDIAN -k CHECK="$CMD -p=kernel --file-output --succeed $*" \
76 C=1 $BUILD_PARAM $TARGET 2>&1 | tee $LOG
77 BUILD_STATUS=${PIPESTATUS[0]}
78 find -name \*.c.smatch -exec cat \{\} \; -exec rm \{\} \; > $WLOG
79 if [[ $INFO -eq 1 ]] ; then
80 find -name \*.c.smatch.sql -exec cat \{\} \; -exec rm \{\} \; > $WLOG.sql
81 find -name \*.c.smatch.caller_info -exec cat \{\} \; -exec rm \{\} \; > $WLOG.caller_info
84 echo "Done. Build with status $BUILD_STATUS. The warnings are saved to $WLOG"
85 exit $BUILD_STATUS