Author: kumpera
Date: 2008-01-03 17:33:45 -0500 (Thu, 03 Jan 2008)
New Revision: 92212

Added:
   
trunk/mono/mono/tests/verifier/invalid_ldvirtftn_invalid_token_out_of_bounds.il
   trunk/mono/mono/tests/verifier/invalid_ldvirtftn_invalid_token_type.il
   trunk/mono/mono/tests/verifier/make_ldvirtftn_test.sh
Modified:
   trunk/mono/mono/tests/verifier/ChangeLog
   trunk/mono/mono/tests/verifier/make_ldftn_test.sh
   trunk/mono/mono/tests/verifier/make_tests.sh
Log:
2008-01-03 Rodrigo Kumpera <[EMAIL PROTECTED]>

        * invalid_ldvirtftn_invalid_token_type.il: added.
        
        * make_ldvirtftn_test.sh: added.

        * invalid_ldvirtftn_invalid_token_out_of_bounds.il: added.

        * make_ldftn_test.sh: changed to allow more tests.

        * make_tests.sh: added new tests for ldvirtftn and
        a buch more for ldftn.



Modified: trunk/mono/mono/tests/verifier/ChangeLog
===================================================================
--- trunk/mono/mono/tests/verifier/ChangeLog    2008-01-03 22:32:06 UTC (rev 
92211)
+++ trunk/mono/mono/tests/verifier/ChangeLog    2008-01-03 22:33:45 UTC (rev 
92212)
@@ -1,3 +1,16 @@
+2008-01-03 Rodrigo Kumpera <[EMAIL PROTECTED]>
+
+       * invalid_ldvirtftn_invalid_token_type.il: added.
+       
+       * make_ldvirtftn_test.sh: added.
+
+       * invalid_ldvirtftn_invalid_token_out_of_bounds.il: added.
+
+       * make_ldftn_test.sh: changed to allow more tests.
+
+       * make_tests.sh: added new tests for ldvirtftn and
+       a buch more for ldftn.
+
 2007-12-31 Rodrigo Kumpera <[EMAIL PROTECTED]>
 
        * invalid_ldftn_invalid_token_out_of_bounds.il: added.

Added: 
trunk/mono/mono/tests/verifier/invalid_ldvirtftn_invalid_token_out_of_bounds.il
===================================================================
--- 
trunk/mono/mono/tests/verifier/invalid_ldvirtftn_invalid_token_out_of_bounds.il 
    2008-01-03 22:32:06 UTC (rev 92211)
+++ 
trunk/mono/mono/tests/verifier/invalid_ldvirtftn_invalid_token_out_of_bounds.il 
    2008-01-03 22:33:45 UTC (rev 92212)
@@ -0,0 +1,48 @@
+/*
+This test using a token that overflows the methoddef table
+*/
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
+}
+.assembly 'bla'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+.module ld_type.exe
+
+.class public auto ansi beforefieldinit Driver
+        extends [mscorlib]System.Object
+{
+        .method public static void Method ()
+        {
+                ret
+        }
+
+        .method public virtual void VirtMethod ()
+        {
+                ret
+        }
+
+        .method public static int32 Main ()
+        {
+                .entrypoint
+                .maxstack 2
+                .locals init (int32 bla)
+               nop
+               newobj void object::.ctor()
+               .emitbyte 0xFE
+               .emitbyte 0x07
+               .emitbyte 0xAA
+               .emitbyte 0xAA
+               .emitbyte 0x00
+               .emitbyte 0x06
+               pop
+               ret
+
+        }
+}
+
+

