Author: kumpera
Date: 2008-01-11 09:30:05 -0500 (Fri, 11 Jan 2008)
New Revision: 92668

Added:
   trunk/mono/mono/tests/verifier/invalid_stojb_bad_token.il
   trunk/mono/mono/tests/verifier/invalid_stojb_token_out_of_bounds.il
   trunk/mono/mono/tests/verifier/make_stobj_test.sh
   trunk/mono/mono/tests/verifier/unverifiable_ldfld_reference_type_by_ref.il
Modified:
   trunk/mono/mono/tests/verifier/ChangeLog
   trunk/mono/mono/tests/verifier/make_tests.sh
Log:
2008-01-11 Rodrigo Kumpera <[EMAIL PROTECTED]>

        * unverifiable_ldfld_reference_type_by_ref.il: new test for ldfld.

        * invalid_stojb_bad_token.il: test for bad ldobj token.

        * invalid_stojb_token_out_of_bounds.il: same.

        * make_stobj_test.sh: new test generator.

        * make_test.sh: added new tests for stobj.



Modified: trunk/mono/mono/tests/verifier/ChangeLog
===================================================================
--- trunk/mono/mono/tests/verifier/ChangeLog    2008-01-11 13:04:31 UTC (rev 
92667)
+++ trunk/mono/mono/tests/verifier/ChangeLog    2008-01-11 14:30:05 UTC (rev 
92668)
@@ -1,3 +1,15 @@
+2008-01-11 Rodrigo Kumpera <[EMAIL PROTECTED]>
+
+       * unverifiable_ldfld_reference_type_by_ref.il: new test for ldfld.
+
+       * invalid_stojb_bad_token.il: test for bad ldobj token.
+
+       * invalid_stojb_token_out_of_bounds.il: same.
+
+       * make_stobj_test.sh: new test generator.
+
+       * make_test.sh: added new tests for stobj.
+
 2008-01-10 Rodrigo Kumpera <[EMAIL PROTECTED]>
 
        * valid_ldftn_method_spec_token.il: new test

Added: trunk/mono/mono/tests/verifier/invalid_stojb_bad_token.il
===================================================================
--- trunk/mono/mono/tests/verifier/invalid_stojb_bad_token.il   2008-01-11 
13:04:31 UTC (rev 92667)
+++ trunk/mono/mono/tests/verifier/invalid_stojb_bad_token.il   2008-01-11 
14:30:05 UTC (rev 92668)
@@ -0,0 +1,76 @@
+
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+
+.assembly 'ldobj_test'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+
+.module ldobj.exe
+
+
+.class Class extends [mscorlib]System.Object
+{
+    .field public int32 valid
+}
+
+.class public Template`1<T>
+       extends [mscorlib]System.Object
+{
+}
+
+.class sealed public StructTemplate`1<T>
+       extends [mscorlib]System.ValueType
+{
+       .field public !0 t
+}
+
+.class sealed public StructTemplate2`1<T>
+       extends [mscorlib]System.ValueType
+{
+       .field public !0 t
+}
+
+
+.class public auto ansi sealed MyStruct
+       extends [mscorlib]System.ValueType
+{
+       .field public int32 foo
+}
+
+
+.class public auto ansi sealed MyStruct2
+       extends [mscorlib]System.ValueType
+{
+       .field public int32 foo
+}
+
+.method public static int32 Main ()
+{
+       .entrypoint
+       .maxstack 8
+       .locals init (int32 V_0, int32& V_1 , int32 V_2)
+
+       ldloca.s 2
+       stloc.1
+
+       ldloc.1
+       ldloc.0
+
+       .emitbyte 0x81
+       .emitbyte 0x01
+       .emitbyte 0x00
+       .emitbyte 0x00
+       .emitbyte 0x06
+
+
+
+       ldc.i4.0
+       ret 
+}
+

Added: trunk/mono/mono/tests/verifier/invalid_stojb_token_out_of_bounds.il
===================================================================
--- trunk/mono/mono/tests/verifier/invalid_stojb_token_out_of_bounds.il 
2008-01-11 13:04:31 UTC (rev 92667)
+++ trunk/mono/mono/tests/verifier/invalid_stojb_token_out_of_bounds.il 
2008-01-11 14:30:05 UTC (rev 92668)
@@ -0,0 +1,76 @@
+
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+
+.assembly 'ldobj_test'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+
+.module ldobj.exe
+
+
+.class Class extends [mscorlib]System.Object
+{
+    .field public int32 valid
+}
+
+.class public Template`1<T>
+       extends [mscorlib]System.Object
+{
+}
+
+.class sealed public StructTemplate`1<T>
+       extends [mscorlib]System.ValueType
+{
+       .field public !0 t
+}
+
+.class sealed public StructTemplate2`1<T>
+       extends [mscorlib]System.ValueType
+{
+       .field public !0 t
+}
+
+
+.class public auto ansi sealed MyStruct
+       extends [mscorlib]System.ValueType
+{
+       .field public int32 foo
+}
+
+
+.class public auto ansi sealed MyStruct2
+       extends [mscorlib]System.ValueType
+{
+       .field public int32 foo
+}
+
+.method public static int32 Main ()
+{
+       .entrypoint
+       .maxstack 8
+       .locals init (int32 V_0, int32& V_1 , int32 V_2)
+
+       ldloca.s 2
+       stloc.1
+
+       ldloc.1
+       ldloc.0
+
+       .emitbyte 0x81
+       .emitbyte 0xAA
+       .emitbyte 0xAA
+       .emitbyte 0x00
+       .emitbyte 0x02
+
+
+
+       ldc.i4.0
+       ret 
+}
+

