9fbb0d306c96bc7bbf9d9f10a0ba5ca9b9f3a7fe
[mono.git] / mono / tests / verifier / make_access_test.sh
1 #! /bin/sh
2
3 TEST_NAME=$1
4 TEST_VALIDITY=$2
5 TEST_OP=$3
6 TEST_CLASS_ACCESS=$4
7 TEST_MEMBER_ACCESS=$5
8 TEST_EXTENDS=$6
9 TEST_USE_SUB_CLASS=$7
10
11 if [ "$TEST_EXTENDS" == "yes" ]; then
12         TEST_EXTENDS="extends Class"
13 else
14         TEST_EXTENDS="extends [mscorlib]System.Object"
15 fi
16
17 if [ "$TEST_USE_SUB_CLASS" == "yes" ]; then
18         TEST_VAR_TYPE="ExampleClass"
19 else
20         TEST_VAR_TYPE="Class"
21 fi
22
23 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
24 TEST_FILE=${TEST_NAME}_generated.il
25 echo $TEST_FILE
26 sed -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/OPCODE/${TEST_OP}/g" -e "s/CLASS_ACCESS/${TEST_CLASS_ACCESS}/g" -e "s/VAR_TYPE/${TEST_VAR_TYPE}/g" -e "s/MEMBER_ACCESS/${TEST_MEMBER_ACCESS}/g" -e "s/EXTENDS/${TEST_EXTENDS}/g" > $TEST_FILE <<//EOF
27
28 .assembly '${TEST_NAME}_generated'
29 {
30   .hash algorithm 0x00008004
31   .ver  0:0:0:0
32 }
33
34 // VALIDITY CIL which breaks the ECMA-335 rules. 
35 // this CIL should fail verification by a conforming CLI verifier.
36
37 .assembly extern mscorlib
38 {
39   .ver 1:0:5000:0
40   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
41 }
42
43 .class CLASS_ACCESS Class extends [mscorlib]System.Object
44 {
45     .field MEMBER_ACCESS static int32 sfld
46     .field MEMBER_ACCESS int32 fld
47
48     .method MEMBER_ACCESS int32 Method() {
49         ldc.i4.0
50         ret
51     }
52 }
53
54 .class ExampleClass EXTENDS
55 {
56         .method public static int32 Main() cil managed
57         {
58                 .entrypoint
59                 .maxstack 2
60                 .locals init (
61                         VAR_TYPE V0
62                 )
63                 ldloc.0
64                 OPCODE // VALIDITY.
65                 pop
66                 ldc.i4.0
67                 ret
68         }
69 }
70 //EOF