Print this page
new smatch
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/tools/smatch/src/sparsec
+++ new/usr/src/tools/smatch/src/sparsec
1 1 #!/bin/sh
2 2 #
3 3 # GCC compatible C compiler based on Sparse LLVM
4 4
5 5 set +e
6 6
7 7 SPARSEOPTS=""
8 8 DIRNAME=`dirname $0`
9 9
10 10 NEED_LINK=1
11 11
12 12 if [ $# -eq 0 ]; then
13 13 echo "`basename $0`: no input files"
14 14 exit 1
15 15 fi
16 16
17 17 while [ $# -gt 0 ]; do
18 18 case $1 in
19 19 '-o')
20 20 OUTFILE=$2
21 21 shift
↓ open down ↓ |
21 lines elided |
↑ open up ↑ |
22 22 ;;
23 23 '-c')
24 24 NEED_LINK=0
25 25 ;;
26 26 *)
27 27 SPARSEOPTS="$SPARSEOPTS $1 " ;;
28 28 esac
29 29 shift
30 30 done
31 31
32 -TMPLLVM=`mktemp -t tmp.XXXXXX`".llvm"
33 -TMPFILE=`mktemp -t tmp.XXXXXX`".o"
32 +TMPFILE=`mktemp -t tmp.XXXXXX`
34 33
35 -$DIRNAME/sparse-llvm $SPARSEOPTS > $TMPLLVM
36 34
37 35 LLC=`"${LLVM_CONFIG:-llvm-config}" --bindir`/llc
38 36
39 -$LLC -o - $TMPLLVM | as -o $TMPFILE
37 +LLC_ARCH_OPTS=
38 +case "$(uname -s)" in
39 +*CYGWIN*)
40 + # cygwin uses the sjlj (setjmp-longjmp) exception model
41 + LLC_ARCH_OPTS="-exception-model=sjlj"
42 + ;;
43 +*)
44 + ;;
45 +esac
40 46
47 +$DIRNAME/sparse-llvm $SPARSEOPTS | $LLC ${LLC_ARCH_OPTS} | as -o $TMPFILE
48 +
41 49 if [ $NEED_LINK -eq 1 ]; then
42 50 if [ -z $OUTFILE ]; then
43 51 OUTFILE=a.out
44 52 fi
45 53 gcc $TMPFILE -o $OUTFILE
54 + rm -f $TMPFILE
46 55 else
47 56 if [ -z $OUTFILE ]; then
48 57 echo "`basename $0`: no output file"
49 58 exit 1
50 59 fi
51 60 mv $TMPFILE $OUTFILE
52 61 fi
53 -
54 -rm -f $TMPLLVM
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX