#! /bin/sh
TEST_NAME=$1
+TEST_VALIDITY=$2
# Only 1 TEST_OP variable should be set.
+TEST_OP1=$3
+TEST_OP2=$4
+TEST_OP3=$5
+TEST_OP4=$6
+TEST_OP5=$7
-TEST_OP1=$2
-TEST_OP2=$3
-TEST_OP3=$4
-TEST_OP4=$5
-TEST_OP5=$6
-
-TEST_FILE=invalid_exception_branch_${TEST_NAME}_generated.cil
+TEST_FILE=${TEST_VALIDITY}_exception_branch_${TEST_NAME}_generated.il
echo $TEST_FILE
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
-// invalid CIL which breaks the ECMA-335 rules.
+// ${TEST_VALIDITY} CIL which breaks the ECMA-335 rules.
// This CIL should fail verification by a conforming CLI verifier.
.assembly '${TEST_NAME}_generated'
.method public static int32 Main() cil managed
{
.entrypoint
- .maxstack 2
+ .maxstack 8
+ .locals init (int32 V0,
+ int32 V1)
+
OPCODE1
.try
{
- branch_target1:
- OPCODE2
+ nop
+branch_target1:
+ OPCODE2
+ leave branch_target5
}
catch [mscorlib]System.Exception
{
- branch_target2:
- OPCODE3
+ pop
+branch_target2:
+ OPCODE3
+ leave branch_target5
}
.try
{
+ nop
+ leave branch_target5
}
finally
{
- branch_target3:
- OPCODE4
+ nop
+branch_target3:
+ OPCODE4
+ endfinally
}
.try
{
- }
+ nop
+ leave branch_target5
+ }
filter
{
- ldc.i4.1
- endfilter
+ pop
+ ldc.i4.1
+ endfilter
}
+
{
- branch_target4:
- OPCODE5
- }
+ pop
+ nop
+branch_target4:
+ OPCODE5
+ nop
+ leave branch_target5
+ }
+ nop
branch_target5:
ldc.i4.0
ret
}
-//EOF
\ No newline at end of file
+//EOF