Merge pull request #5082 from kumpera/fix-ro-fs-file-delete
[mono.git] / mono / tests / pinvoke_ppcc.cs
index 09ccba020f91416661e97a435d335ba3ed9cb991..da90ba1c35f5cc620149a389272f22af4539ba22 100644 (file)
@@ -10,7 +10,7 @@
 //
 // Bill Seurer (seurer@linux.vnet.ibm.com)
 //
-// (C) {Copyright holder}
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
 //
 
 using System;
@@ -20,97 +20,97 @@ using System.Runtime.InteropServices;
 public class Test_sbyte {
 
        [DllImport ("libtest", EntryPoint="mono_return_sbyte1")]
-       public static extern sbyte mono_return_sbyte1 (sbyte1 s, int addend);
+       public static extern sbyte1 mono_return_sbyte1 (sbyte1 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte1 {
                public sbyte f1;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte2")]
-       public static extern sbyte mono_return_sbyte2 (sbyte2 s, int addend);
+       public static extern sbyte2 mono_return_sbyte2 (sbyte2 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte2 {
                public sbyte f1,f2;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte3")]
-       public static extern sbyte mono_return_sbyte3 (sbyte3 s, int addend);
+       public static extern sbyte3 mono_return_sbyte3 (sbyte3 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte3 {
                public sbyte f1,f2,f3;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte4")]
-       public static extern sbyte mono_return_sbyte4 (sbyte4 s, int addend);
+       public static extern sbyte4 mono_return_sbyte4 (sbyte4 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte4 {
                public sbyte f1,f2,f3,f4;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte5")]
-       public static extern sbyte mono_return_sbyte5 (sbyte5 s, int addend);
+       public static extern sbyte5 mono_return_sbyte5 (sbyte5 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte5 {
                public sbyte f1,f2,f3,f4,f5;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte6")]
-       public static extern sbyte mono_return_sbyte6 (sbyte6 s, int addend);
+       public static extern sbyte6 mono_return_sbyte6 (sbyte6 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte6 {
                public sbyte f1,f2,f3,f4,f5,f6;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte7")]
-       public static extern sbyte mono_return_sbyte7 (sbyte7 s, int addend);
+       public static extern sbyte7 mono_return_sbyte7 (sbyte7 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte7 {
                public sbyte f1,f2,f3,f4,f5,f6,f7;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte8")]
-       public static extern sbyte mono_return_sbyte8 (sbyte8 s, int addend);
+       public static extern sbyte8 mono_return_sbyte8 (sbyte8 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte8 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte9")]
-       public static extern sbyte mono_return_sbyte9 (sbyte9 s, int addend);
+       public static extern sbyte9 mono_return_sbyte9 (sbyte9 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte9 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte10")]
-       public static extern sbyte mono_return_sbyte10 (sbyte10 s, int addend);
+       public static extern sbyte10 mono_return_sbyte10 (sbyte10 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte10 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9,f10;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte11")]
-       public static extern sbyte mono_return_sbyte11 (sbyte11 s, int addend);
+       public static extern sbyte11 mono_return_sbyte11 (sbyte11 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte11 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte12")]
-       public static extern sbyte mono_return_sbyte12 (sbyte12 s, int addend);
+       public static extern sbyte12 mono_return_sbyte12 (sbyte12 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte12 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte13")]
-       public static extern sbyte mono_return_sbyte13 (sbyte13 s, int addend);
+       public static extern sbyte13 mono_return_sbyte13 (sbyte13 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte13 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte14")]
-       public static extern sbyte mono_return_sbyte14 (sbyte14 s, int addend);
+       public static extern sbyte14 mono_return_sbyte14 (sbyte14 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte14 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte15")]
-       public static extern sbyte mono_return_sbyte15 (sbyte15 s, int addend);
+       public static extern sbyte15 mono_return_sbyte15 (sbyte15 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte15 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15;
        }
        [DllImport ("libtest", EntryPoint="mono_return_sbyte16")]
-       public static extern sbyte mono_return_sbyte16 (sbyte16 s, int addend);
+       public static extern sbyte16 mono_return_sbyte16 (sbyte16 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte16 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16;
@@ -118,7 +118,7 @@ public class Test_sbyte {
        // This structure is 1 element too large to use the special return
        //  rules.
        [DllImport ("libtest", EntryPoint="mono_return_sbyte17")]
-       public static extern sbyte mono_return_sbyte17 (sbyte17 s, int addend);
+       public static extern sbyte17 mono_return_sbyte17 (sbyte17 s, int addend);
        [StructLayout(LayoutKind.Sequential)]
        public struct sbyte17 {
                public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17;
@@ -145,41 +145,66 @@ public class Test_sbyte {
 
                sbyte1 s1;
                s1.f1 = 1;
-               sbyte retval1 = mono_return_sbyte1(s1, 9);
-               if (retval1 != 2*9) {
-                       Console.WriteLine("   sbyte1 retval1: got {0} but expected {1}", retval1, 2*9);
+               s1 = mono_return_sbyte1(s1, 9);
+
+               if (s1.f1 != 1+9) {
+                       Console.WriteLine("   sbyte1 s1.f1: got {0} but expected {1}", s1.f1, 1+9);
                        return 1;
                }
 
                sbyte2 s2;
                s2.f1 = 1;
                s2.f2 = 2;
-               sbyte retval2 = mono_return_sbyte2(s2, 9);
-               if (retval2 != 2*9) {
-                       Console.WriteLine("   sbyte2 retval2: got {0} but expected {1}", retval2, 2*9);
+               s2 = mono_return_sbyte2(s2, 9);
+               if (s2.f1 != 1+9) {
+                       Console.WriteLine("   sbyte2 s2.f1: got {0} but expected {1}", s2.f1, 1+9);
                        return 1;
                }
+               if (s2.f2 != 2+9) {
+                       Console.WriteLine("   sbyte2 s2.f2: got {0} but expected {1}", s2.f2, 2+9);
+                       return 2;
+               }
 
                sbyte3 s3;
                s3.f1 = 1;
                s3.f2 = 2;
                s3.f3 = 3;
-               sbyte retval3 = mono_return_sbyte3(s3, 9);
-               if (retval3 != 2*9) {
-                       Console.WriteLine("   sbyte3 retval3: got {0} but expected {1}", retval3, 2*9);
+               s3 = mono_return_sbyte3(s3, 9);
+               if (s3.f1 != 1+9) {
+                       Console.WriteLine("   sbyte3 s3.f1: got {0} but expected {1}", s3.f1, 1+9);
                        return 1;
                }
+               if (s3.f2 != 2+9) {
+                       Console.WriteLine("   sbyte3 s3.f2: got {0} but expected {1}", s3.f2, 2+9);
+                       return 2;
+               }
+               if (s3.f3 != 3+9) {
+                       Console.WriteLine("   sbyte3 s3.f3: got {0} but expected {1}", s3.f3, 3+9);
+                       return 3;
+               }
 
                sbyte4 s4;
                s4.f1 = 1;
                s4.f2 = 2;
                s4.f3 = 3;
                s4.f4 = 4;
-               sbyte retval4 = mono_return_sbyte4(s4, 9);
-               if (retval4 != 2*9) {
-                       Console.WriteLine("   sbyte4 retval4: got {0} but expected {1}", retval4, 2*9);
+               s4 = mono_return_sbyte4(s4, 9);
+               if (s4.f1 != 1+9) {
+                       Console.WriteLine("   sbyte4 s4.f1: got {0} but expected {1}", s4.f1, 1+9);
                        return 1;
                }
+               if (s4.f2 != 2+9) {
+                       Console.WriteLine("   sbyte4 s4.f2: got {0} but expected {1}", s4.f2, 2+9);
+                       return 2;
+               }
+               if (s4.f3 != 3+9) {
+                       Console.WriteLine("   sbyte4 s4.f3: got {0} but expected {1}", s4.f3, 3+9);
+                       return 3;
+               }
+               if (s4.f4 != 4+9) {
+                       Console.WriteLine("   sbyte4 s4.f4: got {0} but expected {1}", s4.f4, 4+9);
+                       return 4;
+               }
 
                sbyte5 s5;
                s5.f1 = 1;
@@ -187,11 +212,27 @@ public class Test_sbyte {
                s5.f3 = 3;
                s5.f4 = 4;
                s5.f5 = 5;
-               sbyte retval5 = mono_return_sbyte5(s5, 9);
-               if (retval5 != 2*9) {
-                       Console.WriteLine("   sbyte5 retval5: got {0} but expected {1}", retval5, 2*9);
+               s5 = mono_return_sbyte5(s5, 9);
+               if (s5.f1 != 1+9) {
+                       Console.WriteLine("   sbyte5 s5.f1: got {0} but expected {1}", s5.f1, 1+9);
                        return 1;
                }
+               if (s5.f2 != 2+9) {
+                       Console.WriteLine("   sbyte5 s5.f2: got {0} but expected {1}", s5.f2, 2+9);
+                       return 2;
+               }
+               if (s5.f3 != 3+9) {
+                       Console.WriteLine("   sbyte5 s5.f3: got {0} but expected {1}", s5.f3, 3+9);
+                       return 3;
+               }
+               if (s5.f4 != 4+9) {
+                       Console.WriteLine("   sbyte5 s5.f4: got {0} but expected {1}", s5.f4, 4+9);
+                       return 4;
+               }
+               if (s5.f5 != 5+9) {
+                       Console.WriteLine("   sbyte5 s5.f5: got {0} but expected {1}", s5.f5, 5+9);
+                       return 5;
+               }
 
                sbyte6 s6;
                s6.f1 = 1;
@@ -200,11 +241,31 @@ public class Test_sbyte {
                s6.f4 = 4;
                s6.f5 = 5;
                s6.f6 = 6;
-               sbyte retval6 = mono_return_sbyte6(s6, 9);
-               if (retval6 != 2*9) {
-                       Console.WriteLine("   sbyte6 retval6: got {0} but expected {1}", retval6, 2*9);
+               s6 = mono_return_sbyte6(s6, 9);
+               if (s6.f1 != 1+9) {
+                       Console.WriteLine("   sbyte6 s6.f1: got {0} but expected {1}", s6.f1, 1+9);
                        return 1;
                }
+               if (s6.f2 != 2+9) {
+                       Console.WriteLine("   sbyte6 s6.f2: got {0} but expected {1}", s6.f2, 2+9);
+                       return 2;
+               }
+               if (s6.f3 != 3+9) {
+                       Console.WriteLine("   sbyte6 s6.f3: got {0} but expected {1}", s6.f3, 3+9);
+                       return 3;
+               }
+               if (s6.f4 != 4+9) {
+                       Console.WriteLine("   sbyte6 s6.f4: got {0} but expected {1}", s6.f4, 4+9);
+                       return 4;
+               }
+               if (s6.f5 != 5+9) {
+                       Console.WriteLine("   sbyte6 s6.f5: got {0} but expected {1}", s6.f5, 5+9);
+                       return 5;
+               }
+               if (s6.f6 != 6+9) {
+                       Console.WriteLine("   sbyte6 s6.f6: got {0} but expected {1}", s6.f6, 6+9);
+                       return 6;
+               }
 
                sbyte7 s7;
                s7.f1 = 1;
@@ -214,11 +275,35 @@ public class Test_sbyte {
                s7.f5 = 5;
                s7.f6 = 6;
                s7.f7 = 7;
-               sbyte retval7 = mono_return_sbyte7(s7, 9);
-               if (retval7 != 2*9) {
-                       Console.WriteLine("   sbyte7 retval7: got {0} but expected {1}", retval7, 2*9);
+               s7 = mono_return_sbyte7(s7, 9);
+               if (s7.f1 != 1+9) {
+                       Console.WriteLine("   sbyte7 s7.f1: got {0} but expected {1}", s7.f1, 1+9);
                        return 1;
                }
+               if (s7.f2 != 2+9) {
+                       Console.WriteLine("   sbyte7 s7.f2: got {0} but expected {1}", s7.f2, 2+9);
+                       return 2;
+               }
+               if (s7.f3 != 3+9) {
+                       Console.WriteLine("   sbyte7 s7.f3: got {0} but expected {1}", s7.f3, 3+9);
+                       return 3;
+               }
+               if (s7.f4 != 4+9) {
+                       Console.WriteLine("   sbyte7 s7.f4: got {0} but expected {1}", s7.f4, 4+9);
+                       return 4;
+               }
+               if (s7.f5 != 5+9) {
+                       Console.WriteLine("   sbyte7 s7.f5: got {0} but expected {1}", s7.f5, 5+9);
+                       return 5;
+               }
+               if (s7.f6 != 6+9) {
+                       Console.WriteLine("   sbyte7 s7.f6: got {0} but expected {1}", s7.f6, 6+9);
+                       return 6;
+               }
+               if (s7.f7 != 7+9) {
+                       Console.WriteLine("   sbyte7 s7.f7: got {0} but expected {1}", s7.f7, 7+9);
+                       return 7;
+               }
 
                sbyte8 s8;
                s8.f1 = 1;
@@ -229,11 +314,39 @@ public class Test_sbyte {
                s8.f6 = 6;
                s8.f7 = 7;
                s8.f8 = 8;
-               sbyte retval8 = mono_return_sbyte8(s8, 9);
-               if (retval8 != 2*9) {
-                       Console.WriteLine("   sbyte8 retval8: got {0} but expected {1}", retval8, 2*9);
+               s8 = mono_return_sbyte8(s8, 9);
+               if (s8.f1 != 1+9) {
+                       Console.WriteLine("   sbyte8 s8.f1: got {0} but expected {1}", s8.f1, 1+9);
                        return 1;
                }
+               if (s8.f2 != 2+9) {
+                       Console.WriteLine("   sbyte8 s8.f2: got {0} but expected {1}", s8.f2, 2+9);
+                       return 2;
+               }
+               if (s8.f3 != 3+9) {
+                       Console.WriteLine("   sbyte8 s8.f3: got {0} but expected {1}", s8.f3, 3+9);
+                       return 3;
+               }
+               if (s8.f4 != 4+9) {
+                       Console.WriteLine("   sbyte8 s8.f4: got {0} but expected {1}", s8.f4, 4+9);
+                       return 4;
+               }
+               if (s8.f5 != 5+9) {
+                       Console.WriteLine("   sbyte8 s8.f5: got {0} but expected {1}", s8.f5, 5+9);
+                       return 5;
+               }
+               if (s8.f6 != 6+9) {
+                       Console.WriteLine("   sbyte8 s8.f6: got {0} but expected {1}", s8.f6, 6+9);
+                       return 6;
+               }
+               if (s8.f7 != 7+9) {
+                       Console.WriteLine("   sbyte8 s8.f7: got {0} but expected {1}", s8.f7, 7+9);
+                       return 7;
+               }
+               if (s8.f8 != 8+9) {
+                       Console.WriteLine("   sbyte8 s8.f8: got {0} but expected {1}", s8.f8, 8+9);
+                       return 8;
+               }
 
                sbyte9 s9;
                s9.f1 = 1;
@@ -245,11 +358,43 @@ public class Test_sbyte {
                s9.f7 = 7;
                s9.f8 = 8;
                s9.f9 = 9;
-               sbyte retval9 = mono_return_sbyte9(s9, 9);
-               if (retval9 != 2*9) {
-                       Console.WriteLine("   sbyte9 retval9: got {0} but expected {1}", retval9, 2*9);
+               s9 = mono_return_sbyte9(s9, 9);
+               if (s9.f1 != 1+9) {
+                       Console.WriteLine("   sbyte9 s9.f1: got {0} but expected {1}", s9.f1, 1+9);
                        return 1;
                }
+               if (s9.f2 != 2+9) {
+                       Console.WriteLine("   sbyte9 s9.f2: got {0} but expected {1}", s9.f2, 2+9);
+                       return 2;
+               }
+               if (s9.f3 != 3+9) {
+                       Console.WriteLine("   sbyte9 s9.f3: got {0} but expected {1}", s9.f3, 3+9);
+                       return 3;
+               }
+               if (s9.f4 != 4+9) {
+                       Console.WriteLine("   sbyte9 s9.f4: got {0} but expected {1}", s9.f4, 4+9);
+                       return 4;
+               }
+               if (s9.f5 != 5+9) {
+                       Console.WriteLine("   sbyte9 s9.f5: got {0} but expected {1}", s9.f5, 5+9);
+                       return 5;
+               }
+               if (s9.f6 != 6+9) {
+                       Console.WriteLine("   sbyte9 s9.f6: got {0} but expected {1}", s9.f6, 6+9);
+                       return 6;
+               }
+               if (s9.f7 != 7+9) {
+                       Console.WriteLine("   sbyte9 s9.f7: got {0} but expected {1}", s9.f7, 7+9);
+                       return 7;
+               }
+               if (s9.f8 != 8+9) {
+                       Console.WriteLine("   sbyte9 s9.f8: got {0} but expected {1}", s9.f8, 8+9);
+                       return 8;
+               }
+               if (s9.f9 != 9+9) {
+                       Console.WriteLine("   sbyte9 s9.f9: got {0} but expected {1}", s9.f9, 9+9);
+                       return 9;
+               }
 
                sbyte10 s10;
                s10.f1 = 1;
@@ -262,11 +407,47 @@ public class Test_sbyte {
                s10.f8 = 8;
                s10.f9 = 9;
                s10.f10 = 10;
-               sbyte retval10 = mono_return_sbyte10(s10, 9);
-               if (retval10 != 2*9) {
-                       Console.WriteLine("   sbyte10 retval10: got {0} but expected {1}", retval10, 2*9);
+               s10 = mono_return_sbyte10(s10, 9);
+               if (s10.f1 != 1+9) {
+                       Console.WriteLine("   sbyte10 s10.f1: got {0} but expected {1}", s10.f1, 1+9);
                        return 1;
                }
+               if (s10.f2 != 2+9) {
+                       Console.WriteLine("   sbyte10 s10.f2: got {0} but expected {1}", s10.f2, 2+9);
+                       return 2;
+               }
+               if (s10.f3 != 3+9) {
+                       Console.WriteLine("   sbyte10 s10.f3: got {0} but expected {1}", s10.f3, 3+9);
+                       return 3;
+               }
+               if (s10.f4 != 4+9) {
+                       Console.WriteLine("   sbyte10 s10.f4: got {0} but expected {1}", s10.f4, 4+9);
+                       return 4;
+               }
+               if (s10.f5 != 5+9) {
+                       Console.WriteLine("   sbyte10 s10.f5: got {0} but expected {1}", s10.f5, 5+9);
+                       return 5;
+               }
+               if (s10.f6 != 6+9) {
+                       Console.WriteLine("   sbyte10 s10.f6: got {0} but expected {1}", s10.f6, 6+9);
+                       return 6;
+               }
+               if (s10.f7 != 7+9) {
+                       Console.WriteLine("   sbyte10 s10.f7: got {0} but expected {1}", s10.f7, 7+9);
+                       return 7;
+               }
+               if (s10.f8 != 8+9) {
+                       Console.WriteLine("   sbyte10 s10.f8: got {0} but expected {1}", s10.f8, 8+9);
+                       return 8;
+               }
+               if (s10.f9 != 9+9) {
+                       Console.WriteLine("   sbyte10 s10.f9: got {0} but expected {1}", s10.f9, 9+9);
+                       return 9;
+               }
+               if (s10.f10 != 10+9) {
+                       Console.WriteLine("   sbyte10 s10.f10: got {0} but expected {1}", s10.f10, 10+9);
+                       return 10;
+               }
 
                sbyte11 s11;
                s11.f1 = 1;
@@ -280,11 +461,51 @@ public class Test_sbyte {
                s11.f9 = 9;
                s11.f10 = 10;
                s11.f11 = 11;
-               sbyte retval11 = mono_return_sbyte11(s11, 9);
-               if (retval11 != 2*9) {
-                       Console.WriteLine("   sbyte11 retval11: got {0} but expected {1}", retval11, 2*9);
+               s11 = mono_return_sbyte11(s11, 9);
+               if (s11.f1 != 1+9) {
+                       Console.WriteLine("   sbyte11 s11.f1: got {0} but expected {1}", s11.f1, 1+9);
                        return 1;
                }
+               if (s11.f2 != 2+9) {
+                       Console.WriteLine("   sbyte11 s11.f2: got {0} but expected {1}", s11.f2, 2+9);
+                       return 2;
+               }
+               if (s11.f3 != 3+9) {
+                       Console.WriteLine("   sbyte11 s11.f3: got {0} but expected {1}", s11.f3, 3+9);
+                       return 3;
+               }
+               if (s11.f4 != 4+9) {
+                       Console.WriteLine("   sbyte11 s11.f4: got {0} but expected {1}", s11.f4, 4+9);
+                       return 4;
+               }
+               if (s11.f5 != 5+9) {
+                       Console.WriteLine("   sbyte11 s11.f5: got {0} but expected {1}", s11.f5, 5+9);
+                       return 5;
+               }
+               if (s11.f6 != 6+9) {
+                       Console.WriteLine("   sbyte11 s11.f6: got {0} but expected {1}", s11.f6, 6+9);
+                       return 6;
+               }
+               if (s11.f7 != 7+9) {
+                       Console.WriteLine("   sbyte11 s11.f7: got {0} but expected {1}", s11.f7, 7+9);
+                       return 7;
+               }
+               if (s11.f8 != 8+9) {
+                       Console.WriteLine("   sbyte11 s11.f8: got {0} but expected {1}", s11.f8, 8+9);
+                       return 8;
+               }
+               if (s11.f9 != 9+9) {
+                       Console.WriteLine("   sbyte11 s11.f9: got {0} but expected {1}", s11.f9, 9+9);
+                       return 9;
+               }
+               if (s11.f10 != 10+9) {
+                       Console.WriteLine("   sbyte11 s11.f10: got {0} but expected {1}", s11.f10, 10+9);
+                       return 10;
+               }
+               if (s11.f11 != 11+9) {
+                       Console.WriteLine("   sbyte11 s11.f11: got {0} but expected {1}", s11.f11, 11+9);
+                       return 11;
+               }
 
                sbyte12 s12;
                s12.f1 = 1;
@@ -299,11 +520,55 @@ public class Test_sbyte {
                s12.f10 = 10;
                s12.f11 = 11;
                s12.f12 = 12;
-               sbyte retval12 = mono_return_sbyte12(s12, 9);
-               if (retval12 != 2*9) {
-                       Console.WriteLine("   sbyte12 retval12: got {0} but expected {1}", retval12, 2*9);
+               s12 = mono_return_sbyte12(s12, 9);
+               if (s12.f1 != 1+9) {
+                       Console.WriteLine("   sbyte12 s12.f1: got {0} but expected {1}", s12.f1, 1+9);
                        return 1;
                }
+               if (s12.f2 != 2+9) {
+                       Console.WriteLine("   sbyte12 s12.f2: got {0} but expected {1}", s12.f2, 2+9);
+                       return 2;
+               }
+               if (s12.f3 != 3+9) {
+                       Console.WriteLine("   sbyte12 s12.f3: got {0} but expected {1}", s12.f3, 3+9);
+                       return 3;
+               }
+               if (s12.f4 != 4+9) {
+                       Console.WriteLine("   sbyte12 s12.f4: got {0} but expected {1}", s12.f4, 4+9);
+                       return 4;
+               }
+               if (s12.f5 != 5+9) {
+                       Console.WriteLine("   sbyte12 s12.f5: got {0} but expected {1}", s12.f5, 5+9);
+                       return 5;
+               }
+               if (s12.f6 != 6+9) {
+                       Console.WriteLine("   sbyte12 s12.f6: got {0} but expected {1}", s12.f6, 6+9);
+                       return 6;
+               }
+               if (s12.f7 != 7+9) {
+                       Console.WriteLine("   sbyte12 s12.f7: got {0} but expected {1}", s12.f7, 7+9);
+                       return 7;
+               }
+               if (s12.f8 != 8+9) {
+                       Console.WriteLine("   sbyte12 s12.f8: got {0} but expected {1}", s12.f8, 8+9);
+                       return 8;
+               }
+               if (s12.f9 != 9+9) {
+                       Console.WriteLine("   sbyte12 s12.f9: got {0} but expected {1}", s12.f9, 9+9);
+                       return 9;
+               }
+               if (s12.f10 != 10+9) {
+                       Console.WriteLine("   sbyte12 s12.f10: got {0} but expected {1}", s12.f10, 10+9);
+                       return 10;
+               }
+               if (s12.f11 != 11+9) {
+                       Console.WriteLine("   sbyte12 s12.f11: got {0} but expected {1}", s12.f11, 11+9);
+                       return 11;
+               }
+               if (s12.f12 != 12+9) {
+                       Console.WriteLine("   sbyte12 s12.f12: got {0} but expected {1}", s12.f12, 12+9);
+                       return 12;
+               }
 
                sbyte13 s13;
                s13.f1 = 1;
@@ -319,11 +584,59 @@ public class Test_sbyte {
                s13.f11 = 11;
                s13.f12 = 12;
                s13.f13 = 13;
-               sbyte retval13 = mono_return_sbyte13(s13, 9);
-               if (retval13 != 2*9) {
-                       Console.WriteLine("   sbyte13 retval13: got {0} but expected {1}", retval13, 2*9);
+               s13 = mono_return_sbyte13(s13, 9);
+               if (s13.f1 != 1+9) {
+                       Console.WriteLine("   sbyte13 s13.f1: got {0} but expected {1}", s13.f1, 1+9);
                        return 1;
                }
+               if (s13.f2 != 2+9) {
+                       Console.WriteLine("   sbyte13 s13.f2: got {0} but expected {1}", s13.f2, 2+9);
+                       return 2;
+               }
+               if (s13.f3 != 3+9) {
+                       Console.WriteLine("   sbyte13 s13.f3: got {0} but expected {1}", s13.f3, 3+9);
+                       return 3;
+               }
+               if (s13.f4 != 4+9) {
+                       Console.WriteLine("   sbyte13 s13.f4: got {0} but expected {1}", s13.f4, 4+9);
+                       return 4;
+               }
+               if (s13.f5 != 5+9) {
+                       Console.WriteLine("   sbyte13 s13.f5: got {0} but expected {1}", s13.f5, 5+9);
+                       return 5;
+               }
+               if (s13.f6 != 6+9) {
+                       Console.WriteLine("   sbyte13 s13.f6: got {0} but expected {1}", s13.f6, 6+9);
+                       return 6;
+               }
+               if (s13.f7 != 7+9) {
+                       Console.WriteLine("   sbyte13 s13.f7: got {0} but expected {1}", s13.f7, 7+9);
+                       return 7;
+               }
+               if (s13.f8 != 8+9) {
+                       Console.WriteLine("   sbyte13 s13.f8: got {0} but expected {1}", s13.f8, 8+9);
+                       return 8;
+               }
+               if (s13.f9 != 9+9) {
+                       Console.WriteLine("   sbyte13 s13.f9: got {0} but expected {1}", s13.f9, 9+9);
+                       return 9;
+               }
+               if (s13.f10 != 10+9) {
+                       Console.WriteLine("   sbyte13 s13.f10: got {0} but expected {1}", s13.f10, 10+9);
+                       return 10;
+               }
+               if (s13.f11 != 11+9) {
+                       Console.WriteLine("   sbyte13 s13.f11: got {0} but expected {1}", s13.f11, 11+9);
+                       return 11;
+               }
+               if (s13.f12 != 12+9) {
+                       Console.WriteLine("   sbyte13 s13.f12: got {0} but expected {1}", s13.f12, 12+9);
+                       return 12;
+               }
+               if (s13.f13 != 13+9) {
+                       Console.WriteLine("   sbyte13 s13.f13: got {0} but expected {1}", s13.f13, 13+9);
+                       return 13;
+               }
 
                sbyte14 s14;
                s14.f1 = 1;
@@ -340,11 +653,63 @@ public class Test_sbyte {
                s14.f12 = 12;
                s14.f13 = 13;
                s14.f14 = 14;
-               sbyte retval14 = mono_return_sbyte14(s14, 9);
-               if (retval14 != 2*9) {
-                       Console.WriteLine("   sbyte14 retval14: got {0} but expected {1}", retval14, 2*9);
+               s14 = mono_return_sbyte14(s14, 9);
+               if (s14.f1 != 1+9) {
+                       Console.WriteLine("   sbyte14 s14.f1: got {0} but expected {1}", s14.f1, 1+9);
                        return 1;
                }
+               if (s14.f2 != 2+9) {
+                       Console.WriteLine("   sbyte14 s14.f2: got {0} but expected {1}", s14.f2, 2+9);
+                       return 2;
+               }
+               if (s14.f3 != 3+9) {
+                       Console.WriteLine("   sbyte14 s14.f3: got {0} but expected {1}", s14.f3, 3+9);
+                       return 3;
+               }
+               if (s14.f4 != 4+9) {
+                       Console.WriteLine("   sbyte14 s14.f4: got {0} but expected {1}", s14.f4, 4+9);
+                       return 4;
+               }
+               if (s14.f5 != 5+9) {
+                       Console.WriteLine("   sbyte14 s14.f5: got {0} but expected {1}", s14.f5, 5+9);
+                       return 5;
+               }
+               if (s14.f6 != 6+9) {
+                       Console.WriteLine("   sbyte14 s14.f6: got {0} but expected {1}", s14.f6, 6+9);
+                       return 6;
+               }
+               if (s14.f7 != 7+9) {
+                       Console.WriteLine("   sbyte14 s14.f7: got {0} but expected {1}", s14.f7, 7+9);
+                       return 7;
+               }
+               if (s14.f8 != 8+9) {
+                       Console.WriteLine("   sbyte14 s14.f8: got {0} but expected {1}", s14.f8, 8+9);
+                       return 8;
+               }
+               if (s14.f9 != 9+9) {
+                       Console.WriteLine("   sbyte14 s14.f9: got {0} but expected {1}", s14.f9, 9+9);
+                       return 9;
+               }
+               if (s14.f10 != 10+9) {
+                       Console.WriteLine("   sbyte14 s14.f10: got {0} but expected {1}", s14.f10, 10+9);
+                       return 10;
+               }
+               if (s14.f11 != 11+9) {
+                       Console.WriteLine("   sbyte14 s14.f11: got {0} but expected {1}", s14.f11, 11+9);
+                       return 11;
+               }
+               if (s14.f12 != 12+9) {
+                       Console.WriteLine("   sbyte14 s14.f12: got {0} but expected {1}", s14.f12, 12+9);
+                       return 12;
+               }
+               if (s14.f13 != 13+9) {
+                       Console.WriteLine("   sbyte14 s14.f13: got {0} but expected {1}", s14.f13, 13+9);
+                       return 13;
+               }
+               if (s14.f14 != 14+9) {
+                       Console.WriteLine("   sbyte14 s14.f14: got {0} but expected {1}", s14.f14, 14+9);
+                       return 14;
+               }
 
                sbyte15 s15;
                s15.f1 = 1;
@@ -362,11 +727,67 @@ public class Test_sbyte {
                s15.f13 = 13;
                s15.f14 = 14;
                s15.f15 = 15;
-               sbyte retval15 = mono_return_sbyte15(s15, 9);
-               if (retval15 != 2*9) {
-                       Console.WriteLine("   sbyte15 retval15: got {0} but expected {1}", retval15, 2*9);
+               s15 = mono_return_sbyte15(s15, 9);
+               if (s15.f1 != 1+9) {
+                       Console.WriteLine("   sbyte15 s15.f1: got {0} but expected {1}", s15.f1, 1+9);
                        return 1;
                }
+               if (s15.f2 != 2+9) {
+                       Console.WriteLine("   sbyte15 s15.f2: got {0} but expected {1}", s15.f2, 2+9);
+                       return 2;
+               }
+               if (s15.f3 != 3+9) {
+                       Console.WriteLine("   sbyte15 s15.f3: got {0} but expected {1}", s15.f3, 3+9);
+                       return 3;
+               }
+               if (s15.f4 != 4+9) {
+                       Console.WriteLine("   sbyte15 s15.f4: got {0} but expected {1}", s15.f4, 4+9);
+                       return 4;
+               }
+               if (s15.f5 != 5+9) {
+                       Console.WriteLine("   sbyte15 s15.f5: got {0} but expected {1}", s15.f5, 5+9);
+                       return 5;
+               }
+               if (s15.f6 != 6+9) {
+                       Console.WriteLine("   sbyte15 s15.f6: got {0} but expected {1}", s15.f6, 6+9);
+                       return 6;
+               }
+               if (s15.f7 != 7+9) {
+                       Console.WriteLine("   sbyte15 s15.f7: got {0} but expected {1}", s15.f7, 7+9);
+                       return 7;
+               }
+               if (s15.f8 != 8+9) {
+                       Console.WriteLine("   sbyte15 s15.f8: got {0} but expected {1}", s15.f8, 8+9);
+                       return 8;
+               }
+               if (s15.f9 != 9+9) {
+                       Console.WriteLine("   sbyte15 s15.f9: got {0} but expected {1}", s15.f9, 9+9);
+                       return 9;
+               }
+               if (s15.f10 != 10+9) {
+                       Console.WriteLine("   sbyte15 s15.f10: got {0} but expected {1}", s15.f10, 10+9);
+                       return 10;
+               }
+               if (s15.f11 != 11+9) {
+                       Console.WriteLine("   sbyte15 s15.f11: got {0} but expected {1}", s15.f11, 11+9);
+                       return 11;
+               }
+               if (s15.f12 != 12+9) {
+                       Console.WriteLine("   sbyte15 s15.f12: got {0} but expected {1}", s15.f12, 12+9);
+                       return 12;
+               }
+               if (s15.f13 != 13+9) {
+                       Console.WriteLine("   sbyte15 s15.f13: got {0} but expected {1}", s15.f13, 13+9);
+                       return 13;
+               }
+               if (s15.f14 != 14+9) {
+                       Console.WriteLine("   sbyte15 s15.f14: got {0} but expected {1}", s15.f14, 14+9);
+                       return 14;
+               }
+               if (s15.f15 != 15+9) {
+                       Console.WriteLine("   sbyte15 s15.f15: got {0} but expected {1}", s15.f15, 15+9);
+                       return 15;
+               }
 
                sbyte16 s16;
                s16.f1 = 1;
@@ -385,11 +806,71 @@ public class Test_sbyte {
                s16.f14 = 14;
                s16.f15 = 15;
                s16.f16 = 16;
-               sbyte retval16 = mono_return_sbyte16(s16, 9);
-               if (retval16 != 2*9) {
-                       Console.WriteLine("   sbyte16 retval16: got {0} but expected {1}", retval16, 2*9);
+               s16 = mono_return_sbyte16(s16, 9);
+               if (s16.f1 != 1+9) {
+                       Console.WriteLine("   sbyte16 s16.f1: got {0} but expected {1}", s16.f1, 1+9);
                        return 1;
                }
+               if (s16.f2 != 2+9) {
+                       Console.WriteLine("   sbyte16 s16.f2: got {0} but expected {1}", s16.f2, 2+9);
+                       return 2;
+               }
+               if (s16.f3 != 3+9) {
+                       Console.WriteLine("   sbyte16 s16.f3: got {0} but expected {1}", s16.f3, 3+9);
+                       return 3;
+               }
+               if (s16.f4 != 4+9) {
+                       Console.WriteLine("   sbyte16 s16.f4: got {0} but expected {1}", s16.f4, 4+9);
+                       return 4;
+               }
+               if (s16.f5 != 5+9) {
+                       Console.WriteLine("   sbyte16 s16.f5: got {0} but expected {1}", s16.f5, 5+9);
+                       return 5;
+               }
+               if (s16.f6 != 6+9) {
+                       Console.WriteLine("   sbyte16 s16.f6: got {0} but expected {1}", s16.f6, 6+9);
+                       return 6;
+               }
+               if (s16.f7 != 7+9) {
+                       Console.WriteLine("   sbyte16 s16.f7: got {0} but expected {1}", s16.f7, 7+9);
+                       return 7;
+               }
+               if (s16.f8 != 8+9) {
+                       Console.WriteLine("   sbyte16 s16.f8: got {0} but expected {1}", s16.f8, 8+9);
+                       return 8;
+               }
+               if (s16.f9 != 9+9) {
+                       Console.WriteLine("   sbyte16 s16.f9: got {0} but expected {1}", s16.f9, 9+9);
+                       return 9;
+               }
+               if (s16.f10 != 10+9) {
+                       Console.WriteLine("   sbyte16 s16.f10: got {0} but expected {1}", s16.f10, 10+9);
+                       return 10;
+               }
+               if (s16.f11 != 11+9) {
+                       Console.WriteLine("   sbyte16 s16.f11: got {0} but expected {1}", s16.f11, 11+9);
+                       return 11;
+               }
+               if (s16.f12 != 12+9) {
+                       Console.WriteLine("   sbyte16 s16.f12: got {0} but expected {1}", s16.f12, 12+9);
+                       return 12;
+               }
+               if (s16.f13 != 13+9) {
+                       Console.WriteLine("   sbyte16 s16.f13: got {0} but expected {1}", s16.f13, 13+9);
+                       return 13;
+               }
+               if (s16.f14 != 14+9) {
+                       Console.WriteLine("   sbyte16 s16.f14: got {0} but expected {1}", s16.f14, 14+9);
+                       return 14;
+               }
+               if (s16.f15 != 15+9) {
+                       Console.WriteLine("   sbyte16 s16.f15: got {0} but expected {1}", s16.f15, 15+9);
+                       return 15;
+               }
+               if (s16.f16 != 16+9) {
+                       Console.WriteLine("   sbyte16 s16.f16: got {0} but expected {1}", s16.f16, 16+9);
+                       return 16;
+               }
 
                sbyte17 s17;
                s17.f1 = 1;
@@ -409,18 +890,161 @@ public class Test_sbyte {
                s17.f15 = 15;
                s17.f16 = 16;
                s17.f17 = 17;
-               sbyte retval17 = mono_return_sbyte17(s17, 9);
-               if (retval17 != 2*9) {
-                       Console.WriteLine("   sbyte17 retval17: got {0} but expected {1}", retval17, 2*9);
+               s17 = mono_return_sbyte17(s17, 9);
+               if (s17.f1 != 1+9) {
+                       Console.WriteLine("   sbyte17 s17.f1: got {0} but expected {1}", s17.f1, 1+9);
                        return 1;
                }
+               if (s17.f2 != 2+9) {
+                       Console.WriteLine("   sbyte17 s17.f2: got {0} but expected {1}", s17.f2, 2+9);
+                       return 2;
+               }
+               if (s17.f3 != 3+9) {
+                       Console.WriteLine("   sbyte17 s17.f3: got {0} but expected {1}", s17.f3, 3+9);
+                       return 3;
+               }
+               if (s17.f4 != 4+9) {
+                       Console.WriteLine("   sbyte17 s17.f4: got {0} but expected {1}", s17.f4, 4+9);
+                       return 4;
+               }
+               if (s17.f5 != 5+9) {
+                       Console.WriteLine("   sbyte17 s17.f5: got {0} but expected {1}", s17.f5, 5+9);
+                       return 5;
+               }
+               if (s17.f6 != 6+9) {
+                       Console.WriteLine("   sbyte17 s17.f6: got {0} but expected {1}", s17.f6, 6+9);
+                       return 6;
+               }
+               if (s17.f7 != 7+9) {
+                       Console.WriteLine("   sbyte17 s17.f7: got {0} but expected {1}", s17.f7, 7+9);
+                       return 7;
+               }
+               if (s17.f8 != 8+9) {
+                       Console.WriteLine("   sbyte17 s17.f8: got {0} but expected {1}", s17.f8, 8+9);
+                       return 8;
+               }
+               if (s17.f9 != 9+9) {
+                       Console.WriteLine("   sbyte17 s17.f9: got {0} but expected {1}", s17.f9, 9+9);
+                       return 9;
+               }
+               if (s17.f10 != 10+9) {
+                       Console.WriteLine("   sbyte17 s17.f10: got {0} but expected {1}", s17.f10, 10+9);
+                       return 10;
+               }
+               if (s17.f11 != 11+9) {
+                       Console.WriteLine("   sbyte17 s17.f11: got {0} but expected {1}", s17.f11, 11+9);
+                       return 11;
+               }
+               if (s17.f12 != 12+9) {
+                       Console.WriteLine("   sbyte17 s17.f12: got {0} but expected {1}", s17.f12, 12+9);
+                       return 12;
+               }
+               if (s17.f13 != 13+9) {
+                       Console.WriteLine("   sbyte17 s17.f13: got {0} but expected {1}", s17.f13, 13+9);
+                       return 13;
+               }
+               if (s17.f14 != 14+9) {
+                       Console.WriteLine("   sbyte17 s17.f14: got {0} but expected {1}", s17.f14, 14+9);
+                       return 14;
+               }
+               if (s17.f15 != 15+9) {
+                       Console.WriteLine("   sbyte17 s17.f15: got {0} but expected {1}", s17.f15, 15+9);
+                       return 15;
+               }
+               if (s17.f16 != 16+9) {
+                       Console.WriteLine("   sbyte17 s17.f16: got {0} but expected {1}", s17.f16, 16+9);
+                       return 16;
+               }
+               if (s17.f17 != 17+9) {
+                       Console.WriteLine("   sbyte17 s17.f17: got {0} but expected {1}", s17.f17, 17+9);
+                       return 17;
+               }
 
 
+               sbyte16_nested sn16;
+               sn16.nested1.f1 = 1;
+               sn16.f2 = 2;
+               sn16.f3 = 3;
+               sn16.f4 = 4;
+               sn16.f5 = 5;
+               sn16.f6 = 6;
+               sn16.f7 = 7;
+               sn16.f8 = 8;
+               sn16.f9 = 9;
+               sn16.f10 = 10;
+               sn16.f11 = 11;
+               sn16.f12 = 12;
+               sn16.f13 = 13;
+               sn16.f14 = 14;
+               sn16.f15 = 15;
+               sn16.nested2.f16 = 16;
+               sn16 = mono_return_sbyte16_nested(sn16, 9);
+               if (sn16.nested1.f1 != 1+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.nested1.f1: got {0} but expected {1}", sn16.nested1.f1, 1+9);
+                       return 1;
+               }
+               if (sn16.f2 != 2+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f2: got {0} but expected {1}", sn16.f2, 2+9);
+                       return 2;
+               }
+               if (sn16.f3 != 3+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f3: got {0} but expected {1}", sn16.f3, 3+9);
+                       return 3;
+               }
+               if (sn16.f4 != 4+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f4: got {0} but expected {1}", sn16.f4, 4+9);
+                       return 4;
+               }
+               if (sn16.f5 != 5+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f5: got {0} but expected {1}", sn16.f5, 5+9);
+                       return 5;
+               }
+               if (sn16.f6 != 6+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f6: got {0} but expected {1}", sn16.f6, 6+9);
+                       return 6;
+               }
+               if (sn16.f7 != 7+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f7: got {0} but expected {1}", sn16.f7, 7+9);
+                       return 7;
+               }
+               if (sn16.f8 != 8+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f8: got {0} but expected {1}", sn16.f8, 8+9);
+                       return 8;
+               }
+               if (sn16.f9 != 9+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f9: got {0} but expected {1}", sn16.f9, 9+9);
+                       return 9;
+               }
+               if (sn16.f10 != 10+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f10: got {0} but expected {1}", sn16.f10, 10+9);
+                       return 10;
+               }
+               if (sn16.f11 != 11+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f11: got {0} but expected {1}", sn16.f11, 11+9);
+                       return 11;
+               }
+               if (sn16.f12 != 12+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f12: got {0} but expected {1}", sn16.f12, 12+9);
+                       return 12;
+               }
+               if (sn16.f13 != 13+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f13: got {0} but expected {1}", sn16.f13, 13+9);
+                       return 13;
+               }
+               if (sn16.f14 != 14+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f14: got {0} but expected {1}", sn16.f14, 14+9);
+                       return 14;
+               }
+               if (sn16.f15 != 15+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.f15: got {0} but expected {1}", sn16.f15, 15+9);
+                       return 15;
+               }
+               if (sn16.nested2.f16 != 16+9) {
+                       Console.WriteLine("   sbyte16_nested sn16.nested2.f16: got {0} but expected {1}", sn16.nested2.f16, 16+9);
+                       return 16;
+               }
+
                return 0;
        } // end Main
 } // end class Test_sbyte
 
-
-
-
-