merge -r 60814:60815
[mono.git] / mono / tests / verifier / make_exception_branch_test.sh
1 #! /bin/sh
2
3 TEST_NAME=$1
4
5 # Only 1 TEST_OP variable should be set.
6
7 TEST_OP1=$2
8 TEST_OP2=$3
9 TEST_OP3=$4
10 TEST_OP4=$5
11 TEST_OP5=$6
12
13 TEST_FILE=invalid_exception_branch_${TEST_NAME}_generated.cil
14 echo $TEST_FILE
15 sed -e "s/OPCODE1/${TEST_OP1}/g" -e "s/OPCODE2/${TEST_OP2}/g" -e "s/OPCODE3/${TEST_OP3}/g" -e "s/OPCODE4/${TEST_OP4}/g" -e "s/OPCODE5/${TEST_OP5}/g" > $TEST_FILE <<//EOF
16 // invalid CIL which breaks the ECMA-335 rules. 
17 // This CIL should fail verification by a conforming CLI verifier.
18
19 .assembly '${TEST_NAME}_generated'
20 {
21   .hash algorithm 0x00008004
22   .ver  0:0:0:0
23 }
24
25 .method public static int32 Main() cil managed
26 {
27         .entrypoint
28         .maxstack 2
29         OPCODE1
30         .try
31         {
32         branch_target1:
33         OPCODE2
34         }
35         catch [mscorlib]System.Exception 
36         {
37         branch_target2:
38         OPCODE3
39         }
40         .try
41         {
42         }
43         finally
44         {
45         branch_target3:
46         OPCODE4
47         }
48         .try 
49         {
50         }
51         filter
52         {
53         ldc.i4.1
54         endfilter
55         }
56         {
57         branch_target4:
58         OPCODE5
59         }
60         branch_target5:
61         ldc.i4.0
62         ret
63 }
64 //EOF