Added: trunk/mono/mono/tests/verifier/make_stobj_test.sh
===================================================================
--- trunk/mono/mono/tests/verifier/make_stobj_test.sh   2008-01-11 13:04:31 UTC 
(rev 92667)
+++ trunk/mono/mono/tests/verifier/make_stobj_test.sh   2008-01-11 14:30:05 UTC 
(rev 92668)
@@ -0,0 +1,95 @@
+#! /bin/sh
+
+TEST_NAME=$1
+TEST_VALIDITY=$2
+TEST_TYPE1=$3
+TEST_TYPE2=$4
+TEST_TYPE3=$5
+TEST_EXTRA_OPS=$6
+
+ZZ=`echo $TEST_TYPE2 | grep "\&"`
+T2_REF=$?
+
+LOCAL_INIT="";
+if [ "$T2_REF" == "0" ]; then
+       T2_NO_REF=`echo $TEST_TYPE2 | cut -d '\' -f 1`
+       INIT_LOCS=", $T2_NO_REF V_2"
+       INIT_IL="ldloca.s 2\n\tstloc.1"
+fi
+
+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
+echo $TEST_FILE
+sed -e "s/EXTRA_OPS/${TEST_EXTRA_OPS}/g" -e "s/TYPE1/${TEST_TYPE1}/g" -e 
"s/VALIDITY/${TEST_VALIDITY}/g" -e "s/TYPE2/${TEST_TYPE2}/g"  -e 
"s/TYPE3/${TEST_TYPE3}/g"  -e "s/INIT_LOCS/${INIT_LOCS}/g"  -e 
"s/INIT_IL/${INIT_IL}/g"> $TEST_FILE <<//EOF
+
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+
+.assembly 'stobj_test'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+
+.module ldobj.exe
+
+
+.class Class extends [mscorlib]System.Object
+{
+    .field public int32 valid
+}
+
+.class public Template\`1<T>
+       extends [mscorlib]System.Object
+{
+}
+
+.class sealed public StructTemplate\`1<T>
+       extends [mscorlib]System.ValueType
+{
+       .field public !0 t
+}
+
+.class sealed public StructTemplate2\`1<T>
+       extends [mscorlib]System.ValueType
+{
+       .field public !0 t
+}
+
+
+.class public auto ansi sealed MyStruct
+       extends [mscorlib]System.ValueType
+{
+       .field public int32 foo
+}
+
+
+.class public auto ansi sealed MyStruct2
+       extends [mscorlib]System.ValueType
+{
+       .field public int32 foo
+}
+
+.method public static int32 Main ()
+{
+       .entrypoint
+       .maxstack 8
+       .locals init (TYPE1 V_0, TYPE2 V_1 INIT_LOCS)
+
+       INIT_IL
+
+       ldloc.1
+       ldloc.0
+
+       EXTRA_OPS
+
+       stobj TYPE3 // VALIDITY
+
+
+       ldc.i4.0
+       ret 
+}
+
+//EOF


Property changes on: trunk/mono/mono/tests/verifier/make_stobj_test.sh
___________________________________________________________________
Name: svn:executable
   + *

Modified: trunk/mono/mono/tests/verifier/make_tests.sh
===================================================================
--- trunk/mono/mono/tests/verifier/make_tests.sh        2008-01-11 13:04:31 UTC 
(rev 92667)
+++ trunk/mono/mono/tests/verifier/make_tests.sh        2008-01-11 14:30:05 UTC 
(rev 92668)
@@ -3629,3 +3629,73 @@
 
 
 
+#stobj
+#bad src
+I=1
+for TYPE in "int32" "int64" "float32" "float64" Class MyStruct string object 
"int32[]" "int32[,]" "native int"
+do
+       ./make_stobj_test.sh stobj_simple_${I} valid "$TYPE" "$TYPE\&" "$TYPE" 
+       I=`expr $I + 1`
+done
+
+
+for TYPE in "int32*" "typedref" "method int32 *(int32)"
+do
+       ./make_stobj_test.sh stobj_simple_${I} unverifiable "$TYPE" "$TYPE\&" 
"$TYPE" 
+       I=`expr $I + 1`
+done
+
+for TYPE in "int32\&" "void"
+do
+       ./make_stobj_test.sh stobj_simple_${I} invalid "$TYPE" "$TYPE\&" 
"$TYPE" 
+       I=`expr $I + 1`
+done
+
+#src should not be ptr or byref
+I=1
+for TYPE in "int32\&" "int32*" "typedref"
+do
+       ./make_stobj_test.sh stobj_bad_src_${I} unverifiable "$TYPE" "int32\&" 
"int32" 
+       I=`expr $I + 1`
+done
+
+#dest type is not a managed pointer
+I=1
+for TYPE in "int32" "int64" "float32" "float64" Class MyStruct string object 
"int32[]" "int32[,]" "native int"
+do
+       ./make_stobj_test.sh stobj_dest_not_managed_pointer_${I} unverifiable 
"$TYPE" "$TYPE" "$TYPE" 
+       I=`expr $I + 1`
+done
+
+#src is compat to dest
+I=1
+for TYPE in "int8" "unsigned int8" "bool" "int16" "unsigned int16" "char" 
"int32" "unsigned int32" "native int" "native unsigned int"
+do 
+       ./make_stobj_test.sh stobj_src_compat_to_token_${I} valid "$TYPE" 
"int32\&" "int32" 
+       I=`expr $I + 1`
+done
+
+for TYPE in "int64" "unsigned int64" "float32" "float64" string object
+do 
+       ./make_stobj_test.sh stobj_src_compat_to_token_${I} unverifiable 
"$TYPE" "int32\&" "int32" 
+       I=`expr $I + 1`
+done
+
+for TYPE in string object Class
+do 
+       ./make_stobj_test.sh stobj_src_compat_to_token_${I} valid "$TYPE" 
"object\&" "object" 
+       I=`expr $I + 1`
+done
+
+./make_stobj_test.sh stobj_src_compat_to_token_boxed_vt valid "int32" 
"object\&" "object" "box int32"
+./make_stobj_test.sh stobj_src_compat_to_token_null_literal valid "object" 
"object\&" "object" "pop\n\tldnull"
+
+
+#token type subtype of dest_type
+for TYPE in string object Class "int32[]" "int32[,]"
+do 
+       ./make_stobj_test.sh stobj_token_subtype_of_dest_${I} valid "$TYPE" 
"object\&" "$TYPE" 
+       I=`expr $I + 1`
+done
+
+

Added: 
trunk/mono/mono/tests/verifier/unverifiable_ldfld_reference_type_by_ref.il
===================================================================
--- trunk/mono/mono/tests/verifier/unverifiable_ldfld_reference_type_by_ref.il  
2008-01-11 13:04:31 UTC (rev 92667)
+++ trunk/mono/mono/tests/verifier/unverifiable_ldfld_reference_type_by_ref.il  
2008-01-11 14:30:05 UTC (rev 92668)
@@ -0,0 +1,31 @@
+
+// valid CIL which breaks the ECMA-335 rules. 
+// this CIL should fail verification by a conforming CLI verifier.
+
+.assembly 'valid_bin_cgt_un_null_value_generated'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+
+.class private sequential ansi sealed beforefieldinit MyVT
+        extends [mscorlib]System.Object
+{
+       .field public [mscorlib]System.Decimal Value
+}
+
+
+.method public static int32 Main() cil managed
+{
+       .entrypoint
+       .maxstack 8
+       .locals init (MyVT V_0)
+
+       ldloca 0
+
+       ldfld valuetype [mscorlib]System.Decimal MyVT::Value
+       pop
+
+       ldc.i4.0
+       ret
+}

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to