2008-03-10 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 10 Mar 2008 15:48:53 +0000 (15:48 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 10 Mar 2008 15:48:53 +0000 (15:48 -0000)
* make_invalid_ret_type.sh: Added. Generate return site tests
for invalid return types.

* make_tests.sh: Add tests using make_invalid_ret_type.sh.

svn path=/trunk/mono/; revision=97876

mono/tests/verifier/ChangeLog
mono/tests/verifier/make_invalid_ret_type.sh [new file with mode: 0755]
mono/tests/verifier/make_tests.sh

index fe83599e1e9a50450efd2a1b2b0747b4d8ba1d31..4a7918a355f28e5486f2839c0810c09ffcc49f9a 100644 (file)
@@ -1,3 +1,10 @@
+2008-03-10 Rodrigo Kumpera <rkumpera@novell.com>
+
+       * make_invalid_ret_type.sh: Added. Generate return site tests
+       for invalid return types.
+
+       * make_tests.sh: Add tests using make_invalid_ret_type.sh. 
+
 2008-03-10 Rodrigo Kumpera <rkumpera@novell.com>
 
        * unverifiable_callvirt_static_method.il: Added. Test for callvirt and
diff --git a/mono/tests/verifier/make_invalid_ret_type.sh b/mono/tests/verifier/make_invalid_ret_type.sh
new file mode 100755 (executable)
index 0000000..4b3427d
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh
+
+TEST_NAME=$1
+TEST_VALIDITY=$2
+TEST_TYPE=$3
+
+
+TEST_FILE=${TEST_VALIDITY}_${TEST_NAME}_generated.il
+echo $TEST_FILE
+
+
+sed -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/TYPE/${TEST_TYPE}/g" > $TEST_FILE <<//EOF
+
+// VALIDITY CIL which breaks the ECMA-335 rules. 
+// this CIL should fail verification by a conforming CLI verifier.
+
+.assembly '${TEST_NAME}_generated'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+
+.class public auto ansi beforefieldinit Driver extends [mscorlib]System.Object
+{
+       .method public static  hidebysig default TYPE Foo ()  cil managed 
+    {
+               .maxstack 8
+               .locals init (TYPE V_0)
+               ldloc.0 
+               ret 
+       }
+
+       .method public static  hidebysig default int32 Main ()  cil managed 
+       {
+               .entrypoint
+               .maxstack 2
+               .locals init ()
+               call TYPE class Driver::Foo()
+               pop
+               ldc.i4.0
+               ret 
+       }
+}
+
+//EOF
index e50d4c17f75cd77694154b3dafc5af0784dcf62b..d6ff89a3af3452bb55b25fbb99ceaab94632356b 100755 (executable)
@@ -4036,4 +4036,12 @@ done
 
 
 
+#method definition return type validation
+./make_invalid_ret_type.sh ret_type_byref unverifiable "int32\&"
+./make_invalid_ret_type.sh ret_type_typedref unverifiable "typedref"
+./make_invalid_ret_type.sh ret_type_arg_interator unverifiable "valuetype [mscorlib]System.ArgIterator"
+./make_invalid_ret_type.sh ret_type_arg_handle unverifiable "valuetype [mscorlib]System.RuntimeArgumentHandle"
+
+
+