2009-05-27 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Wed, 27 May 2009 22:26:19 +0000 (22:26 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Wed, 27 May 2009 22:26:19 +0000 (22:26 -0000)
* cli-blob-tests.md: More signature tests.

* assembly-with-custommod.il: File with custom mods.

* Makefile: Add new dependency.

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

mono/tests/metadata-verifier/Changelog
mono/tests/metadata-verifier/Makefile
mono/tests/metadata-verifier/assembly-with-custommod.il [new file with mode: 0644]
mono/tests/metadata-verifier/cli-blob-tests.md

index 066303ea1738df973035395de36e6bd2043da38b..43517223427aba34cc871ba6216f0cd4fa34c885 100644 (file)
@@ -1,3 +1,11 @@
+2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * cli-blob-tests.md: More signature tests.
+
+       * assembly-with-custommod.il: File with custom mods.
+
+       * Makefile: Add new dependency.
+
 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * cli-blob-tests.md: More tests for method def signatures.
index c37e37750b86f01d122d674465b7d7321386933c..0021026987235033bd7156c09911e0f3393be4f3 100644 (file)
@@ -52,6 +52,7 @@ TEST_BINARIES = assembly-with-resource.exe \
        assembly-with-module.exe \
        assembly-with-resource.exe \
        assembly-with-generics.exe \
+       assembly-with-custommod.exe \
        simple-assembly.exe
 
 
diff --git a/mono/tests/metadata-verifier/assembly-with-custommod.il b/mono/tests/metadata-verifier/assembly-with-custommod.il
new file mode 100644 (file)
index 0000000..f60629c
--- /dev/null
@@ -0,0 +1,61 @@
+.assembly extern mscorlib
+{
+  .ver 2:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
+}
+.assembly 'simple_assembly'
+{
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+
+.module simple_assembly.exe
+
+.class private auto ansi beforefieldinit Program extends [mscorlib]System.Object
+{
+       .method public static 
+               void modreq ([mscorlib]System.Runtime.CompilerServices.IsVolatile)
+               ModRecOnRet () cil managed
+       {
+               ret
+       } 
+       
+       .method public static
+               int32 modopt ([mscorlib]System.Runtime.CompilerServices.IsVolatile)
+               ModOptOnRet () cil managed
+       {
+               .maxstack 8
+               ldc.i4.1
+               ret
+       } 
+       
+       .method public static
+               void modreq ([mscorlib]System.Runtime.CompilerServices.IsVolatile)
+                        modopt ([mscorlib]System.Runtime.CompilerServices.IsVolatile)
+                        modreq ([mscorlib]System.Runtime.CompilerServices.IsVolatile)
+                        modreq ([mscorlib]System.Runtime.CompilerServices.IsVolatile)
+               MultipleModsOnRet () cil managed
+       {
+               ret
+       }
+
+       .method public static typedref StrangeMethod () cil managed
+       {
+               .locals (typedref V_0)
+
+               ldloca 0
+               initobj typedref
+               ldloc.0
+               ret
+       }
+
+       .method public static void Main () cil managed 
+       {
+               .entrypoint
+               .maxstack 8
+               ret 
+       }
+
+}
+
+
index cd540d1b1dc93f41584f9a9cf5a424ac8ffb7e13..94b2fe58527f3069f8b9aa2282cc569397de0272 100644 (file)
@@ -6,26 +6,56 @@ method-def-sig {
        #0 -> default 5 -> vararg
 
        #signature size, zero is invalid
-       invalid offset blob.i (table-row (6 0) + 12) set-byte 0
+       invalid offset blob.i (table-row (6 0) + 10) set-byte 0
 
        #cconv
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x26
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x27
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x28
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x29
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x2A
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x2B
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x2C
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x2D
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x2E
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-byte 0x2F
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x26
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x27
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x28
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x29
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2A
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2B
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2C
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2D
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2E
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-byte 0x2F
 
        #upper nimble flags 0x80 is invalid     
-       invalid offset blob.i (table-row (6 0) + 12) + 1 set-bit 7
+       invalid offset blob.i (table-row (6 0) + 10) + 1 set-bit 7
 
        #sig is too small to decode param count
-       invalid offset blob.i (table-row (6 0) + 12) set-byte 1
+       invalid offset blob.i (table-row (6 0) + 10) set-byte 1
 
        #sig is too small to decode return type
-       invalid offset blob.i (table-row (6 0) + 12) set-byte 2
+       invalid offset blob.i (table-row (6 0) + 10) set-byte 2
+
+       #set ret type to an invalid value
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x17
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x1A
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x21 #mono doesn't support internal type
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x40 #modifier
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x41 #sentinel
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x45 #pinner
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x50 #type
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x51 #boxed
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x52 #reserved
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x53 #field
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x54 #property
+       invalid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x55 #enum
+
+}
+
+method-def-sig2 {
+       assembly assembly-with-custommod.exe
+
+       #method 0 has a modreq
+       #bytes: size cconv param_count mod_req compressed_token
+       invalid offset blob.i (table-row (6 0) + 10) + 4 set-byte 0x7C
+       invalid offset blob.i (table-row (6 0) + 10) + 4 set-byte 0x07
+
+       #switch modreq to modopt
+       valid offset blob.i (table-row (6 0) + 10) + 3 set-byte 0x20
+
+
 }
\ No newline at end of file