Added: trunk/mono/mono/tests/verifier/invalid_ldvirtftn_invalid_token_type.il
===================================================================
--- trunk/mono/mono/tests/verifier/invalid_ldvirtftn_invalid_token_type.il      
2008-01-03 22:32:06 UTC (rev 92211)
+++ trunk/mono/mono/tests/verifier/invalid_ldvirtftn_invalid_token_type.il      
2008-01-03 22:33:45 UTC (rev 92212)
@@ -0,0 +1,48 @@
+/*
+This test using a token for the typedef table
+*/
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
+}
+.assembly 'bla'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+.module ld_type.exe
+
+.class public auto ansi beforefieldinit Driver
+        extends [mscorlib]System.Object
+{
+        .method public static void Method ()
+        {
+                ret
+        }
+
+        .method public virtual void VirtMethod ()
+        {
+                ret
+        }
+
+        .method public static int32 Main ()
+        {
+                .entrypoint
+                .maxstack 2
+                .locals init (int32 bla)
+               nop
+               newobj void object::.ctor()
+               .emitbyte 0xFE
+               .emitbyte 0x07
+               .emitbyte 0x02
+               .emitbyte 0x00
+               .emitbyte 0x00
+               .emitbyte 0x02
+               pop
+               ret
+
+        }
+}
+
+

Modified: trunk/mono/mono/tests/verifier/make_ldftn_test.sh
===================================================================
--- trunk/mono/mono/tests/verifier/make_ldftn_test.sh   2008-01-03 22:32:06 UTC 
(rev 92211)
+++ trunk/mono/mono/tests/verifier/make_ldftn_test.sh   2008-01-03 22:33:45 UTC 
(rev 92212)
@@ -25,17 +25,25 @@
 .class public Test
        extends [mscorlib]System.Object
 {
-       .method public void Test ()
+       .method public hidebysig  specialname  rtspecialname instance default 
void .ctor ()  cil managed 
        {
+               .maxstack 8
+               ldarg.0
+               call instance void object::.ctor()
+               ret 
+       }
+
+       .method public virtual void VirtMethod ()
+       {
                ret
        }
-}
 
+       .method public void Method ()
+       {
+               ret
+       }
 
