Merge pull request #2545 from ermshiperete/Xamarin-24974
[mono.git] / mono / tests / verifier / make_il_overflow_test.sh
1 #! /bin/sh
2
3 SED="sed"
4 if [ `which gsed 2> /dev/null` ] ; then 
5         SED="gsed"
6 fi
7
8 TEST_NAME=$1
9 TEST_VALIDITY=$2
10 TEST_BYTE_0=$3
11 TEST_BYTE_1=$4
12 TEST_BYTE_2=$5
13 TEST_BYTE_3=$6
14 TEST_BYTE_4=$7
15
16
17 if [ "$TEST_BYTE_1" != "" ] ; then
18         EMIT_BYTE_1=".emitbyte $TEST_BYTE_1";
19 fi
20
21 if [ "$TEST_BYTE_2" != "" ] ; then
22         EMIT_BYTE_2=".emitbyte $TEST_BYTE_2";
23 fi
24
25 if [ "$TEST_BYTE_3" != "" ] ; then
26         EMIT_BYTE_3=".emitbyte $TEST_BYTE_3";
27 fi
28
29 if [ "$TEST_BYTE_4" != "" ] ; then
30         EMIT_BYTE_4=".emitbyte $TEST_BYTE_4";
31 fi
32
33 if [ "$TEST_BYTE_5" != "" ] ; then
34         EMIT_BYTE_5=".emitbyte $TEST_BYTE_5";
35 fi
36
37 TEST_FILE=`echo ${TEST_VALIDITY}_${TEST_NAME} | $SED -e 's/ /_/g' -e 's/\./_/g' -e 's/&/mp/g' -e 's/\[/_/g' -e 's/\]/_/g'`_generated.il
38 echo $TEST_FILE
39 $SED -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/BYTE_0/${TEST_BYTE_0}/g" -e "s/BYTE_1/${TEST_BYTE_1}/g" > $TEST_FILE <<//EOF
40
41 // VALIDITY CIL which breaks the ECMA-335 rules. 
42 // this CIL should fail verification by a conforming CLI verifier.
43
44 .assembly '${TEST_NAME}_generated'
45 {
46   .hash algorithm 0x00008004
47   .ver  0:0:0:0
48 }
49
50 .method public static void Main() cil managed
51 {
52         .entrypoint
53         .maxstack 2
54         .locals init ()
55
56         nop
57         nop
58         .emitbyte BYTE_0
59         ${EMIT_BYTE_1}
60         ${EMIT_BYTE_2}
61         ${EMIT_BYTE_3}
62         ${EMIT_BYTE_4}
63         ${EMIT_BYTE_5}
64 }
65
66
67 //EOF