-.class public Template<T>
-       extends [mscorlib]System.Object
-{
-       .method public void Test ()
+       .method public static void StaticMethod ()
        {
                ret
        }

Added: trunk/mono/mono/tests/verifier/make_ldvirtftn_test.sh
===================================================================
--- trunk/mono/mono/tests/verifier/make_ldvirtftn_test.sh       2008-01-03 
22:32:06 UTC (rev 92211)
+++ trunk/mono/mono/tests/verifier/make_ldvirtftn_test.sh       2008-01-03 
22:33:45 UTC (rev 92212)
@@ -0,0 +1,90 @@
+#! /bin/sh
+
+TEST_NAME=$1
+TEST_VALIDITY=$2
+TEST_LDFTN_OP=$3
+TEST_OP=$4
+
+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
+TEST_TYPE1=`echo $TEST_TYPE1 | sed -s 's/&/\\\&/'`
+sed -e "s/OPCODE/${TEST_OP}/g" -e "s/VALIDITY/${TEST_VALIDITY}/g" -e 
"s/LDFTN_OP/${TEST_LDFTN_OP}/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 'ldftn_test'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+.module ldftn_test.exe
+
+.class public Test
+       extends [mscorlib]System.Object
+{
+       .method public hidebysig  specialname  rtspecialname instance default 
void .ctor ()  cil managed 
+       {
+               .maxstack 8
+               ldarg.0
+               call instance void object::.ctor()
+               ret 
+       }
+
+       .method public virtual void VirtMethod ()
+       {
+               ret
+       }
+
+       .method public void Method ()
+       {
+               ret
+       }
+
+       .method public static void StaticMethod ()
+       {
+               ret
+       }
+}
+
+.class sealed MyValueType extends [mscorlib]System.ValueType
+{
+       .field private int32 v
+}
+
+.class public auto ansi beforefieldinit Driver
+        extends [mscorlib]System.Object
+{
+       .method public static void Method ()
+       {
+               ret
+       }
+
+       .method public virtual void VirtMethod ()
+       {
+               ret
+       }
+
+       .method public static void Foo (native int bla) {
+               ret
+       }
+
+       .method public static int32 Main ()
+       {
+               .entrypoint
+               .maxstack 2
+               .locals init (Test V0, MyValueType V1)
+               newobj void class Test::.ctor()
+               stloc.0
+
+               OPCODE // VALIDITY
+               LDFTN_OP
+               pop
+
+               ldc.i4.0
+               ret 
+       }
+}
+//EOF


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

Modified: trunk/mono/mono/tests/verifier/make_tests.sh
===================================================================
--- trunk/mono/mono/tests/verifier/make_tests.sh        2008-01-03 22:32:06 UTC 
(rev 92211)
+++ trunk/mono/mono/tests/verifier/make_tests.sh        2008-01-03 22:33:45 UTC 
(rev 92212)
@@ -3394,12 +3394,45 @@
 
 #ldftn
 ./make_ldftn_test.sh ldftn_static_method valid "ldftn void class 
Driver::Method()"
-./make_ldftn_test.sh ldftn_virtual_method valid "ldftn void class 
Driver::VirtMethod()"
+./make_ldftn_test.sh ldftn_virtual_method valid "ldftn instance void class 
Driver::VirtMethod()"
 ./make_ldftn_test.sh ldftn_corlib_method valid "ldftn instance string 
string::ToUpper()"
 
 #this is encoded as a memberref
 ./make_ldftn_test.sh ldftn_bad_function invalid "ldftn void class 
Test::NonPresent()"
 
-./make_ldftn_test.sh ldftn_overflow invalid "ldftn void class 
Driver::Method()" "ldc.i4.0\n\tldc.i4.0"
+./make_ldftn_test.sh ldftn_overflow invalid "ldftn instance void class 
Driver::Method()" "ldc.i4.0\n\tldc.i4.0"
 
+./make_ldftn_test.sh ldftn_ctor unverifiable "ldftn void class Test::.ctor()"
+./make_ldftn_test.sh ldftn_static_method valid "ldftn void class 
Test::StaticMethod()"
+./make_ldftn_test.sh ldftn_non_virtual_method valid "ldftn instance void class 
Test::Method()"
+./make_ldftn_test.sh ldftn_virtual_method valid "ldftn instance void class 
Test::VirtMethod()"
 
+
+#ldvirtftn
+#TODO test visibility for ldftn and ldvirtftn
+#TODO test that the pushed value is not a native int, but a propert function 
pointer
+
+./make_ldvirtftn_test.sh ldvirtftn_virt_method valid "ldvirtftn instance void 
class Test::VirtMethod()" "newobj void class Test::.ctor()"
+./make_ldvirtftn_test.sh ldvirtftn_virt_underflow invalid "ldvirtftn instance 
void class Test::VirtMethod()" "nop"
+./make_ldvirtftn_test.sh ldvirtftn_valid_obj_on_stack valid "ldvirtftn 
instance string object::ToString()" "newobj void object::.ctor()"
+
+I=1
+for TYPE in "ldc.i4.0" "ldc.i8 0" "ldc.r4 2" "ldc.i4.1\n\tconv.i" "ldloca 0" 
"ldloc.1"
+do
+       ./make_ldvirtftn_test.sh ldvirtftn_invalid_type_on_stack_${I} 
unverifiable "ldvirtftn instance string object::ToString()" "$TYPE"
+       I=`expr $I + 1`
+done
+
+./make_ldvirtftn_test.sh ldvirtftn_non_virtual_method valid "ldvirtftn 
instance void class Test::Method()" "newobj void class Test::.ctor()"
+
+./make_ldvirtftn_test.sh ldvirtftn_ctor unverifiable "ldvirtftn void class 
Test::.ctor()" "newobj void class Test::.ctor()"
+./make_ldvirtftn_test.sh ldvirtftn_static_method unverifiable "ldvirtftn void 
class Test::StaticMethod()" "newobj void class Test::.ctor()"
+./make_ldvirtftn_test.sh ldvirtftn_method_not_present invalid "ldvirtftn void 
class Test::NonExistant()" "newobj void Test::.ctor()"
+
+
+./make_ldvirtftn_test.sh ldvirtftn_method_stack_type_obj_compatible_1 valid 
"ldvirtftn instance string object::ToString()" "newobj void Test::.ctor()"
+./make_ldvirtftn_test.sh ldvirtftn_method_stack_type_obj_compatible_2 valid 
"ldvirtftn void class Test::VirtMethod()" "newobj void Test::.ctor()"
+./make_ldvirtftn_test.sh ldvirtftn_method_stack_type_obj_compatible_3 
unverifiable "ldvirtftn void class Test::VirtMethod()" "newobj void 
object::.ctor()"
+
+
+

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

Reply via email to