From 32fd10f2edcedc7a387d53d6900b2ea94b19f4e0894faae998fb5529920a161f Mon Sep 17 00:00:00 2001
From: Denisart Benjamin
Date: Sun, 24 Apr 2016 18:58:50 +0000
Subject: [PATCH] Accepting request 390673 from
home:Mailaender:branches:Mono:Factory
new upstream release
OBS-URL: https://build.opensuse.org/request/show/390673
OBS-URL: https://build.opensuse.org/package/show/Mono:Factory/mono-core?expand=0&rev=166
---
authors.patch | 7 -
basic_changes_powerpc_be.patch | 94 -
fix_atomic_add_i4_support_for_32bit_ppc.patch | 59 -
...tion_when_reading_from_timezone_file.patch | 24 -
fix_passing_struct_parms_per_elf_abiv2.patch | 3352 -------------
mono-4.2.2.30.tar.bz2 | 3 -
mono-4.3.2.467.tar.bz2 | 3 +
mono-core.changes | 220 +-
mono-core.spec | 200 +-
mono-nunit-default-runtime-4.5.patch | 10 -
mono-un-revoke-fix-in-BNC-144655.patch | 28 -
partial_sharing_false_4_powerpc.patch | 24 -
ppc_add_monocontext_and_async_callback.patch | 168 -
...uction_length_of_atomic_add_i4_is_28.patch | 21 -
strncat-process-c.patch | 12 -
update_elf_abiv2_testcases.patch | 4409 -----------------
16 files changed, 285 insertions(+), 8349 deletions(-)
delete mode 100644 authors.patch
delete mode 100644 basic_changes_powerpc_be.patch
delete mode 100644 fix_atomic_add_i4_support_for_32bit_ppc.patch
delete mode 100644 fix_exception_when_reading_from_timezone_file.patch
delete mode 100644 fix_passing_struct_parms_per_elf_abiv2.patch
delete mode 100644 mono-4.2.2.30.tar.bz2
create mode 100644 mono-4.3.2.467.tar.bz2
delete mode 100644 mono-nunit-default-runtime-4.5.patch
delete mode 100644 mono-un-revoke-fix-in-BNC-144655.patch
delete mode 100644 partial_sharing_false_4_powerpc.patch
delete mode 100644 ppc_add_monocontext_and_async_callback.patch
delete mode 100644 ppc_instruction_length_of_atomic_add_i4_is_28.patch
delete mode 100644 strncat-process-c.patch
delete mode 100644 update_elf_abiv2_testcases.patch
diff --git a/authors.patch b/authors.patch
deleted file mode 100644
index dda6c56..0000000
--- a/authors.patch
+++ /dev/null
@@ -1,7 +0,0 @@
-diff -uprN mono-4.2.0.old/AUTHORS mono-4.2.0.new/AUTHORS
---- mono-4.2.0.old/AUTHORS 1970-01-01 03:00:00.000000000 +0300
-+++ mono-4.2.0.new/AUTHORS 2015-07-20 10:07:11.000000000 +0300
-@@ -0,0 +1,3 @@
-+Miguel de Icaza (miguel@ximian.com)
-+Paolo Molaro (lupus@ximian.com)
-+Dietmar Maurer (dietmar@ximian.com)
diff --git a/basic_changes_powerpc_be.patch b/basic_changes_powerpc_be.patch
deleted file mode 100644
index 7afae8f..0000000
--- a/basic_changes_powerpc_be.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-commit 8332185abf23e2f27a536e6b7a08310aba8564fb
-Author: Bill Seurer
-Date: Tue Aug 18 09:36:23 2015 -0500
-
-[ppc] Basic changes to allow mono to build and run on power BE
-patch adapted to current mono 4.2.1.102
-
-The patch of tramp-ppc.c was not from above commit
-but is also required to avoid ppc64 build segfault.
-
-Signed-off-by: Michel Normand
----
- mono/mini/mini-ppc.c | 10 ++++++++--
- mono/mini/mini-trampolines.c | 5 ++++-
- mono/mini/tramp-ppc.c | 4 ++++
- mono/sgen/sgen-archdep.h | 4 ++--
- 4 files changed, 18 insertions(+), 5 deletions(-)
-
-Index: mono-4.2.1/mono/mini/mini-ppc.c
-===================================================================
---- mono-4.2.1.orig/mono/mini/mini-ppc.c
-+++ mono-4.2.1/mono/mini/mini-ppc.c
-@@ -1086,7 +1086,10 @@ get_call_info (MonoGenericSharingContext
- cinfo->args [n].size = size;
-
- /* It was 7, now it is 8 in LinuxPPC */
-- if (fr <= PPC_LAST_FPARG_REG) {
-+ if (fr <= PPC_LAST_FPARG_REG
-+ // For non-native vararg calls the parms must go in storage
-+ && !(!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG))
-+ ) {
- cinfo->args [n].regtype = RegTypeFP;
- cinfo->args [n].reg = fr;
- fr ++;
-@@ -1177,7 +1180,10 @@ get_call_info (MonoGenericSharingContext
- case MONO_TYPE_R8:
- cinfo->args [n].size = 8;
- /* It was 7, now it is 8 in LinuxPPC */
-- if (fr <= PPC_LAST_FPARG_REG) {
-+ if (fr <= PPC_LAST_FPARG_REG
-+ // For non-native vararg calls the parms must go in storage
-+ && !(!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG))
-+ ) {
- cinfo->args [n].regtype = RegTypeFP;
- cinfo->args [n].reg = fr;
- fr ++;
-Index: mono-4.2.1/mono/mini/mini-trampolines.c
-===================================================================
---- mono-4.2.1.orig/mono/mini/mini-trampolines.c
-+++ mono-4.2.1/mono/mini/mini-trampolines.c
-@@ -1066,7 +1066,10 @@ mono_delegate_trampoline (mgreg_t *regs,
- }
- }
- }
-- } else {
-+ // If "delegate->method_ptr" is null mono_get_addr_from_ftnptr will fail if
-+ // ftnptrs are being used. "method" would end up null on archtitectures without
-+ // ftnptrs so we can just skip this.
-+ } else if (delegate->method_ptr) {
- ji = mono_jit_info_table_find (domain, mono_get_addr_from_ftnptr (delegate->method_ptr));
- if (ji)
- method = jinfo_get_method (ji);
-Index: mono-4.2.1/mono/sgen/sgen-archdep.h
-===================================================================
---- mono-4.2.1.orig/mono/sgen/sgen-archdep.h
-+++ mono-4.2.1/mono/sgen/sgen-archdep.h
-@@ -88,8 +88,8 @@
- } while (0)
-
- /* MS_BLOCK_SIZE must be a multiple of the system pagesize, which for some
-- archs is 64k. */
--#if defined(TARGET_POWERPC64) && _CALL_ELF == 2
-+ architectures is 64k. */
-+#if defined(TARGET_POWERPC64)
- #define ARCH_MIN_MS_BLOCK_SIZE (64*1024)
- #define ARCH_MIN_MS_BLOCK_SIZE_SHIFT 16
- #endif
-Index: mono-4.2.1/mono/mini/tramp-ppc.c
-===================================================================
---- mono-4.2.1.orig/mono/mini/tramp-ppc.c
-+++ mono-4.2.1/mono/mini/tramp-ppc.c
-@@ -625,8 +625,12 @@ mono_arch_get_nullified_class_init_tramp
-
- g_assert (code - buf <= tramp_size);
-
-+ if (info)
- *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
-
-+ /* It is expected to be a function descriptor on power pre-v2 ABI */
-+ buf = mono_create_ftnptr (mono_domain_get (), buf);
-+
- return buf;
- }
-
diff --git a/fix_atomic_add_i4_support_for_32bit_ppc.patch b/fix_atomic_add_i4_support_for_32bit_ppc.patch
deleted file mode 100644
index eb29bc4..0000000
--- a/fix_atomic_add_i4_support_for_32bit_ppc.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 8f379f0c8f98493180b508b9e68b9aa76c0c5bdf Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?=
-Date: Mon, 3 Aug 2015 17:32:31 +0200
-Subject: [PATCH] [ppc] Fix atomic_add_i4 support for 32-bit PPC.
-
-
----
- mono/mini/mini-ppc.c | 31 ++++++++++++++++---------------
- 1 file changed, 16 insertions(+), 15 deletions(-)
-
-Index: mono-4.2.1/mono/mini/mini-ppc.c
-===================================================================
---- mono-4.2.1.orig/mono/mini/mini-ppc.c
-+++ mono-4.2.1/mono/mini/mini-ppc.c
-@@ -4417,6 +4417,22 @@ mono_arch_output_basic_block (MonoCompil
- else
- ppc_mr (code, ins->dreg, ins->sreg1);
- break;
-+#else
-+ case OP_ICONV_TO_R4:
-+ case OP_ICONV_TO_R8: {
-+ if (cpu_hw_caps & PPC_ISA_64) {
-+ ppc_srawi(code, ppc_r0, ins->sreg1, 31);
-+ ppc_stw (code, ppc_r0, -8, ppc_r1);
-+ ppc_stw (code, ins->sreg1, -4, ppc_r1);
-+ ppc_lfd (code, ins->dreg, -8, ppc_r1);
-+ ppc_fcfid (code, ins->dreg, ins->dreg);
-+ if (ins->opcode == OP_ICONV_TO_R4)
-+ ppc_frsp (code, ins->dreg, ins->dreg);
-+ }
-+ break;
-+ }
-+#endif
-+
- case OP_ATOMIC_ADD_I4:
- CASE_PPC64 (OP_ATOMIC_ADD_I8) {
- int location = ins->inst_basereg;
-@@ -4450,21 +4466,6 @@ mono_arch_output_basic_block (MonoCompil
- ppc_mr (code, ins->dreg, ppc_r0);
- break;
- }
--#else
-- case OP_ICONV_TO_R4:
-- case OP_ICONV_TO_R8: {
-- if (cpu_hw_caps & PPC_ISA_64) {
-- ppc_srawi(code, ppc_r0, ins->sreg1, 31);
-- ppc_stw (code, ppc_r0, -8, ppc_r1);
-- ppc_stw (code, ins->sreg1, -4, ppc_r1);
-- ppc_lfd (code, ins->dreg, -8, ppc_r1);
-- ppc_fcfid (code, ins->dreg, ins->dreg);
-- if (ins->opcode == OP_ICONV_TO_R4)
-- ppc_frsp (code, ins->dreg, ins->dreg);
-- }
-- break;
-- }
--#endif
- case OP_ATOMIC_CAS_I4:
- CASE_PPC64 (OP_ATOMIC_CAS_I8) {
- int location = ins->sreg1;
diff --git a/fix_exception_when_reading_from_timezone_file.patch b/fix_exception_when_reading_from_timezone_file.patch
deleted file mode 100644
index b45568f..0000000
--- a/fix_exception_when_reading_from_timezone_file.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 45c3685e3b360ecc8c5a78ee10c298d6b584a302 Mon Sep 17 00:00:00 2001
-From: Bill Seurer
-Date: Thu, 10 Sep 2015 13:34:27 -0500
-Subject: [PATCH] [ppc] Fix exception when reading from timezone file. See
- https://bugzilla.xamarin.com/show_bug.cgi?id=30360
-
-
----
- mcs/class/corlib/System/TimeZoneInfo.cs | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: mono-4.2.1/mcs/class/corlib/System/TimeZoneInfo.cs
-===================================================================
---- mono-4.2.1.orig/mcs/class/corlib/System/TimeZoneInfo.cs
-+++ mono-4.2.1/mcs/class/corlib/System/TimeZoneInfo.cs
-@@ -1175,7 +1175,7 @@ namespace System
- return (((i >> 24) & 0xff)
- | ((i >> 8) & 0xff00)
- | ((i << 8) & 0xff0000)
-- | ((i << 24)));
-+ | (((i & 0xff) << 24)));
- }
-
- static int ReadBigEndianInt32 (byte [] buffer, int start)
diff --git a/fix_passing_struct_parms_per_elf_abiv2.patch b/fix_passing_struct_parms_per_elf_abiv2.patch
deleted file mode 100644
index 02c9013..0000000
--- a/fix_passing_struct_parms_per_elf_abiv2.patch
+++ /dev/null
@@ -1,3352 +0,0 @@
-From 0d464be2b3ae6f7ddb9a3f3c97622a988be8ae33 Mon Sep 17 00:00:00 2001
-From: Bill Seurer
-Date: Mon, 31 Aug 2015 16:07:02 -0500
-Subject: [PATCH] [ppc] Fix passing of structure parameters as per the ELF ABI
- v2. Add 5 new test cases to test the new ABI changes.
-
-
----
- mono/mini/mini-ppc.c | 174 +++-
- mono/mini/mini-ppc.h | 47 +
- mono/tests/Makefile.am | 15
- mono/tests/libtest.c | 1672 +++++++++++++++++++++++++++++++++++++++++++++
- mono/tests/pinvoke_ppcc.cs | 426 +++++++++++
- mono/tests/pinvoke_ppcd.cs | 215 +++++
- mono/tests/pinvoke_ppcf.cs | 216 +++++
- mono/tests/pinvoke_ppci.cs | 132 +++
- mono/tests/pinvoke_ppcs.cs | 214 +++++
- 9 files changed, 3079 insertions(+), 32 deletions(-)
-
-Index: mono-4.2.1/mono/mini/mini-ppc.c
-===================================================================
---- mono-4.2.1.orig/mono/mini/mini-ppc.c
-+++ mono-4.2.1/mono/mini/mini-ppc.c
-@@ -206,7 +206,7 @@ emit_memcpy (guint8 *code, int size, int
- }
- #ifdef __mono_ppc64__
- /* the hardware has multiple load/store units and the move is long
-- enough to use more then one regiester, then use load/load/store/store
-+ enough to use more then one register, then use load/load/store/store
- to execute 2 instructions per cycle. */
- if ((cpu_hw_caps & PPC_MULTIPLE_LS_UNITS) && (dreg != ppc_r11) && (sreg != ppc_r11)) {
- while (size >= 16) {
-@@ -867,18 +867,19 @@ enum {
- RegTypeBase,
- RegTypeFP,
- RegTypeStructByVal,
-- RegTypeStructByAddr
-+ RegTypeStructByAddr,
-+ RegTypeFPStructByVal, // For the v2 ABI, floats should be passed in FRs instead of GRs. Only valid for ABI v2!
- };
-
- typedef struct {
- gint32 offset;
- guint32 vtsize; /* in param area */
- guint8 reg;
-- guint8 vtregs; /* number of registers used to pass a RegTypeStructByVal */
-+ guint8 vtregs; /* number of registers used to pass a RegTypeStructByVal/RegTypeFPStructByVal */
- guint8 regtype : 4; /* 0 general, 1 basereg, 2 floating point register, see RegType* */
-- guint8 size : 4; /* 1, 2, 4, 8, or regs used by RegTypeStructByVal */
-+ guint8 size : 4; /* 1, 2, 4, 8, or regs used by RegTypeStructByVal/RegTypeFPStructByVal */
- guint8 bytes : 4; /* size in bytes - only valid for
-- RegTypeStructByVal if the struct fits
-+ RegTypeStructByVal/RegTypeFPStructByVal if the struct fits
- in one word, otherwise it's 0*/
- } ArgInfo;
-
-@@ -934,7 +935,7 @@ add_general (guint *gr, guint *stack_siz
- (*gr) ++;
- }
-
--#if defined(__APPLE__) || defined(__mono_ppc64__)
-+#if defined(__APPLE__) || (defined(__mono_ppc64__) && !PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS)
- static gboolean
- has_only_a_r48_field (MonoClass *klass)
- {
-@@ -1071,9 +1072,7 @@ get_call_info (MonoGenericSharingContext
- case MONO_TYPE_VALUETYPE:
- case MONO_TYPE_TYPEDBYREF: {
- gint size;
-- MonoClass *klass;
--
-- klass = mono_class_from_mono_type (sig->params [i]);
-+ MonoClass *klass = mono_class_from_mono_type (sig->params [i]);
- if (simpletype->type == MONO_TYPE_TYPEDBYREF)
- size = sizeof (MonoTypedRef);
- else if (is_pinvoke)
-@@ -1081,7 +1080,7 @@ get_call_info (MonoGenericSharingContext
- else
- size = mono_class_value_size (klass, NULL);
-
--#if defined(__APPLE__) || defined(__mono_ppc64__)
-+#if defined(__APPLE__) || (defined(__mono_ppc64__) && !PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS)
- if ((size == 4 || size == 8) && has_only_a_r48_field (klass)) {
- cinfo->args [n].size = size;
-
-@@ -1115,24 +1114,57 @@ get_call_info (MonoGenericSharingContext
- int align_size = size;
- int nregs = 0;
- int rest = PPC_LAST_ARG_REG - gr + 1;
-- int n_in_regs;
-+ int n_in_regs = 0;
-
-- align_size += (sizeof (gpointer) - 1);
-- align_size &= ~(sizeof (gpointer) - 1);
-- nregs = (align_size + sizeof (gpointer) -1 ) / sizeof (gpointer);
-- n_in_regs = MIN (rest, nregs);
-- if (n_in_regs < 0)
-- n_in_regs = 0;
-+#if PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS
-+ int mbr_cnt = 0;
-+ int mbr_size = 0;
-+ gboolean is_all_floats = mini_type_is_hfa (sig->params [i], &mbr_cnt, &mbr_size);
-+
-+ if (is_all_floats && (mbr_cnt <= 8)) {
-+ rest = PPC_LAST_FPARG_REG - fr + 1;
-+ }
-+ // Pass small (<= 8 member) structures entirely made up of either float or double members
-+ // in FR registers. There have to be at least mbr_cnt registers left.
-+ if (is_all_floats &&
-+ (rest >= mbr_cnt) &&
-+ (mbr_cnt <= 8)) {
-+ nregs = mbr_cnt;
-+ n_in_regs = MIN (rest, nregs);
-+ cinfo->args [n].regtype = RegTypeFPStructByVal;
-+ cinfo->args [n].vtregs = n_in_regs;
-+ cinfo->args [n].size = mbr_size;
-+ cinfo->args [n].vtsize = nregs - n_in_regs;
-+ cinfo->args [n].reg = fr;
-+ fr += n_in_regs;
-+ if (mbr_size == 4) {
-+ // floats
-+ FP_ALSO_IN_REG (gr += (n_in_regs+1)/2);
-+ } else {
-+ // doubles
-+ FP_ALSO_IN_REG (gr += (n_in_regs));
-+ }
-+ } else
-+#endif
-+ {
-+ align_size += (sizeof (gpointer) - 1);
-+ align_size &= ~(sizeof (gpointer) - 1);
-+ nregs = (align_size + sizeof (gpointer) -1 ) / sizeof (gpointer);
-+ n_in_regs = MIN (rest, nregs);
-+ if (n_in_regs < 0)
-+ n_in_regs = 0;
- #ifdef __APPLE__
-- /* FIXME: check this */
-- if (size >= 3 && size % 4 != 0)
-- n_in_regs = 0;
--#endif
-- cinfo->args [n].regtype = RegTypeStructByVal;
-- cinfo->args [n].vtregs = n_in_regs;
-- cinfo->args [n].size = n_in_regs;
-- cinfo->args [n].vtsize = nregs - n_in_regs;
-- cinfo->args [n].reg = gr;
-+ /* FIXME: check this */
-+ if (size >= 3 && size % 4 != 0)
-+ n_in_regs = 0;
-+#endif
-+ cinfo->args [n].regtype = RegTypeStructByVal;
-+ cinfo->args [n].vtregs = n_in_regs;
-+ cinfo->args [n].size = n_in_regs;
-+ cinfo->args [n].vtsize = nregs - n_in_regs;
-+ cinfo->args [n].reg = gr;
-+ gr += n_in_regs;
-+ }
-
- #ifdef __mono_ppc64__
- if (nregs == 1 && is_pinvoke)
-@@ -1140,7 +1172,6 @@ get_call_info (MonoGenericSharingContext
- else
- #endif
- cinfo->args [n].bytes = 0;
-- gr += n_in_regs;
- cinfo->args [n].offset = PPC_STACK_PARAM_OFFSET + stack_size;
- /*g_print ("offset for arg %d at %d\n", n, PPC_STACK_PARAM_OFFSET + stack_size);*/
- stack_size += nregs * sizeof (gpointer);
-@@ -1598,6 +1629,17 @@ mono_arch_emit_call (MonoCompile *cfg, M
- ins->inst_p1 = mono_mempool_alloc (cfg->mempool, sizeof (ArgInfo));
- memcpy (ins->inst_p1, ainfo, sizeof (ArgInfo));
- MONO_ADD_INS (cfg->cbb, ins);
-+ } else if (ainfo->regtype == RegTypeFPStructByVal) {
-+ /* this is further handled in mono_arch_emit_outarg_vt () */
-+ MONO_INST_NEW (cfg, ins, OP_OUTARG_VT);
-+ ins->opcode = OP_OUTARG_VT;
-+ ins->sreg1 = in->dreg;
-+ ins->klass = in->klass;
-+ ins->inst_p0 = call;
-+ ins->inst_p1 = mono_mempool_alloc (cfg->mempool, sizeof (ArgInfo));
-+ memcpy (ins->inst_p1, ainfo, sizeof (ArgInfo));
-+ MONO_ADD_INS (cfg->cbb, ins);
-+ cfg->flags |= MONO_CFG_HAS_FPOUT;
- } else if (ainfo->regtype == RegTypeBase) {
- if (!t->byref && ((t->type == MONO_TYPE_I8) || (t->type == MONO_TYPE_U8))) {
- MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREI8_MEMBASE_REG, ppc_r1, ainfo->offset, in->dreg);
-@@ -1701,20 +1743,39 @@ mono_arch_emit_outarg_vt (MonoCompile *c
- } else
- #endif
- for (i = 0; i < ainfo->vtregs; ++i) {
-+ dreg = mono_alloc_ireg (cfg);
-+#if G_BYTE_ORDER == G_BIG_ENDIAN
- int antipadding = 0;
- if (ainfo->bytes) {
- g_assert (i == 0);
- antipadding = sizeof (gpointer) - ainfo->bytes;
- }
-- dreg = mono_alloc_ireg (cfg);
- MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, src->dreg, soffset);
- if (antipadding)
- MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SHR_UN_IMM, dreg, dreg, antipadding * 8);
-+#else
-+ MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, src->dreg, soffset);
-+#endif
- mono_call_inst_add_outarg_reg (cfg, call, dreg, ainfo->reg + i, FALSE);
- soffset += sizeof (gpointer);
- }
- if (ovf_size != 0)
- mini_emit_memcpy (cfg, ppc_r1, doffset + soffset, src->dreg, soffset, ovf_size * sizeof (gpointer), 0);
-+ } else if (ainfo->regtype == RegTypeFPStructByVal) {
-+ soffset = 0;
-+ for (i = 0; i < ainfo->vtregs; ++i) {
-+ int tmpr = mono_alloc_freg (cfg);
-+ if (ainfo->size == 4)
-+ MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADR4_MEMBASE, tmpr, src->dreg, soffset);
-+ else // ==8
-+ MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADR8_MEMBASE, tmpr, src->dreg, soffset);
-+ dreg = mono_alloc_freg (cfg);
-+ MONO_EMIT_NEW_UNALU (cfg, OP_FMOVE, dreg, tmpr);
-+ mono_call_inst_add_outarg_reg (cfg, call, dreg, ainfo->reg+i, TRUE);
-+ soffset += ainfo->size;
-+ }
-+ if (ovf_size != 0)
-+ mini_emit_memcpy (cfg, ppc_r1, doffset + soffset, src->dreg, soffset, ovf_size * sizeof (gpointer), 0);
- } else if (ainfo->regtype == RegTypeFP) {
- int tmpr = mono_alloc_freg (cfg);
- if (ainfo->size == 4)
-@@ -1885,6 +1946,7 @@ mono_arch_instrument_epilog_full (MonoCo
- if (enable_arguments) {
- /* FIXME: get the actual address */
- ppc_mr (code, ppc_r4, ppc_r3);
-+ // FIXME: Support the new v2 ABI!
- }
- break;
- case SAVE_NONE:
-@@ -3869,6 +3931,16 @@ mono_arch_output_basic_block (MonoCompil
- ppc_ldptr (code, ppc_r2, 8, ins->sreg1);
- ppc_mtlr (code, ppc_r0);
- #else
-+#if (_CALL_ELF == 2)
-+ if (ins->flags & MONO_INST_HAS_METHOD) {
-+ // Not a global entry point
-+ } else {
-+ // Need to set up r12 with function entry address for global entry point
-+ if (ppc_r12 != ins->sreg1) {
-+ ppc_mr(code,ppc_r12,ins->sreg1);
-+ }
-+ }
-+#endif
- ppc_mtlr (code, ins->sreg1);
- #endif
- ppc_blrl (code);
-@@ -5018,6 +5090,25 @@ mono_arch_emit_prolog (MonoCompile *cfg)
- ppc_stfs (code, ainfo->reg, inst->inst_offset, inst->inst_basereg);
- else
- g_assert_not_reached ();
-+ } else if (ainfo->regtype == RegTypeFPStructByVal) {
-+ int doffset = inst->inst_offset;
-+ int soffset = 0;
-+ int cur_reg;
-+ int size = 0;
-+ g_assert (ppc_is_imm16 (inst->inst_offset));
-+ g_assert (ppc_is_imm16 (inst->inst_offset + ainfo->vtregs * sizeof (gpointer)));
-+ /* FIXME: what if there is no class? */
-+ if (sig->pinvoke && mono_class_from_mono_type (inst->inst_vtype))
-+ size = mono_class_native_size (mono_class_from_mono_type (inst->inst_vtype), NULL);
-+ for (cur_reg = 0; cur_reg < ainfo->vtregs; ++cur_reg) {
-+ if (ainfo->size == 4) {
-+ ppc_stfs (code, ainfo->reg + cur_reg, doffset, inst->inst_basereg);
-+ } else {
-+ ppc_stfd (code, ainfo->reg + cur_reg, doffset, inst->inst_basereg);
-+ }
-+ soffset += ainfo->size;
-+ doffset += ainfo->size;
-+ }
- } else if (ainfo->regtype == RegTypeStructByVal) {
- int doffset = inst->inst_offset;
- int soffset = 0;
-@@ -5047,9 +5138,21 @@ mono_arch_emit_prolog (MonoCompile *cfg)
- #ifdef __mono_ppc64__
- if (ainfo->bytes) {
- g_assert (cur_reg == 0);
-+#if G_BYTE_ORDER == G_BIG_ENDIAN
- ppc_sldi (code, ppc_r0, ainfo->reg,
-- (sizeof (gpointer) - ainfo->bytes) * 8);
-+ (sizeof (gpointer) - ainfo->bytes) * 8);
- ppc_stptr (code, ppc_r0, doffset, inst->inst_basereg);
-+#else
-+ if (mono_class_native_size (inst->klass, NULL) == 1) {
-+ ppc_stb (code, ainfo->reg + cur_reg, doffset, inst->inst_basereg);
-+ } else if (mono_class_native_size (inst->klass, NULL) == 2) {
-+ ppc_sth (code, ainfo->reg + cur_reg, doffset, inst->inst_basereg);
-+ } else if (mono_class_native_size (inst->klass, NULL) == 4) { // WDS -- maybe <=4?
-+ ppc_stw (code, ainfo->reg + cur_reg, doffset, inst->inst_basereg);
-+ } else {
-+ ppc_stptr (code, ainfo->reg + cur_reg, doffset, inst->inst_basereg); // WDS -- Better way?
-+ }
-+#endif
- } else
- #endif
- {
-@@ -6024,3 +6127,16 @@ mono_arch_opcode_supported (int opcode)
- return FALSE;
- }
- }
-+
-+
-+#if 0
-+// FIXME: To get the test case finally_block_ending_in_dead_bb to work properly we need to define the following
-+// (in mini-ppc.h) and then implement the fuction mono_arch_create_handler_block_trampoline.
-+// #define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD 1
-+
-+gpointer
-+mono_arch_create_handler_block_trampoline (void)
-+{
-+ . . .
-+}
-+#endif
-Index: mono-4.2.1/mono/mini/mini-ppc.h
-===================================================================
---- mono-4.2.1.orig/mono/mini/mini-ppc.h
-+++ mono-4.2.1/mono/mini/mini-ppc.h
-@@ -135,6 +135,8 @@ typedef struct MonoCompileArch {
- #define PPC_FIRST_FPARG_REG ppc_f1
- #define PPC_LAST_FPARG_REG ppc_f13
- #define PPC_PASS_STRUCTS_BY_VALUE 1
-+#define PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS 0
-+#define MONO_ARCH_HAVE_DECOMPOSE_VTYPE_OPTS 0
- #else
- /* Linux */
- #ifdef __mono_ppc64__
-@@ -143,9 +145,19 @@ typedef struct MonoCompileArch {
- #if (_CALL_ELF == 2)
- #define PPC_STACK_PARAM_OFFSET 32
- #define PPC_MINIMAL_STACK_SIZE 32
-+ #define PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS 1
-+ #define MONO_ARCH_HAVE_DECOMPOSE_VTYPE_OPTS 1
-+// FIXME: To get the test case finally_block_ending_in_dead_bb to work properly we need to define the following
-+// and then implement the fuction mono_arch_create_handler_block_trampoline.
-+// #define MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD 1
-+
-+// #define DEBUG_ELFABIV2
-+
- #else
- #define PPC_STACK_PARAM_OFFSET 48
- #define PPC_MINIMAL_STACK_SIZE 48
-+ #define PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS 0
-+ #define MONO_ARCH_HAVE_DECOMPOSE_VTYPE_OPTS 0
- #endif
- #define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1
- #define PPC_MINIMAL_PARAM_AREA_SIZE 64
-@@ -160,6 +172,13 @@ typedef struct MonoCompileArch {
- #define PPC_MINIMAL_PARAM_AREA_SIZE 0
- #define PPC_LAST_FPARG_REG ppc_f8
- #define PPC_PASS_STRUCTS_BY_VALUE 0
-+#define PPC_LARGEST_STRUCT_SIZE_TO_RETURN_VIA_REGISTERS 0
-+#define PPC_MOST_FLOAT_STRUCT_MEMBERS_TO_RETURN_VIA_REGISTERS 0
-+#define PPC_PASS_SMALL_FLOAT_STRUCTS_IN_FR_REGS 0
-+#define PPC_RETURN_SMALL_FLOAT_STRUCTS_IN_FR_REGS 0
-+#define PPC_RETURN_SMALL_STRUCTS_IN_REGS 0
-+#define MONO_ARCH_HAVE_DECOMPOSE_VTYPE_OPTS 0
-+#define MONO_ARCH_RETURN_CAN_USE_MULTIPLE_REGISTERS 0
- #define PPC_THREAD_PTR_REG ppc_r2
- #endif
- #define PPC_FIRST_ARG_REG ppc_r3
-@@ -198,6 +217,7 @@ typedef struct MonoCompileArch {
- #define MONO_ARCH_HAVE_OP_TAIL_CALL 1
-
- #define PPC_NUM_REG_ARGS (PPC_LAST_ARG_REG-PPC_FIRST_ARG_REG+1)
-+#define PPC_NUM_REG_FPARGS (PPC_LAST_FPARG_REG-PPC_FIRST_FPARG_REG+1)
-
- #ifdef MONO_CROSS_COMPILE
-
-@@ -323,4 +343,31 @@ void mono_ppc_patch_plt_entry (guint8 *c
-
- void mono_ppc_set_func_into_sigctx (void *sigctx, void *func);
-
-+
-+// Debugging macros for ELF ABI v2
-+#ifdef DEBUG_ELFABIV2
-+
-+#define DEBUG_ELFABIV2_printf(a, ...) \
-+{if (getenv("DEBUG_ELFABIV2")) { printf(a, ##__VA_ARGS__); fflush(stdout); } }
-+
-+#define DEBUG_ELFABIV2_mono_print_ins(a) \
-+{if (getenv("DEBUG_ELFABIV2")) { if (!a) {printf("null\n");} else {mono_print_ins(a);} fflush(stdout); } }
-+
-+extern char* mono_type_full_name (MonoType *type);
-+
-+#define DEBUG_ELFABIV2_mono_print_type(a) \
-+{if (getenv("DEBUG_ELFABIV2")) { printf("%s, size: %d\n", mono_type_get_name(&a->klass->byval_arg), mini_type_stack_size (NULL, a, 0)); fflush(stdout); } }
-+
-+#define DEBUG_ELFABIV2_mono_print_class(a) \
-+{if (getenv("DEBUG_ELFABIV2")) { printf("%s\n", mono_type_get_name(&a->byval_arg)); fflush(stdout); } }
-+
-+#else
-+
-+#define DEBUG_ELFABIV2_printf(a, ...)
-+#define DEBUG_ELFABIV2_mono_print_ins(a)
-+#define DEBUG_ELFABIV2_mono_print_type(a)
-+#define DEBUG_ELFABIV2_mono_print_class(a)
-+
-+#endif
-+
- #endif /* __MONO_MINI_PPC_H__ */
-Index: mono-4.2.1/mono/tests/Makefile.am
-===================================================================
---- mono-4.2.1.orig/mono/tests/Makefile.am
-+++ mono-4.2.1/mono/tests/Makefile.am
-@@ -413,7 +413,12 @@ BASE_TEST_CS_SRC= \
- sleep.cs \
- bug-27147.cs \
- bug-30085.cs \
-- bug-17537.cs
-+ bug-17537.cs \
-+ pinvoke_ppcc.cs \
-+ pinvoke_ppcs.cs \
-+ pinvoke_ppci.cs \
-+ pinvoke_ppcf.cs \
-+ pinvoke_ppcd.cs
-
- TEST_CS_SRC_DIST= \
- $(BASE_TEST_CS_SRC) \
-@@ -460,8 +465,8 @@ PLATFORM_DISABLED_TESTS=finalizer-abort.
- endif
-
- if POWERPC64
--# These tests hang
--PLATFORM_DISABLED_TESTS=monitor.exe finalizer-abort.exe finalizer-exception.exe finalizer-exit.exe
-+# FIXME: These tests hang/fail for unknown reasons
-+PLATFORM_DISABLED_TESTS=monitor.exe threadpool-exceptions5.exe
- endif
-
- if ARM
-@@ -853,6 +858,10 @@ runtest-managed: test-runner.exe $(TESTS
- @if [ "x$$CI" = "x1" ]; then disabled_tests="$(DISABLED_TESTS_WRENCH)"; else disabled_tests="$(DISABLED_TESTS)"; fi; \
- $(RUNTIME) ./test-runner.exe -j a --disabled "$${disabled_tests}" $(TESTSI_CS) $(TESTBS) $(TESTSI_IL)
-
-+runtest-managed-serial: test-runner.exe $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(PREREQSI_CS)
-+ @if [ "x$$CI" = "x1" ]; then disabled_tests="$(DISABLED_TESTS_WRENCH)"; else disabled_tests="$(DISABLED_TESTS)"; fi; \
-+ $(RUNTIME) ./test-runner.exe -j 1 --disabled "$${disabled_tests}" $(TESTSI_CS) $(TESTBS) $(TESTSI_IL)
-+
- testjit:
- @if test x$(M) != x0; then $(MAKE) runtest-managed; else $(MAKE) runtest; fi
-
-Index: mono-4.2.1/mono/tests/libtest.c
-===================================================================
---- mono-4.2.1.orig/mono/tests/libtest.c
-+++ mono-4.2.1/mono/tests/libtest.c
-@@ -5445,3 +5445,1675 @@ mono_test_has_thiscall (void)
-
- #endif
-
-+
-+typedef struct {
-+ char f1;
-+} sbyte1;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte1 (sbyte1 s1, int addend) {
-+ if (s1.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte1 s1.f1: got %d but expected %d\n", s1.f1, 1);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2;
-+} sbyte2;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte2 (sbyte2 s2, int addend) {
-+ if (s2.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte2 s2.f1: got %d but expected %d\n", s2.f1, 1);
-+ return 1;
-+ }
-+ if (s2.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte2 s2.f2: got %d but expected %d\n", s2.f2, 2);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3;
-+} sbyte3;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte3 (sbyte3 s3, int addend) {
-+ if (s3.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte3 s3.f1: got %d but expected %d\n", s3.f1, 1);
-+ return 1;
-+ }
-+ if (s3.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte3 s3.f2: got %d but expected %d\n", s3.f2, 2);
-+ return 1;
-+ }
-+ if (s3.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte3 s3.f3: got %d but expected %d\n", s3.f3, 3);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4;
-+} sbyte4;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte4 (sbyte4 s4, int addend) {
-+ if (s4.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte4 s4.f1: got %d but expected %d\n", s4.f1, 1);
-+ return 1;
-+ }
-+ if (s4.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte4 s4.f2: got %d but expected %d\n", s4.f2, 2);
-+ return 1;
-+ }
-+ if (s4.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte4 s4.f3: got %d but expected %d\n", s4.f3, 3);
-+ return 1;
-+ }
-+ if (s4.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte4 s4.f4: got %d but expected %d\n", s4.f4, 4);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5;
-+} sbyte5;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte5 (sbyte5 s5, int addend) {
-+ if (s5.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte5 s5.f1: got %d but expected %d\n", s5.f1, 1);
-+ return 1;
-+ }
-+ if (s5.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte5 s5.f2: got %d but expected %d\n", s5.f2, 2);
-+ return 1;
-+ }
-+ if (s5.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte5 s5.f3: got %d but expected %d\n", s5.f3, 3);
-+ return 1;
-+ }
-+ if (s5.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte5 s5.f4: got %d but expected %d\n", s5.f4, 4);
-+ return 1;
-+ }
-+ if (s5.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte5 s5.f5: got %d but expected %d\n", s5.f5, 5);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6;
-+} sbyte6;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte6 (sbyte6 s6, int addend) {
-+ if (s6.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte6 s6.f1: got %d but expected %d\n", s6.f1, 1);
-+ return 1;
-+ }
-+ if (s6.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte6 s6.f2: got %d but expected %d\n", s6.f2, 2);
-+ return 1;
-+ }
-+ if (s6.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte6 s6.f3: got %d but expected %d\n", s6.f3, 3);
-+ return 1;
-+ }
-+ if (s6.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte6 s6.f4: got %d but expected %d\n", s6.f4, 4);
-+ return 1;
-+ }
-+ if (s6.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte6 s6.f5: got %d but expected %d\n", s6.f5, 5);
-+ return 1;
-+ }
-+ if (s6.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte6 s6.f6: got %d but expected %d\n", s6.f6, 6);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7;
-+} sbyte7;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte7 (sbyte7 s7, int addend) {
-+ if (s7.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte7 s7.f1: got %d but expected %d\n", s7.f1, 1);
-+ return 1;
-+ }
-+ if (s7.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte7 s7.f2: got %d but expected %d\n", s7.f2, 2);
-+ return 1;
-+ }
-+ if (s7.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte7 s7.f3: got %d but expected %d\n", s7.f3, 3);
-+ return 1;
-+ }
-+ if (s7.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte7 s7.f4: got %d but expected %d\n", s7.f4, 4);
-+ return 1;
-+ }
-+ if (s7.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte7 s7.f5: got %d but expected %d\n", s7.f5, 5);
-+ return 1;
-+ }
-+ if (s7.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte7 s7.f6: got %d but expected %d\n", s7.f6, 6);
-+ return 1;
-+ }
-+ if (s7.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte7 s7.f7: got %d but expected %d\n", s7.f7, 7);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8;
-+} sbyte8;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte8 (sbyte8 s8, int addend) {
-+ if (s8.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte8 s8.f1: got %d but expected %d\n", s8.f1, 1);
-+ return 1;
-+ }
-+ if (s8.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte8 s8.f2: got %d but expected %d\n", s8.f2, 2);
-+ return 1;
-+ }
-+ if (s8.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte8 s8.f3: got %d but expected %d\n", s8.f3, 3);
-+ return 1;
-+ }
-+ if (s8.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte8 s8.f4: got %d but expected %d\n", s8.f4, 4);
-+ return 1;
-+ }
-+ if (s8.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte8 s8.f5: got %d but expected %d\n", s8.f5, 5);
-+ return 1;
-+ }
-+ if (s8.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte8 s8.f6: got %d but expected %d\n", s8.f6, 6);
-+ return 1;
-+ }
-+ if (s8.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte8 s8.f7: got %d but expected %d\n", s8.f7, 7);
-+ return 1;
-+ }
-+ if (s8.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte8 s8.f8: got %d but expected %d\n", s8.f8, 8);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8,f9;
-+} sbyte9;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte9 (sbyte9 s9, int addend) {
-+ if (s9.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte9 s9.f1: got %d but expected %d\n", s9.f1, 1);
-+ return 1;
-+ }
-+ if (s9.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte9 s9.f2: got %d but expected %d\n", s9.f2, 2);
-+ return 1;
-+ }
-+ if (s9.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte9 s9.f3: got %d but expected %d\n", s9.f3, 3);
-+ return 1;
-+ }
-+ if (s9.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte9 s9.f4: got %d but expected %d\n", s9.f4, 4);
-+ return 1;
-+ }
-+ if (s9.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte9 s9.f5: got %d but expected %d\n", s9.f5, 5);
-+ return 1;
-+ }
-+ if (s9.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte9 s9.f6: got %d but expected %d\n", s9.f6, 6);
-+ return 1;
-+ }
-+ if (s9.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte9 s9.f7: got %d but expected %d\n", s9.f7, 7);
-+ return 1;
-+ }
-+ if (s9.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte9 s9.f8: got %d but expected %d\n", s9.f8, 8);
-+ return 1;
-+ }
-+ if (s9.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte9 s9.f9: got %d but expected %d\n", s9.f9, 9);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10;
-+} sbyte10;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte10 (sbyte10 s10, int addend) {
-+ if (s10.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f1: got %d but expected %d\n", s10.f1, 1);
-+ return 1;
-+ }
-+ if (s10.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f2: got %d but expected %d\n", s10.f2, 2);
-+ return 1;
-+ }
-+ if (s10.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f3: got %d but expected %d\n", s10.f3, 3);
-+ return 1;
-+ }
-+ if (s10.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f4: got %d but expected %d\n", s10.f4, 4);
-+ return 1;
-+ }
-+ if (s10.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f5: got %d but expected %d\n", s10.f5, 5);
-+ return 1;
-+ }
-+ if (s10.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f6: got %d but expected %d\n", s10.f6, 6);
-+ return 1;
-+ }
-+ if (s10.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f7: got %d but expected %d\n", s10.f7, 7);
-+ return 1;
-+ }
-+ if (s10.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f8: got %d but expected %d\n", s10.f8, 8);
-+ return 1;
-+ }
-+ if (s10.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f9: got %d but expected %d\n", s10.f9, 9);
-+ return 1;
-+ }
-+ if (s10.f10 != 10) {
-+ fprintf(stderr, "mono_return_sbyte10 s10.f10: got %d but expected %d\n", s10.f10, 10);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11;
-+} sbyte11;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte11 (sbyte11 s11, int addend) {
-+ if (s11.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f1: got %d but expected %d\n", s11.f1, 1);
-+ return 1;
-+ }
-+ if (s11.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f2: got %d but expected %d\n", s11.f2, 2);
-+ return 1;
-+ }
-+ if (s11.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f3: got %d but expected %d\n", s11.f3, 3);
-+ return 1;
-+ }
-+ if (s11.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f4: got %d but expected %d\n", s11.f4, 4);
-+ return 1;
-+ }
-+ if (s11.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f5: got %d but expected %d\n", s11.f5, 5);
-+ return 1;
-+ }
-+ if (s11.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f6: got %d but expected %d\n", s11.f6, 6);
-+ return 1;
-+ }
-+ if (s11.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f7: got %d but expected %d\n", s11.f7, 7);
-+ return 1;
-+ }
-+ if (s11.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f8: got %d but expected %d\n", s11.f8, 8);
-+ return 1;
-+ }
-+ if (s11.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f9: got %d but expected %d\n", s11.f9, 9);
-+ return 1;
-+ }
-+ if (s11.f10 != 10) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f10: got %d but expected %d\n", s11.f10, 10);
-+ return 1;
-+ }
-+ if (s11.f11 != 11) {
-+ fprintf(stderr, "mono_return_sbyte11 s11.f11: got %d but expected %d\n", s11.f11, 11);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12;
-+} sbyte12;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte12 (sbyte12 s12, int addend) {
-+ if (s12.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f1: got %d but expected %d\n", s12.f1, 1);
-+ return 1;
-+ }
-+ if (s12.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f2: got %d but expected %d\n", s12.f2, 2);
-+ return 1;
-+ }
-+ if (s12.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f3: got %d but expected %d\n", s12.f3, 3);
-+ return 1;
-+ }
-+ if (s12.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f4: got %d but expected %d\n", s12.f4, 4);
-+ return 1;
-+ }
-+ if (s12.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f5: got %d but expected %d\n", s12.f5, 5);
-+ return 1;
-+ }
-+ if (s12.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f6: got %d but expected %d\n", s12.f6, 6);
-+ return 1;
-+ }
-+ if (s12.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f7: got %d but expected %d\n", s12.f7, 7);
-+ return 1;
-+ }
-+ if (s12.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f8: got %d but expected %d\n", s12.f8, 8);
-+ return 1;
-+ }
-+ if (s12.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f9: got %d but expected %d\n", s12.f9, 9);
-+ return 1;
-+ }
-+ if (s12.f10 != 10) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f10: got %d but expected %d\n", s12.f10, 10);
-+ return 1;
-+ }
-+ if (s12.f11 != 11) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f11: got %d but expected %d\n", s12.f11, 11);
-+ return 1;
-+ }
-+ if (s12.f12 != 12) {
-+ fprintf(stderr, "mono_return_sbyte12 s12.f12: got %d but expected %d\n", s12.f12, 12);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13;
-+} sbyte13;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte13 (sbyte13 s13, int addend) {
-+ if (s13.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f1: got %d but expected %d\n", s13.f1, 1);
-+ return 1;
-+ }
-+ if (s13.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f2: got %d but expected %d\n", s13.f2, 2);
-+ return 1;
-+ }
-+ if (s13.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f3: got %d but expected %d\n", s13.f3, 3);
-+ return 1;
-+ }
-+ if (s13.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f4: got %d but expected %d\n", s13.f4, 4);
-+ return 1;
-+ }
-+ if (s13.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f5: got %d but expected %d\n", s13.f5, 5);
-+ return 1;
-+ }
-+ if (s13.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f6: got %d but expected %d\n", s13.f6, 6);
-+ return 1;
-+ }
-+ if (s13.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f7: got %d but expected %d\n", s13.f7, 7);
-+ return 1;
-+ }
-+ if (s13.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f8: got %d but expected %d\n", s13.f8, 8);
-+ return 1;
-+ }
-+ if (s13.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f9: got %d but expected %d\n", s13.f9, 9);
-+ return 1;
-+ }
-+ if (s13.f10 != 10) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f10: got %d but expected %d\n", s13.f10, 10);
-+ return 1;
-+ }
-+ if (s13.f11 != 11) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f11: got %d but expected %d\n", s13.f11, 11);
-+ return 1;
-+ }
-+ if (s13.f12 != 12) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f12: got %d but expected %d\n", s13.f12, 12);
-+ return 1;
-+ }
-+ if (s13.f13 != 13) {
-+ fprintf(stderr, "mono_return_sbyte13 s13.f13: got %d but expected %d\n", s13.f13, 13);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14;
-+} sbyte14;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte14 (sbyte14 s14, int addend) {
-+ if (s14.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f1: got %d but expected %d\n", s14.f1, 1);
-+ return 1;
-+ }
-+ if (s14.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f2: got %d but expected %d\n", s14.f2, 2);
-+ return 1;
-+ }
-+ if (s14.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f3: got %d but expected %d\n", s14.f3, 3);
-+ return 1;
-+ }
-+ if (s14.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f4: got %d but expected %d\n", s14.f4, 4);
-+ return 1;
-+ }
-+ if (s14.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f5: got %d but expected %d\n", s14.f5, 5);
-+ return 1;
-+ }
-+ if (s14.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f6: got %d but expected %d\n", s14.f6, 6);
-+ return 1;
-+ }
-+ if (s14.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f7: got %d but expected %d\n", s14.f7, 7);
-+ return 1;
-+ }
-+ if (s14.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f8: got %d but expected %d\n", s14.f8, 8);
-+ return 1;
-+ }
-+ if (s14.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f9: got %d but expected %d\n", s14.f9, 9);
-+ return 1;
-+ }
-+ if (s14.f10 != 10) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f10: got %d but expected %d\n", s14.f10, 10);
-+ return 1;
-+ }
-+ if (s14.f11 != 11) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f11: got %d but expected %d\n", s14.f11, 11);
-+ return 1;
-+ }
-+ if (s14.f12 != 12) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f12: got %d but expected %d\n", s14.f12, 12);
-+ return 1;
-+ }
-+ if (s14.f13 != 13) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f13: got %d but expected %d\n", s14.f13, 13);
-+ return 1;
-+ }
-+ if (s14.f14 != 14) {
-+ fprintf(stderr, "mono_return_sbyte14 s14.f14: got %d but expected %d\n", s14.f14, 14);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15;
-+} sbyte15;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte15 (sbyte15 s15, int addend) {
-+ if (s15.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f1: got %d but expected %d\n", s15.f1, 1);
-+ return 1;
-+ }
-+ if (s15.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f2: got %d but expected %d\n", s15.f2, 2);
-+ return 1;
-+ }
-+ if (s15.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f3: got %d but expected %d\n", s15.f3, 3);
-+ return 1;
-+ }
-+ if (s15.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f4: got %d but expected %d\n", s15.f4, 4);
-+ return 1;
-+ }
-+ if (s15.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f5: got %d but expected %d\n", s15.f5, 5);
-+ return 1;
-+ }
-+ if (s15.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f6: got %d but expected %d\n", s15.f6, 6);
-+ return 1;
-+ }
-+ if (s15.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f7: got %d but expected %d\n", s15.f7, 7);
-+ return 1;
-+ }
-+ if (s15.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f8: got %d but expected %d\n", s15.f8, 8);
-+ return 1;
-+ }
-+ if (s15.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f9: got %d but expected %d\n", s15.f9, 9);
-+ return 1;
-+ }
-+ if (s15.f10 != 10) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f10: got %d but expected %d\n", s15.f10, 10);
-+ return 1;
-+ }
-+ if (s15.f11 != 11) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f11: got %d but expected %d\n", s15.f11, 11);
-+ return 1;
-+ }
-+ if (s15.f12 != 12) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f12: got %d but expected %d\n", s15.f12, 12);
-+ return 1;
-+ }
-+ if (s15.f13 != 13) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f13: got %d but expected %d\n", s15.f13, 13);
-+ return 1;
-+ }
-+ if (s15.f14 != 14) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f14: got %d but expected %d\n", s15.f14, 14);
-+ return 1;
-+ }
-+ if (s15.f15 != 15) {
-+ fprintf(stderr, "mono_return_sbyte15 s15.f15: got %d but expected %d\n", s15.f15, 15);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16;
-+} sbyte16;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte16 (sbyte16 s16, int addend) {
-+ if (s16.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f1: got %d but expected %d\n", s16.f1, 1);
-+ return 1;
-+ }
-+ if (s16.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f2: got %d but expected %d\n", s16.f2, 2);
-+ return 1;
-+ }
-+ if (s16.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f3: got %d but expected %d\n", s16.f3, 3);
-+ return 1;
-+ }
-+ if (s16.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f4: got %d but expected %d\n", s16.f4, 4);
-+ return 1;
-+ }
-+ if (s16.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f5: got %d but expected %d\n", s16.f5, 5);
-+ return 1;
-+ }
-+ if (s16.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f6: got %d but expected %d\n", s16.f6, 6);
-+ return 1;
-+ }
-+ if (s16.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f7: got %d but expected %d\n", s16.f7, 7);
-+ return 1;
-+ }
-+ if (s16.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f8: got %d but expected %d\n", s16.f8, 8);
-+ return 1;
-+ }
-+ if (s16.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f9: got %d but expected %d\n", s16.f9, 9);
-+ return 1;
-+ }
-+ if (s16.f10 != 10) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f10: got %d but expected %d\n", s16.f10, 10);
-+ return 1;
-+ }
-+ if (s16.f11 != 11) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f11: got %d but expected %d\n", s16.f11, 11);
-+ return 1;
-+ }
-+ if (s16.f12 != 12) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f12: got %d but expected %d\n", s16.f12, 12);
-+ return 1;
-+ }
-+ if (s16.f13 != 13) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f13: got %d but expected %d\n", s16.f13, 13);
-+ return 1;
-+ }
-+ if (s16.f14 != 14) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f14: got %d but expected %d\n", s16.f14, 14);
-+ return 1;
-+ }
-+ if (s16.f15 != 15) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f15: got %d but expected %d\n", s16.f15, 15);
-+ return 1;
-+ }
-+ if (s16.f16 != 16) {
-+ fprintf(stderr, "mono_return_sbyte16 s16.f16: got %d but expected %d\n", s16.f16, 16);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17;
-+} sbyte17;
-+
-+LIBTEST_API char STDCALL
-+mono_return_sbyte17 (sbyte17 s17, int addend) {
-+ if (s17.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f1: got %d but expected %d\n", s17.f1, 1);
-+ return 1;
-+ }
-+ if (s17.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f2: got %d but expected %d\n", s17.f2, 2);
-+ return 1;
-+ }
-+ if (s17.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f3: got %d but expected %d\n", s17.f3, 3);
-+ return 1;
-+ }
-+ if (s17.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f4: got %d but expected %d\n", s17.f4, 4);
-+ return 1;
-+ }
-+ if (s17.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f5: got %d but expected %d\n", s17.f5, 5);
-+ return 1;
-+ }
-+ if (s17.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f6: got %d but expected %d\n", s17.f6, 6);
-+ return 1;
-+ }
-+ if (s17.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f7: got %d but expected %d\n", s17.f7, 7);
-+ return 1;
-+ }
-+ if (s17.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f8: got %d but expected %d\n", s17.f8, 8);
-+ return 1;
-+ }
-+ if (s17.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f9: got %d but expected %d\n", s17.f9, 9);
-+ return 1;
-+ }
-+ if (s17.f10 != 10) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f10: got %d but expected %d\n", s17.f10, 10);
-+ return 1;
-+ }
-+ if (s17.f11 != 11) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f11: got %d but expected %d\n", s17.f11, 11);
-+ return 1;
-+ }
-+ if (s17.f12 != 12) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f12: got %d but expected %d\n", s17.f12, 12);
-+ return 1;
-+ }
-+ if (s17.f13 != 13) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f13: got %d but expected %d\n", s17.f13, 13);
-+ return 1;
-+ }
-+ if (s17.f14 != 14) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f14: got %d but expected %d\n", s17.f14, 14);
-+ return 1;
-+ }
-+ if (s17.f15 != 15) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f15: got %d but expected %d\n", s17.f15, 15);
-+ return 1;
-+ }
-+ if (s17.f16 != 16) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f16: got %d but expected %d\n", s17.f16, 16);
-+ return 1;
-+ }
-+ if (s17.f17 != 17) {
-+ fprintf(stderr, "mono_return_sbyte17 s17.f17: got %d but expected %d\n", s17.f17, 17);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ short f1;
-+} short1;
-+
-+LIBTEST_API short STDCALL
-+mono_return_short1 (short1 s1, int addend) {
-+ if (s1.f1 != 1) {
-+ fprintf(stderr, "mono_return_short1 s1.f1: got %d but expected %d\n", s1.f1, 1);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ short f1,f2;
-+} short2;
-+
-+LIBTEST_API short STDCALL
-+mono_return_short2 (short2 s2, int addend) {
-+ if (s2.f1 != 1) {
-+ fprintf(stderr, "mono_return_short2 s2.f1: got %d but expected %d\n", s2.f1, 1);
-+ return 1;
-+ }
-+ if (s2.f2 != 2) {
-+ fprintf(stderr, "mono_return_short2 s2.f2: got %d but expected %d\n", s2.f2, 2);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ short f1,f2,f3;
-+} short3;
-+
-+LIBTEST_API short STDCALL
-+mono_return_short3 (short3 s3, int addend) {
-+ if (s3.f1 != 1) {
-+ fprintf(stderr, "mono_return_short3 s3.f1: got %d but expected %d\n", s3.f1, 1);
-+ return 1;
-+ }
-+ if (s3.f2 != 2) {
-+ fprintf(stderr, "mono_return_short3 s3.f2: got %d but expected %d\n", s3.f2, 2);
-+ return 1;
-+ }
-+ if (s3.f3 != 3) {
-+ fprintf(stderr, "mono_return_short3 s3.f3: got %d but expected %d\n", s3.f3, 3);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ short f1,f2,f3,f4;
-+} short4;
-+
-+LIBTEST_API short STDCALL
-+mono_return_short4 (short4 s4, int addend) {
-+ if (s4.f1 != 1) {
-+ fprintf(stderr, "mono_return_short4 s4.f1: got %d but expected %d\n", s4.f1, 1);
-+ return 1;
-+ }
-+ if (s4.f2 != 2) {
-+ fprintf(stderr, "mono_return_short4 s4.f2: got %d but expected %d\n", s4.f2, 2);
-+ return 1;
-+ }
-+ if (s4.f3 != 3) {
-+ fprintf(stderr, "mono_return_short4 s4.f3: got %d but expected %d\n", s4.f3, 3);
-+ return 1;
-+ }
-+ if (s4.f4 != 4) {
-+ fprintf(stderr, "mono_return_short4 s4.f4: got %d but expected %d\n", s4.f4, 4);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ short f1,f2,f3,f4,f5;
-+} short5;
-+
-+LIBTEST_API short STDCALL
-+mono_return_short5 (short5 s5, int addend) {
-+ if (s5.f1 != 1) {
-+ fprintf(stderr, "mono_return_short5 s5.f1: got %d but expected %d\n", s5.f1, 1);
-+ return 1;
-+ }
-+ if (s5.f2 != 2) {
-+ fprintf(stderr, "mono_return_short5 s5.f2: got %d but expected %d\n", s5.f2, 2);
-+ return 1;
-+ }
-+ if (s5.f3 != 3) {
-+ fprintf(stderr, "mono_return_short5 s5.f3: got %d but expected %d\n", s5.f3, 3);
-+ return 1;
-+ }
-+ if (s5.f4 != 4) {
-+ fprintf(stderr, "mono_return_short5 s5.f4: got %d but expected %d\n", s5.f4, 4);
-+ return 1;
-+ }
-+ if (s5.f5 != 5) {
-+ fprintf(stderr, "mono_return_short5 s5.f5: got %d but expected %d\n", s5.f5, 5);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ short f1,f2,f3,f4,f5,f6;
-+} short6;
-+
-+LIBTEST_API short STDCALL
-+mono_return_short6 (short6 s6, int addend) {
-+ if (s6.f1 != 1) {
-+ fprintf(stderr, "mono_return_short6 s6.f1: got %d but expected %d\n", s6.f1, 1);
-+ return 1;
-+ }
-+ if (s6.f2 != 2) {
-+ fprintf(stderr, "mono_return_short6 s6.f2: got %d but expected %d\n", s6.f2, 2);
-+ return 1;
-+ }
-+ if (s6.f3 != 3) {
-+ fprintf(stderr, "mono_return_short6 s6.f3: got %d but expected %d\n", s6.f3, 3);
-+ return 1;
-+ }
-+ if (s6.f4 != 4) {
-+ fprintf(stderr, "mono_return_short6 s6.f4: got %d but expected %d\n", s6.f4, 4);
-+ return 1;
-+ }
-+ if (s6.f5 != 5) {
-+ fprintf(stderr, "mono_return_short6 s6.f5: got %d but expected %d\n", s6.f5, 5);
-+ return 1;
-+ }
-+ if (s6.f6 != 6) {
-+ fprintf(stderr, "mono_return_short6 s6.f6: got %d but expected %d\n", s6.f6, 6);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ short f1,f2,f3,f4,f5,f6,f7;
-+} short7;
-+
-+LIBTEST_API short STDCALL
-+mono_return_short7 (short7 s7, int addend) {
-+ if (s7.f1 != 1) {
-+ fprintf(stderr, "mono_return_short7 s7.f1: got %d but expected %d\n", s7.f1, 1);
-+ return 1;
-+ }
-+ if (s7.f2 != 2) {
-+ fprintf(stderr, "mono_return_short7 s7.f2: got %d but expected %d\n", s7.f2, 2);
-+ return 1;
-+ }
-+ if (s7.f3 != 3) {
-+ fprintf(stderr, "mono_return_short7 s7.f3: got %d but expected %d\n", s7.f3, 3);
-+ return 1;
-+ }
-+ if (s7.f4 != 4) {
-+ fprintf(stderr, "mono_return_short7 s7.f4: got %d but expected %d\n", s7.f4, 4);
-+ return 1;
-+ }
-+ if (s7.f5 != 5) {
-+ fprintf(stderr, "mono_return_short7 s7.f5: got %d but expected %d\n", s7.f5, 5);
-+ return 1;
-+ }
-+ if (s7.f6 != 6) {
-+ fprintf(stderr, "mono_return_short7 s7.f6: got %d but expected %d\n", s7.f6, 6);
-+ return 1;
-+ }
-+ if (s7.f7 != 7) {
-+ fprintf(stderr, "mono_return_short7 s7.f7: got %d but expected %d\n", s7.f7, 7);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ short f1,f2,f3,f4,f5,f6,f7,f8;
-+} short8;
-+
-+LIBTEST_API short STDCALL
-+mono_return_short8 (short8 s8, int addend) {
-+ if (s8.f1 != 1) {
-+ fprintf(stderr, "mono_return_short8 s8.f1: got %d but expected %d\n", s8.f1, 1);
-+ return 1;
-+ }
-+ if (s8.f2 != 2) {
-+ fprintf(stderr, "mono_return_short8 s8.f2: got %d but expected %d\n", s8.f2, 2);
-+ return 1;
-+ }
-+ if (s8.f3 != 3) {
-+ fprintf(stderr, "mono_return_short8 s8.f3: got %d but expected %d\n", s8.f3, 3);
-+ return 1;
-+ }
-+ if (s8.f4 != 4) {
-+ fprintf(stderr, "mono_return_short8 s8.f4: got %d but expected %d\n", s8.f4, 4);
-+ return 1;
-+ }
-+ if (s8.f5 != 5) {
-+ fprintf(stderr, "mono_return_short8 s8.f5: got %d but expected %d\n", s8.f5, 5);
-+ return 1;
-+ }
-+ if (s8.f6 != 6) {
-+ fprintf(stderr, "mono_return_short8 s8.f6: got %d but expected %d\n", s8.f6, 6);
-+ return 1;
-+ }
-+ if (s8.f7 != 7) {
-+ fprintf(stderr, "mono_return_short8 s8.f7: got %d but expected %d\n", s8.f7, 7);
-+ return 1;
-+ }
-+ if (s8.f8 != 8) {
-+ fprintf(stderr, "mono_return_short8 s8.f8: got %d but expected %d\n", s8.f8, 8);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ short f1,f2,f3,f4,f5,f6,f7,f8,f9;
-+} short9;
-+
-+LIBTEST_API short STDCALL
-+mono_return_short9 (short9 s9, int addend) {
-+ if (s9.f1 != 1) {
-+ fprintf(stderr, "mono_return_short9 s9.f1: got %d but expected %d\n", s9.f1, 1);
-+ return 1;
-+ }
-+ if (s9.f2 != 2) {
-+ fprintf(stderr, "mono_return_short9 s9.f2: got %d but expected %d\n", s9.f2, 2);
-+ return 1;
-+ }
-+ if (s9.f3 != 3) {
-+ fprintf(stderr, "mono_return_short9 s9.f3: got %d but expected %d\n", s9.f3, 3);
-+ return 1;
-+ }
-+ if (s9.f4 != 4) {
-+ fprintf(stderr, "mono_return_short9 s9.f4: got %d but expected %d\n", s9.f4, 4);
-+ return 1;
-+ }
-+ if (s9.f5 != 5) {
-+ fprintf(stderr, "mono_return_short9 s9.f5: got %d but expected %d\n", s9.f5, 5);
-+ return 1;
-+ }
-+ if (s9.f6 != 6) {
-+ fprintf(stderr, "mono_return_short9 s9.f6: got %d but expected %d\n", s9.f6, 6);
-+ return 1;
-+ }
-+ if (s9.f7 != 7) {
-+ fprintf(stderr, "mono_return_short9 s9.f7: got %d but expected %d\n", s9.f7, 7);
-+ return 1;
-+ }
-+ if (s9.f8 != 8) {
-+ fprintf(stderr, "mono_return_short9 s9.f8: got %d but expected %d\n", s9.f8, 8);
-+ return 1;
-+ }
-+ if (s9.f9 != 9) {
-+ fprintf(stderr, "mono_return_short9 s9.f9: got %d but expected %d\n", s9.f9, 9);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ int f1;
-+} int1;
-+
-+LIBTEST_API int STDCALL
-+mono_return_int1 (int1 s1, int addend) {
-+ if (s1.f1 != 1) {
-+ fprintf(stderr, "mono_return_int1 s1.f1: got %d but expected %d\n", s1.f1, 1);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ int f1,f2;
-+} int2;
-+
-+LIBTEST_API int STDCALL
-+mono_return_int2 (int2 s2, int addend) {
-+ if (s2.f1 != 1) {
-+ fprintf(stderr, "mono_return_int2 s2.f1: got %d but expected %d\n", s2.f1, 1);
-+ return 1;
-+ }
-+ if (s2.f2 != 2) {
-+ fprintf(stderr, "mono_return_int2 s2.f2: got %d but expected %d\n", s2.f2, 2);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ int f1,f2,f3;
-+} int3;
-+
-+LIBTEST_API int STDCALL
-+mono_return_int3 (int3 s3, int addend) {
-+ if (s3.f1 != 1) {
-+ fprintf(stderr, "mono_return_int3 s3.f1: got %d but expected %d\n", s3.f1, 1);
-+ return 1;
-+ }
-+ if (s3.f2 != 2) {
-+ fprintf(stderr, "mono_return_int3 s3.f2: got %d but expected %d\n", s3.f2, 2);
-+ return 1;
-+ }
-+ if (s3.f3 != 3) {
-+ fprintf(stderr, "mono_return_int3 s3.f3: got %d but expected %d\n", s3.f3, 3);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ int f1,f2,f3,f4;
-+} int4;
-+
-+LIBTEST_API int STDCALL
-+mono_return_int4 (int4 s4, int addend) {
-+ if (s4.f1 != 1) {
-+ fprintf(stderr, "mono_return_int4 s4.f1: got %d but expected %d\n", s4.f1, 1);
-+ return 1;
-+ }
-+ if (s4.f2 != 2) {
-+ fprintf(stderr, "mono_return_int4 s4.f2: got %d but expected %d\n", s4.f2, 2);
-+ return 1;
-+ }
-+ if (s4.f3 != 3) {
-+ fprintf(stderr, "mono_return_int4 s4.f3: got %d but expected %d\n", s4.f3, 3);
-+ return 1;
-+ }
-+ if (s4.f4 != 4) {
-+ fprintf(stderr, "mono_return_int4 s4.f4: got %d but expected %d\n", s4.f4, 4);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ int f1,f2,f3,f4,f5;
-+} int5;
-+
-+LIBTEST_API int STDCALL
-+mono_return_int5 (int5 s5, int addend) {
-+ if (s5.f1 != 1) {
-+ fprintf(stderr, "mono_return_int5 s5.f1: got %d but expected %d\n", s5.f1, 1);
-+ return 1;
-+ }
-+ if (s5.f2 != 2) {
-+ fprintf(stderr, "mono_return_int5 s5.f2: got %d but expected %d\n", s5.f2, 2);
-+ return 1;
-+ }
-+ if (s5.f3 != 3) {
-+ fprintf(stderr, "mono_return_int5 s5.f3: got %d but expected %d\n", s5.f3, 3);
-+ return 1;
-+ }
-+ if (s5.f4 != 4) {
-+ fprintf(stderr, "mono_return_int5 s5.f4: got %d but expected %d\n", s5.f4, 4);
-+ return 1;
-+ }
-+ if (s5.f5 != 5) {
-+ fprintf(stderr, "mono_return_int5 s5.f5: got %d but expected %d\n", s5.f5, 5);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ float f1;
-+} float1;
-+
-+LIBTEST_API float STDCALL
-+mono_return_float1 (float1 s1, int addend) {
-+ if (s1.f1 != 1) {
-+ fprintf(stderr, "mono_return_float1 s1.f1: got %f but expected %d\n", s1.f1, 1);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ float f1,f2;
-+} float2;
-+
-+LIBTEST_API float STDCALL
-+mono_return_float2 (float2 s2, int addend) {
-+ if (s2.f1 != 1) {
-+ fprintf(stderr, "mono_return_float2 s2.f1: got %f but expected %d\n", s2.f1, 1);
-+ return 1;
-+ }
-+ if (s2.f2 != 2) {
-+ fprintf(stderr, "mono_return_float2 s2.f2: got %f but expected %d\n", s2.f2, 2);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ float f1,f2,f3;
-+} float3;
-+
-+LIBTEST_API float STDCALL
-+mono_return_float3 (float3 s3, int addend) {
-+ if (s3.f1 != 1) {
-+ fprintf(stderr, "mono_return_float3 s3.f1: got %f but expected %d\n", s3.f1, 1);
-+ return 1;
-+ }
-+ if (s3.f2 != 2) {
-+ fprintf(stderr, "mono_return_float3 s3.f2: got %f but expected %d\n", s3.f2, 2);
-+ return 1;
-+ }
-+ if (s3.f3 != 3) {
-+ fprintf(stderr, "mono_return_float3 s3.f3: got %f but expected %d\n", s3.f3, 3);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ float f1,f2,f3,f4;
-+} float4;
-+
-+LIBTEST_API float STDCALL
-+mono_return_float4 (float4 s4, int addend) {
-+ if (s4.f1 != 1) {
-+ fprintf(stderr, "mono_return_float4 s4.f1: got %f but expected %d\n", s4.f1, 1);
-+ return 1;
-+ }
-+ if (s4.f2 != 2) {
-+ fprintf(stderr, "mono_return_float4 s4.f2: got %f but expected %d\n", s4.f2, 2);
-+ return 1;
-+ }
-+ if (s4.f3 != 3) {
-+ fprintf(stderr, "mono_return_float4 s4.f3: got %f but expected %d\n", s4.f3, 3);
-+ return 1;
-+ }
-+ if (s4.f4 != 4) {
-+ fprintf(stderr, "mono_return_float4 s4.f4: got %f but expected %d\n", s4.f4, 4);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ float f1,f2,f3,f4,f5;
-+} float5;
-+
-+LIBTEST_API float STDCALL
-+mono_return_float5 (float5 s5, int addend) {
-+ if (s5.f1 != 1) {
-+ fprintf(stderr, "mono_return_float5 s5.f1: got %f but expected %d\n", s5.f1, 1);
-+ return 1;
-+ }
-+ if (s5.f2 != 2) {
-+ fprintf(stderr, "mono_return_float5 s5.f2: got %f but expected %d\n", s5.f2, 2);
-+ return 1;
-+ }
-+ if (s5.f3 != 3) {
-+ fprintf(stderr, "mono_return_float5 s5.f3: got %f but expected %d\n", s5.f3, 3);
-+ return 1;
-+ }
-+ if (s5.f4 != 4) {
-+ fprintf(stderr, "mono_return_float5 s5.f4: got %f but expected %d\n", s5.f4, 4);
-+ return 1;
-+ }
-+ if (s5.f5 != 5) {
-+ fprintf(stderr, "mono_return_float5 s5.f5: got %f but expected %d\n", s5.f5, 5);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ float f1,f2,f3,f4,f5,f6;
-+} float6;
-+
-+LIBTEST_API float STDCALL
-+mono_return_float6 (float6 s6, int addend) {
-+ if (s6.f1 != 1) {
-+ fprintf(stderr, "mono_return_float6 s6.f1: got %f but expected %d\n", s6.f1, 1);
-+ return 1;
-+ }
-+ if (s6.f2 != 2) {
-+ fprintf(stderr, "mono_return_float6 s6.f2: got %f but expected %d\n", s6.f2, 2);
-+ return 1;
-+ }
-+ if (s6.f3 != 3) {
-+ fprintf(stderr, "mono_return_float6 s6.f3: got %f but expected %d\n", s6.f3, 3);
-+ return 1;
-+ }
-+ if (s6.f4 != 4) {
-+ fprintf(stderr, "mono_return_float6 s6.f4: got %f but expected %d\n", s6.f4, 4);
-+ return 1;
-+ }
-+ if (s6.f5 != 5) {
-+ fprintf(stderr, "mono_return_float6 s6.f5: got %f but expected %d\n", s6.f5, 5);
-+ return 1;
-+ }
-+ if (s6.f6 != 6) {
-+ fprintf(stderr, "mono_return_float6 s6.f6: got %f but expected %d\n", s6.f6, 6);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ float f1,f2,f3,f4,f5,f6,f7;
-+} float7;
-+
-+LIBTEST_API float STDCALL
-+mono_return_float7 (float7 s7, int addend) {
-+ if (s7.f1 != 1) {
-+ fprintf(stderr, "mono_return_float7 s7.f1: got %f but expected %d\n", s7.f1, 1);
-+ return 1;
-+ }
-+ if (s7.f2 != 2) {
-+ fprintf(stderr, "mono_return_float7 s7.f2: got %f but expected %d\n", s7.f2, 2);
-+ return 1;
-+ }
-+ if (s7.f3 != 3) {
-+ fprintf(stderr, "mono_return_float7 s7.f3: got %f but expected %d\n", s7.f3, 3);
-+ return 1;
-+ }
-+ if (s7.f4 != 4) {
-+ fprintf(stderr, "mono_return_float7 s7.f4: got %f but expected %d\n", s7.f4, 4);
-+ return 1;
-+ }
-+ if (s7.f5 != 5) {
-+ fprintf(stderr, "mono_return_float7 s7.f5: got %f but expected %d\n", s7.f5, 5);
-+ return 1;
-+ }
-+ if (s7.f6 != 6) {
-+ fprintf(stderr, "mono_return_float7 s7.f6: got %f but expected %d\n", s7.f6, 6);
-+ return 1;
-+ }
-+ if (s7.f7 != 7) {
-+ fprintf(stderr, "mono_return_float7 s7.f7: got %f but expected %d\n", s7.f7, 7);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ float f1,f2,f3,f4,f5,f6,f7,f8;
-+} float8;
-+
-+LIBTEST_API float STDCALL
-+mono_return_float8 (float8 s8, int addend) {
-+ if (s8.f1 != 1) {
-+ fprintf(stderr, "mono_return_float8 s8.f1: got %f but expected %d\n", s8.f1, 1);
-+ return 1;
-+ }
-+ if (s8.f2 != 2) {
-+ fprintf(stderr, "mono_return_float8 s8.f2: got %f but expected %d\n", s8.f2, 2);
-+ return 1;
-+ }
-+ if (s8.f3 != 3) {
-+ fprintf(stderr, "mono_return_float8 s8.f3: got %f but expected %d\n", s8.f3, 3);
-+ return 1;
-+ }
-+ if (s8.f4 != 4) {
-+ fprintf(stderr, "mono_return_float8 s8.f4: got %f but expected %d\n", s8.f4, 4);
-+ return 1;
-+ }
-+ if (s8.f5 != 5) {
-+ fprintf(stderr, "mono_return_float8 s8.f5: got %f but expected %d\n", s8.f5, 5);
-+ return 1;
-+ }
-+ if (s8.f6 != 6) {
-+ fprintf(stderr, "mono_return_float8 s8.f6: got %f but expected %d\n", s8.f6, 6);
-+ return 1;
-+ }
-+ if (s8.f7 != 7) {
-+ fprintf(stderr, "mono_return_float8 s8.f7: got %f but expected %d\n", s8.f7, 7);
-+ return 1;
-+ }
-+ if (s8.f8 != 8) {
-+ fprintf(stderr, "mono_return_float8 s8.f8: got %f but expected %d\n", s8.f8, 8);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ float f1,f2,f3,f4,f5,f6,f7,f8,f9;
-+} float9;
-+
-+LIBTEST_API float STDCALL
-+mono_return_float9 (float9 s9, int addend) {
-+ if (s9.f1 != 1) {
-+ fprintf(stderr, "mono_return_float9 s9.f1: got %f but expected %d\n", s9.f1, 1);
-+ return 1;
-+ }
-+ if (s9.f2 != 2) {
-+ fprintf(stderr, "mono_return_float9 s9.f2: got %f but expected %d\n", s9.f2, 2);
-+ return 1;
-+ }
-+ if (s9.f3 != 3) {
-+ fprintf(stderr, "mono_return_float9 s9.f3: got %f but expected %d\n", s9.f3, 3);
-+ return 1;
-+ }
-+ if (s9.f4 != 4) {
-+ fprintf(stderr, "mono_return_float9 s9.f4: got %f but expected %d\n", s9.f4, 4);
-+ return 1;
-+ }
-+ if (s9.f5 != 5) {
-+ fprintf(stderr, "mono_return_float9 s9.f5: got %f but expected %d\n", s9.f5, 5);
-+ return 1;
-+ }
-+ if (s9.f6 != 6) {
-+ fprintf(stderr, "mono_return_float9 s9.f6: got %f but expected %d\n", s9.f6, 6);
-+ return 1;
-+ }
-+ if (s9.f7 != 7) {
-+ fprintf(stderr, "mono_return_float9 s9.f7: got %f but expected %d\n", s9.f7, 7);
-+ return 1;
-+ }
-+ if (s9.f8 != 8) {
-+ fprintf(stderr, "mono_return_float9 s9.f8: got %f but expected %d\n", s9.f8, 8);
-+ return 1;
-+ }
-+ if (s9.f9 != 9) {
-+ fprintf(stderr, "mono_return_float9 s9.f9: got %f but expected %d\n", s9.f9, 9);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ double f1;
-+} double1;
-+
-+LIBTEST_API double STDCALL
-+mono_return_double1 (double1 s1, int addend) {
-+ if (s1.f1 != 1) {
-+ fprintf(stderr, "mono_return_double1 s1.f1: got %f but expected %d\n", s1.f1, 1);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ double f1,f2;
-+} double2;
-+
-+LIBTEST_API double STDCALL
-+mono_return_double2 (double2 s2, int addend) {
-+ if (s2.f1 != 1) {
-+ fprintf(stderr, "mono_return_double2 s2.f1: got %f but expected %d\n", s2.f1, 1);
-+ return 1;
-+ }
-+ if (s2.f2 != 2) {
-+ fprintf(stderr, "mono_return_double2 s2.f2: got %f but expected %d\n", s2.f2, 2);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ double f1,f2,f3;
-+} double3;
-+
-+LIBTEST_API double STDCALL
-+mono_return_double3 (double3 s3, int addend) {
-+ if (s3.f1 != 1) {
-+ fprintf(stderr, "mono_return_double3 s3.f1: got %f but expected %d\n", s3.f1, 1);
-+ return 1;
-+ }
-+ if (s3.f2 != 2) {
-+ fprintf(stderr, "mono_return_double3 s3.f2: got %f but expected %d\n", s3.f2, 2);
-+ return 1;
-+ }
-+ if (s3.f3 != 3) {
-+ fprintf(stderr, "mono_return_double3 s3.f3: got %f but expected %d\n", s3.f3, 3);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ double f1,f2,f3,f4;
-+} double4;
-+
-+LIBTEST_API double STDCALL
-+mono_return_double4 (double4 s4, int addend) {
-+ if (s4.f1 != 1) {
-+ fprintf(stderr, "mono_return_double4 s4.f1: got %f but expected %d\n", s4.f1, 1);
-+ return 1;
-+ }
-+ if (s4.f2 != 2) {
-+ fprintf(stderr, "mono_return_double4 s4.f2: got %f but expected %d\n", s4.f2, 2);
-+ return 1;
-+ }
-+ if (s4.f3 != 3) {
-+ fprintf(stderr, "mono_return_double4 s4.f3: got %f but expected %d\n", s4.f3, 3);
-+ return 1;
-+ }
-+ if (s4.f4 != 4) {
-+ fprintf(stderr, "mono_return_double4 s4.f4: got %f but expected %d\n", s4.f4, 4);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ double f1,f2,f3,f4,f5;
-+} double5;
-+
-+LIBTEST_API double STDCALL
-+mono_return_double5 (double5 s5, int addend) {
-+ if (s5.f1 != 1) {
-+ fprintf(stderr, "mono_return_double5 s5.f1: got %f but expected %d\n", s5.f1, 1);
-+ return 1;
-+ }
-+ if (s5.f2 != 2) {
-+ fprintf(stderr, "mono_return_double5 s5.f2: got %f but expected %d\n", s5.f2, 2);
-+ return 1;
-+ }
-+ if (s5.f3 != 3) {
-+ fprintf(stderr, "mono_return_double5 s5.f3: got %f but expected %d\n", s5.f3, 3);
-+ return 1;
-+ }
-+ if (s5.f4 != 4) {
-+ fprintf(stderr, "mono_return_double5 s5.f4: got %f but expected %d\n", s5.f4, 4);
-+ return 1;
-+ }
-+ if (s5.f5 != 5) {
-+ fprintf(stderr, "mono_return_double5 s5.f5: got %f but expected %d\n", s5.f5, 5);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ double f1,f2,f3,f4,f5,f6;
-+} double6;
-+
-+LIBTEST_API double STDCALL
-+mono_return_double6 (double6 s6, int addend) {
-+ if (s6.f1 != 1) {
-+ fprintf(stderr, "mono_return_double6 s6.f1: got %f but expected %d\n", s6.f1, 1);
-+ return 1;
-+ }
-+ if (s6.f2 != 2) {
-+ fprintf(stderr, "mono_return_double6 s6.f2: got %f but expected %d\n", s6.f2, 2);
-+ return 1;
-+ }
-+ if (s6.f3 != 3) {
-+ fprintf(stderr, "mono_return_double6 s6.f3: got %f but expected %d\n", s6.f3, 3);
-+ return 1;
-+ }
-+ if (s6.f4 != 4) {
-+ fprintf(stderr, "mono_return_double6 s6.f4: got %f but expected %d\n", s6.f4, 4);
-+ return 1;
-+ }
-+ if (s6.f5 != 5) {
-+ fprintf(stderr, "mono_return_double6 s6.f5: got %f but expected %d\n", s6.f5, 5);
-+ return 1;
-+ }
-+ if (s6.f6 != 6) {
-+ fprintf(stderr, "mono_return_double6 s6.f6: got %f but expected %d\n", s6.f6, 6);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ double f1,f2,f3,f4,f5,f6,f7;
-+} double7;
-+
-+LIBTEST_API double STDCALL
-+mono_return_double7 (double7 s7, int addend) {
-+ if (s7.f1 != 1) {
-+ fprintf(stderr, "mono_return_double7 s7.f1: got %f but expected %d\n", s7.f1, 1);
-+ return 1;
-+ }
-+ if (s7.f2 != 2) {
-+ fprintf(stderr, "mono_return_double7 s7.f2: got %f but expected %d\n", s7.f2, 2);
-+ return 1;
-+ }
-+ if (s7.f3 != 3) {
-+ fprintf(stderr, "mono_return_double7 s7.f3: got %f but expected %d\n", s7.f3, 3);
-+ return 1;
-+ }
-+ if (s7.f4 != 4) {
-+ fprintf(stderr, "mono_return_double7 s7.f4: got %f but expected %d\n", s7.f4, 4);
-+ return 1;
-+ }
-+ if (s7.f5 != 5) {
-+ fprintf(stderr, "mono_return_double7 s7.f5: got %f but expected %d\n", s7.f5, 5);
-+ return 1;
-+ }
-+ if (s7.f6 != 6) {
-+ fprintf(stderr, "mono_return_double7 s7.f6: got %f but expected %d\n", s7.f6, 6);
-+ return 1;
-+ }
-+ if (s7.f7 != 7) {
-+ fprintf(stderr, "mono_return_double7 s7.f7: got %f but expected %d\n", s7.f7, 7);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ double f1,f2,f3,f4,f5,f6,f7,f8;
-+} double8;
-+
-+LIBTEST_API double STDCALL
-+mono_return_double8 (double8 s8, int addend) {
-+ if (s8.f1 != 1) {
-+ fprintf(stderr, "mono_return_double8 s8.f1: got %f but expected %d\n", s8.f1, 1);
-+ return 1;
-+ }
-+ if (s8.f2 != 2) {
-+ fprintf(stderr, "mono_return_double8 s8.f2: got %f but expected %d\n", s8.f2, 2);
-+ return 1;
-+ }
-+ if (s8.f3 != 3) {
-+ fprintf(stderr, "mono_return_double8 s8.f3: got %f but expected %d\n", s8.f3, 3);
-+ return 1;
-+ }
-+ if (s8.f4 != 4) {
-+ fprintf(stderr, "mono_return_double8 s8.f4: got %f but expected %d\n", s8.f4, 4);
-+ return 1;
-+ }
-+ if (s8.f5 != 5) {
-+ fprintf(stderr, "mono_return_double8 s8.f5: got %f but expected %d\n", s8.f5, 5);
-+ return 1;
-+ }
-+ if (s8.f6 != 6) {
-+ fprintf(stderr, "mono_return_double8 s8.f6: got %f but expected %d\n", s8.f6, 6);
-+ return 1;
-+ }
-+ if (s8.f7 != 7) {
-+ fprintf(stderr, "mono_return_double8 s8.f7: got %f but expected %d\n", s8.f7, 7);
-+ return 1;
-+ }
-+ if (s8.f8 != 8) {
-+ fprintf(stderr, "mono_return_double8 s8.f8: got %f but expected %d\n", s8.f8, 8);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+typedef struct {
-+ double f1,f2,f3,f4,f5,f6,f7,f8,f9;
-+} double9;
-+
-+LIBTEST_API double STDCALL
-+mono_return_double9 (double9 s9, int addend) {
-+ if (s9.f1 != 1) {
-+ fprintf(stderr, "mono_return_double9 s9.f1: got %f but expected %d\n", s9.f1, 1);
-+ return 1;
-+ }
-+ if (s9.f2 != 2) {
-+ fprintf(stderr, "mono_return_double9 s9.f2: got %f but expected %d\n", s9.f2, 2);
-+ return 1;
-+ }
-+ if (s9.f3 != 3) {
-+ fprintf(stderr, "mono_return_double9 s9.f3: got %f but expected %d\n", s9.f3, 3);
-+ return 1;
-+ }
-+ if (s9.f4 != 4) {
-+ fprintf(stderr, "mono_return_double9 s9.f4: got %f but expected %d\n", s9.f4, 4);
-+ return 1;
-+ }
-+ if (s9.f5 != 5) {
-+ fprintf(stderr, "mono_return_double9 s9.f5: got %f but expected %d\n", s9.f5, 5);
-+ return 1;
-+ }
-+ if (s9.f6 != 6) {
-+ fprintf(stderr, "mono_return_double9 s9.f6: got %f but expected %d\n", s9.f6, 6);
-+ return 1;
-+ }
-+ if (s9.f7 != 7) {
-+ fprintf(stderr, "mono_return_double9 s9.f7: got %f but expected %d\n", s9.f7, 7);
-+ return 1;
-+ }
-+ if (s9.f8 != 8) {
-+ fprintf(stderr, "mono_return_double9 s9.f8: got %f but expected %d\n", s9.f8, 8);
-+ return 1;
-+ }
-+ if (s9.f9 != 9) {
-+ fprintf(stderr, "mono_return_double9 s9.f9: got %f but expected %d\n", s9.f9, 9);
-+ return 1;
-+ }
-+ return 2*addend;
-+}
-+
-+
-+
-+// WDS debug
-+// To use add:
-+// [DllImport ("libtest", EntryPoint="ppc_dbg")]
-+// public static extern void ppc_dbg ();
-+// Then just call:
-+// ppc_dbg();
-+LIBTEST_API void STDCALL
-+ppc_dbg(void)
-+{
-+ static int cnt=0;
-+ ++cnt;
-+ printf("@#@#@# ppc_dbg call#%d\n", cnt);
-+ return;
-+}
-+// WDS debug
-+
-Index: mono-4.2.1/mono/tests/pinvoke_ppcc.cs
-===================================================================
---- /dev/null
-+++ mono-4.2.1/mono/tests/pinvoke_ppcc.cs
-@@ -0,0 +1,426 @@
-+// pinvoke_ppcc.cs - Test cases for passing structures to and and returning
-+// structures from functions. This particular test is for
-+// structures consisting wholy of 1 byte fields.
-+//
-+// The Power ABI version 2 allows for special parameter
-+// passing and returning optimizations for certain
-+// structures of homogenous composition (like all ints).
-+// This set of tests checks all the possible combinations
-+// that use the special parm/return rules and one beyond.
-+//
-+// Bill Seurer (seurer@linux.vnet.ibm.com)
-+//
-+// (C) {Copyright holder}
-+//
-+
-+using System;
-+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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [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);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct sbyte16 {
-+ public sbyte f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16;
-+ }
-+ // 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);
-+ [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;
-+ }
-+
-+ // This structure has nested structures within it but they are
-+ // homogenous and thus should still use the special rules.
-+ public struct sbyte16_nested1 {
-+ public sbyte f1;
-+ };
-+ public struct sbyte16_nested2 {
-+ public sbyte f16;
-+ };
-+ [DllImport ("libtest", EntryPoint="mono_return_sbyte16_nested")]
-+ public static extern sbyte16_nested mono_return_sbyte16_nested (sbyte16_nested s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct sbyte16_nested {
-+ public sbyte16_nested1 nested1;
-+ public sbyte f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15;
-+ public sbyte16_nested2 nested2;
-+ }
-+
-+ public static int Main (string[] args) {
-+
-+ 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);
-+ 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);
-+ return 1;
-+ }
-+
-+ 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);
-+ return 1;
-+ }
-+
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte5 s5;
-+ s5.f1 = 1;
-+ s5.f2 = 2;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte6 s6;
-+ s6.f1 = 1;
-+ s6.f2 = 2;
-+ s6.f3 = 3;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte7 s7;
-+ s7.f1 = 1;
-+ s7.f2 = 2;
-+ s7.f3 = 3;
-+ s7.f4 = 4;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte8 s8;
-+ s8.f1 = 1;
-+ s8.f2 = 2;
-+ s8.f3 = 3;
-+ s8.f4 = 4;
-+ s8.f5 = 5;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte9 s9;
-+ s9.f1 = 1;
-+ s9.f2 = 2;
-+ s9.f3 = 3;
-+ s9.f4 = 4;
-+ s9.f5 = 5;
-+ s9.f6 = 6;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte10 s10;
-+ s10.f1 = 1;
-+ s10.f2 = 2;
-+ s10.f3 = 3;
-+ s10.f4 = 4;
-+ s10.f5 = 5;
-+ s10.f6 = 6;
-+ s10.f7 = 7;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte11 s11;
-+ s11.f1 = 1;
-+ s11.f2 = 2;
-+ s11.f3 = 3;
-+ s11.f4 = 4;
-+ s11.f5 = 5;
-+ s11.f6 = 6;
-+ s11.f7 = 7;
-+ s11.f8 = 8;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte12 s12;
-+ s12.f1 = 1;
-+ s12.f2 = 2;
-+ s12.f3 = 3;
-+ s12.f4 = 4;
-+ s12.f5 = 5;
-+ s12.f6 = 6;
-+ s12.f7 = 7;
-+ s12.f8 = 8;
-+ s12.f9 = 9;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte13 s13;
-+ s13.f1 = 1;
-+ s13.f2 = 2;
-+ s13.f3 = 3;
-+ s13.f4 = 4;
-+ s13.f5 = 5;
-+ s13.f6 = 6;
-+ s13.f7 = 7;
-+ s13.f8 = 8;
-+ s13.f9 = 9;
-+ s13.f10 = 10;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte14 s14;
-+ s14.f1 = 1;
-+ s14.f2 = 2;
-+ s14.f3 = 3;
-+ s14.f4 = 4;
-+ s14.f5 = 5;
-+ s14.f6 = 6;
-+ s14.f7 = 7;
-+ s14.f8 = 8;
-+ s14.f9 = 9;
-+ s14.f10 = 10;
-+ s14.f11 = 11;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte15 s15;
-+ s15.f1 = 1;
-+ s15.f2 = 2;
-+ s15.f3 = 3;
-+ s15.f4 = 4;
-+ s15.f5 = 5;
-+ s15.f6 = 6;
-+ s15.f7 = 7;
-+ s15.f8 = 8;
-+ s15.f9 = 9;
-+ s15.f10 = 10;
-+ s15.f11 = 11;
-+ s15.f12 = 12;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte16 s16;
-+ s16.f1 = 1;
-+ s16.f2 = 2;
-+ s16.f3 = 3;
-+ s16.f4 = 4;
-+ s16.f5 = 5;
-+ s16.f6 = 6;
-+ s16.f7 = 7;
-+ s16.f8 = 8;
-+ s16.f9 = 9;
-+ s16.f10 = 10;
-+ s16.f11 = 11;
-+ s16.f12 = 12;
-+ s16.f13 = 13;
-+ 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);
-+ return 1;
-+ }
-+
-+ sbyte17 s17;
-+ s17.f1 = 1;
-+ s17.f2 = 2;
-+ s17.f3 = 3;
-+ s17.f4 = 4;
-+ s17.f5 = 5;
-+ s17.f6 = 6;
-+ s17.f7 = 7;
-+ s17.f8 = 8;
-+ s17.f9 = 9;
-+ s17.f10 = 10;
-+ s17.f11 = 11;
-+ s17.f12 = 12;
-+ s17.f13 = 13;
-+ s17.f14 = 14;
-+ 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);
-+ return 1;
-+ }
-+
-+
-+ return 0;
-+ } // end Main
-+} // end class Test_sbyte
-+
-+
-+
-+
-+
-Index: mono-4.2.1/mono/tests/pinvoke_ppcd.cs
-===================================================================
---- /dev/null
-+++ mono-4.2.1/mono/tests/pinvoke_ppcd.cs
-@@ -0,0 +1,215 @@
-+// pinvoke_ppcd.cs - Test cases for passing structures to and and returning
-+// structures from functions. This particular test is for
-+// structures consisting wholy of 8 byte fields.
-+//
-+// The Power ABI version 2 allows for special parameter
-+// passing and returning optimizations for certain
-+// structures of homogenous composition (like all ints).
-+// This set of tests checks all the possible combinations
-+// that use the special parm/return rules and one beyond.
-+//
-+// Bill Seurer (seurer@linux.vnet.ibm.com)
-+//
-+// (C) {Copyright holder}
-+//
-+
-+using System;
-+using System.Runtime.InteropServices;
-+
-+
-+public class Test_double {
-+
-+ [DllImport ("libtest", EntryPoint="mono_return_double1")]
-+ public static extern double mono_return_double1 (double1 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double1 {
-+ public double f1;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_double2")]
-+ public static extern double mono_return_double2 (double2 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double2 {
-+ public double f1,f2;
-+ }
-+ // This structure is 1 element too large to use the special return
-+ // rules.
-+ [DllImport ("libtest", EntryPoint="mono_return_double3")]
-+ public static extern double mono_return_double3 (double3 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double3 {
-+ public double f1,f2,f3;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_double4")]
-+ public static extern double mono_return_double4 (double4 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double4 {
-+ public double f1,f2,f3,f4;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_double5")]
-+ public static extern double mono_return_double5 (double5 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double5 {
-+ public double f1,f2,f3,f4,f5;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_double6")]
-+ public static extern double mono_return_double6 (double6 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double6 {
-+ public double f1,f2,f3,f4,f5,f6;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_double7")]
-+ public static extern double mono_return_double7 (double7 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double7 {
-+ public double f1,f2,f3,f4,f5,f6,f7;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_double8")]
-+ public static extern double mono_return_double8 (double8 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double8 {
-+ public double f1,f2,f3,f4,f5,f6,f7,f8;
-+ }
-+ // This structure is 1 element too large to use the special parameter
-+ // passing rules.
-+ [DllImport ("libtest", EntryPoint="mono_return_double9")]
-+ public static extern double mono_return_double9 (double9 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double9 {
-+ public double f1,f2,f3,f4,f5,f6,f7,f8,f9;
-+ }
-+
-+ // This structure has nested structures within it but they are
-+ // homogenous and thus should still use the special rules.
-+ public struct double2_nested1 {
-+ public double f1;
-+ };
-+ public struct double2_nested2 {
-+ public double f2;
-+ };
-+ [DllImport ("libtest", EntryPoint="mono_return_double2_nested")]
-+ public static extern double2_nested mono_return_double2_nested (double2_nested s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct double2_nested {
-+ public double2_nested1 nested1;
-+ public double2_nested2 nested2;
-+ }
-+
-+ public static int Main (string[] args) {
-+
-+ double1 s1;
-+ s1.f1 = 1;
-+ double retval1 = mono_return_double1(s1, 9);
-+ if (retval1 != 2*9) {
-+ Console.WriteLine(" double1 retval1: got {0} but expected {1}", retval1, 2*9);
-+ return 1;
-+ }
-+
-+ double2 s2;
-+ s2.f1 = 1;
-+ s2.f2 = 2;
-+ double retval2 = mono_return_double2(s2, 9);
-+ if (retval2 != 2*9) {
-+ Console.WriteLine(" double2 retval2: got {0} but expected {1}", retval2, 2*9);
-+ return 1;
-+ }
-+
-+ double3 s3;
-+ s3.f1 = 1;
-+ s3.f2 = 2;
-+ s3.f3 = 3;
-+ double retval3 = mono_return_double3(s3, 9);
-+ if (retval3 != 2*9) {
-+ Console.WriteLine(" double3 retval3: got {0} but expected {1}", retval3, 2*9);
-+ return 1;
-+ }
-+
-+ double4 s4;
-+ s4.f1 = 1;
-+ s4.f2 = 2;
-+ s4.f3 = 3;
-+ s4.f4 = 4;
-+ double retval4 = mono_return_double4(s4, 9);
-+ if (retval4 != 2*9) {
-+ Console.WriteLine(" double4 retval4: got {0} but expected {1}", retval4, 2*9);
-+ return 1;
-+ }
-+
-+ double5 s5;
-+ s5.f1 = 1;
-+ s5.f2 = 2;
-+ s5.f3 = 3;
-+ s5.f4 = 4;
-+ s5.f5 = 5;
-+ double retval5 = mono_return_double5(s5, 9);
-+ if (retval5 != 2*9) {
-+ Console.WriteLine(" double5 retval5: got {0} but expected {1}", retval5, 2*9);
-+ return 1;
-+ }
-+
-+ double6 s6;
-+ s6.f1 = 1;
-+ s6.f2 = 2;
-+ s6.f3 = 3;
-+ s6.f4 = 4;
-+ s6.f5 = 5;
-+ s6.f6 = 6;
-+ double retval6 = mono_return_double6(s6, 9);
-+ if (retval6 != 2*9) {
-+ Console.WriteLine(" double6 retval6: got {0} but expected {1}", retval6, 2*9);
-+ return 1;
-+ }
-+
-+ double7 s7;
-+ s7.f1 = 1;
-+ s7.f2 = 2;
-+ s7.f3 = 3;
-+ s7.f4 = 4;
-+ s7.f5 = 5;
-+ s7.f6 = 6;
-+ s7.f7 = 7;
-+ double retval7 = mono_return_double7(s7, 9);
-+ if (retval7 != 2*9) {
-+ Console.WriteLine(" double7 retval7: got {0} but expected {1}", retval7, 2*9);
-+ return 1;
-+ }
-+
-+ double8 s8;
-+ s8.f1 = 1;
-+ s8.f2 = 2;
-+ s8.f3 = 3;
-+ s8.f4 = 4;
-+ s8.f5 = 5;
-+ s8.f6 = 6;
-+ s8.f7 = 7;
-+ s8.f8 = 8;
-+ double retval8 = mono_return_double8(s8, 9);
-+ if (retval8 != 2*9) {
-+ Console.WriteLine(" double8 retval8: got {0} but expected {1}", retval8, 2*9);
-+ return 1;
-+ }
-+
-+ double9 s9;
-+ s9.f1 = 1;
-+ s9.f2 = 2;
-+ s9.f3 = 3;
-+ s9.f4 = 4;
-+ s9.f5 = 5;
-+ s9.f6 = 6;
-+ s9.f7 = 7;
-+ s9.f8 = 8;
-+ s9.f9 = 9;
-+ double retval9 = mono_return_double9(s9, 9);
-+ if (retval9 != 2*9) {
-+ Console.WriteLine(" double9 retval9: got {0} but expected {1}", retval9, 2*9);
-+ return 1;
-+ }
-+
-+
-+ return 0;
-+ } // end Main
-+} // end class Test_double
-+
-+
-+
-+
-+
-Index: mono-4.2.1/mono/tests/pinvoke_ppcf.cs
-===================================================================
---- /dev/null
-+++ mono-4.2.1/mono/tests/pinvoke_ppcf.cs
-@@ -0,0 +1,216 @@
-+// pinvoke_ppcf.cs - Test cases for passing structures to and and returning
-+// structures from functions. This particular test is for
-+// structures consisting wholy of 4 byte fields.
-+//
-+// The Power ABI version 2 allows for special parameter
-+// passing and returning optimizations for certain
-+// structures of homogenous composition (like all ints).
-+// This set of tests checks all the possible combinations
-+// that use the special parm/return rules and one beyond.
-+//
-+// Bill Seurer (seurer@linux.vnet.ibm.com)
-+//
-+// (C) {Copyright holder}
-+//
-+
-+using System;
-+using System.Runtime.InteropServices;
-+
-+
-+public class Test_float {
-+
-+ [DllImport ("libtest", EntryPoint="mono_return_float1")]
-+ public static extern float mono_return_float1 (float1 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float1 {
-+ public float f1;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_float2")]
-+ public static extern float mono_return_float2 (float2 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float2 {
-+ public float f1,f2;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_float3")]
-+ public static extern float mono_return_float3 (float3 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float3 {
-+ public float f1,f2,f3;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_float4")]
-+ public static extern float mono_return_float4 (float4 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float4 {
-+ public float f1,f2,f3,f4;
-+ }
-+ // This structure is 1 element too large to use the special return
-+ // rules.
-+ [DllImport ("libtest", EntryPoint="mono_return_float5")]
-+ public static extern float mono_return_float5 (float5 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float5 {
-+ public float f1,f2,f3,f4,f5;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_float6")]
-+ public static extern float mono_return_float6 (float6 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float6 {
-+ public float f1,f2,f3,f4,f5,f6;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_float7")]
-+ public static extern float mono_return_float7 (float7 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float7 {
-+ public float f1,f2,f3,f4,f5,f6,f7;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_float8")]
-+ public static extern float mono_return_float8 (float8 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float8 {
-+ public float f1,f2,f3,f4,f5,f6,f7,f8;
-+ }
-+ // This structure is 1 element too large to use the special parameter
-+ // passing rules.
-+ [DllImport ("libtest", EntryPoint="mono_return_float9")]
-+ public static extern float mono_return_float9 (float9 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float9 {
-+ public float f1,f2,f3,f4,f5,f6,f7,f8,f9;
-+ }
-+
-+ // This structure has nested structures within it but they are
-+ // homogenous and thus should still use the special rules.
-+ public struct float4_nested1 {
-+ public float f1;
-+ };
-+ public struct float4_nested2 {
-+ public float f4;
-+ };
-+ [DllImport ("libtest", EntryPoint="mono_return_float4_nested")]
-+ public static extern float4_nested mono_return_float4_nested (float4_nested s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct float4_nested {
-+ public float4_nested1 nested1;
-+ public float f2,f3;
-+ public float4_nested2 nested2;
-+ }
-+
-+ public static int Main (string[] args) {
-+
-+ float1 s1;
-+ s1.f1 = 1;
-+ float retval1 = mono_return_float1(s1, 906);
-+ if (retval1 != 2*906) {
-+ Console.WriteLine(" float1 retval1: got {0} but expected {1}", retval1, 2*906);
-+ return 1;
-+ }
-+
-+ float2 s2;
-+ s2.f1 = 1;
-+ s2.f2 = 2;
-+ float retval2 = mono_return_float2(s2, 906);
-+ if (retval2 != 2*906) {
-+ Console.WriteLine(" float2 retval2: got {0} but expected {1}", retval2, 2*906);
-+ return 1;
-+ }
-+
-+ float3 s3;
-+ s3.f1 = 1;
-+ s3.f2 = 2;
-+ s3.f3 = 3;
-+ float retval3 = mono_return_float3(s3, 906);
-+ if (retval3 != 2*906) {
-+ Console.WriteLine(" float3 retval3: got {0} but expected {1}", retval3, 2*906);
-+ return 1;
-+ }
-+
-+ float4 s4;
-+ s4.f1 = 1;
-+ s4.f2 = 2;
-+ s4.f3 = 3;
-+ s4.f4 = 4;
-+ float retval4 = mono_return_float4(s4, 906);
-+ if (retval4 != 2*906) {
-+ Console.WriteLine(" float4 retval4: got {0} but expected {1}", retval4, 2*906);
-+ return 1;
-+ }
-+
-+ float5 s5;
-+ s5.f1 = 1;
-+ s5.f2 = 2;
-+ s5.f3 = 3;
-+ s5.f4 = 4;
-+ s5.f5 = 5;
-+ float retval5 = mono_return_float5(s5, 906);
-+ if (retval5 != 2*906) {
-+ Console.WriteLine(" float5 retval5: got {0} but expected {1}", retval5, 2*906);
-+ return 1;
-+ }
-+
-+ float6 s6;
-+ s6.f1 = 1;
-+ s6.f2 = 2;
-+ s6.f3 = 3;
-+ s6.f4 = 4;
-+ s6.f5 = 5;
-+ s6.f6 = 6;
-+ float retval6 = mono_return_float6(s6, 906);
-+ if (retval6 != 2*906) {
-+ Console.WriteLine(" float6 retval6: got {0} but expected {1}", retval6, 2*906);
-+ return 1;
-+ }
-+
-+ float7 s7;
-+ s7.f1 = 1;
-+ s7.f2 = 2;
-+ s7.f3 = 3;
-+ s7.f4 = 4;
-+ s7.f5 = 5;
-+ s7.f6 = 6;
-+ s7.f7 = 7;
-+ float retval7 = mono_return_float7(s7, 906);
-+ if (retval7 != 2*906) {
-+ Console.WriteLine(" float7 retval7: got {0} but expected {1}", retval7, 2*906);
-+ return 1;
-+ }
-+
-+ float8 s8;
-+ s8.f1 = 1;
-+ s8.f2 = 2;
-+ s8.f3 = 3;
-+ s8.f4 = 4;
-+ s8.f5 = 5;
-+ s8.f6 = 6;
-+ s8.f7 = 7;
-+ s8.f8 = 8;
-+ float retval8 = mono_return_float8(s8, 906);
-+ if (retval8 != 2*906) {
-+ Console.WriteLine(" float8 retval8: got {0} but expected {1}", retval8, 2*906);
-+ return 1;
-+ }
-+
-+ float9 s9;
-+ s9.f1 = 1;
-+ s9.f2 = 2;
-+ s9.f3 = 3;
-+ s9.f4 = 4;
-+ s9.f5 = 5;
-+ s9.f6 = 6;
-+ s9.f7 = 7;
-+ s9.f8 = 8;
-+ s9.f9 = 9;
-+ float retval9 = mono_return_float9(s9, 906);
-+ if (retval9 != 2*906) {
-+ Console.WriteLine(" float9 retval9: got {0} but expected {1}", retval9, 2*906);
-+ return 1;
-+ }
-+
-+
-+ return 0;
-+ } // end Main
-+} // end class Test_float
-+
-+
-+
-+
-+
-Index: mono-4.2.1/mono/tests/pinvoke_ppci.cs
-===================================================================
---- /dev/null
-+++ mono-4.2.1/mono/tests/pinvoke_ppci.cs
-@@ -0,0 +1,132 @@
-+// pinvoke_ppci.cs - Test cases for passing structures to and and returning
-+// structures from functions. This particular test is for
-+// structures consisting wholy of 4 byte fields.
-+//
-+// The Power ABI version 2 allows for special parameter
-+// passing and returning optimizations for certain
-+// structures of homogenous composition (like all ints).
-+// This set of tests checks all the possible combinations
-+// that use the special parm/return rules and one beyond.
-+//
-+// Bill Seurer (seurer@linux.vnet.ibm.com)
-+//
-+// (C) {Copyright holder}
-+//
-+
-+using System;
-+using System.Runtime.InteropServices;
-+
-+
-+public class Test_int {
-+
-+ [DllImport ("libtest", EntryPoint="mono_return_int1")]
-+ public static extern int mono_return_int1 (int1 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct int1 {
-+ public int f1;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_int2")]
-+ public static extern int mono_return_int2 (int2 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct int2 {
-+ public int f1,f2;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_int3")]
-+ public static extern int mono_return_int3 (int3 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct int3 {
-+ public int f1,f2,f3;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_int4")]
-+ public static extern int mono_return_int4 (int4 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct int4 {
-+ public int f1,f2,f3,f4;
-+ }
-+ // This structure is 1 element too large to use the special return
-+ // rules.
-+ [DllImport ("libtest", EntryPoint="mono_return_int5")]
-+ public static extern int mono_return_int5 (int5 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct int5 {
-+ public int f1,f2,f3,f4,f5;
-+ }
-+
-+ // This structure has nested structures within it but they are
-+ // homogenous and thus should still use the special rules.
-+ public struct int4_nested1 {
-+ public int f1;
-+ };
-+ public struct int4_nested2 {
-+ public int f4;
-+ };
-+ [DllImport ("libtest", EntryPoint="mono_return_int4_nested")]
-+ public static extern int4_nested mono_return_int4_nested (int4_nested s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct int4_nested {
-+ public int4_nested1 nested1;
-+ public int f2,f3;
-+ public int4_nested2 nested2;
-+ }
-+
-+ public static int Main (string[] args) {
-+
-+ int1 s1;
-+ s1.f1 = 1;
-+ int retval1 = mono_return_int1(s1, 906);
-+ if (retval1 != 2*906) {
-+ Console.WriteLine(" int1 retval1: got {0} but expected {1}", retval1, 2*906);
-+ return 1;
-+ }
-+
-+ int2 s2;
-+ s2.f1 = 1;
-+ s2.f2 = 2;
-+ int retval2 = mono_return_int2(s2, 906);
-+ if (retval2 != 2*906) {
-+ Console.WriteLine(" int2 retval2: got {0} but expected {1}", retval2, 2*906);
-+ return 1;
-+ }
-+
-+ int3 s3;
-+ s3.f1 = 1;
-+ s3.f2 = 2;
-+ s3.f3 = 3;
-+ int retval3 = mono_return_int3(s3, 906);
-+ if (retval3 != 2*906) {
-+ Console.WriteLine(" int3 retval3: got {0} but expected {1}", retval3, 2*906);
-+ return 1;
-+ }
-+
-+ int4 s4;
-+ s4.f1 = 1;
-+ s4.f2 = 2;
-+ s4.f3 = 3;
-+ s4.f4 = 4;
-+ int retval4 = mono_return_int4(s4, 906);
-+ if (retval4 != 2*906) {
-+ Console.WriteLine(" int4 retval4: got {0} but expected {1}", retval4, 2*906);
-+ return 1;
-+ }
-+
-+ int5 s5;
-+ s5.f1 = 1;
-+ s5.f2 = 2;
-+ s5.f3 = 3;
-+ s5.f4 = 4;
-+ s5.f5 = 5;
-+ int retval5 = mono_return_int5(s5, 906);
-+ if (retval5 != 2*906) {
-+ Console.WriteLine(" int5 retval5: got {0} but expected {1}", retval5, 2*906);
-+ return 1;
-+ }
-+
-+
-+ return 0;
-+ } // end Main
-+} // end class Test_int
-+
-+
-+
-+
-+
-Index: mono-4.2.1/mono/tests/pinvoke_ppcs.cs
-===================================================================
---- /dev/null
-+++ mono-4.2.1/mono/tests/pinvoke_ppcs.cs
-@@ -0,0 +1,214 @@
-+// pinvoke_ppcs.cs - Test cases for passing structures to and and returning
-+// structures from functions. This particular test is for
-+// structures consisting wholy of 2 byte fields.
-+//
-+// The Power ABI version 2 allows for special parameter
-+// passing and returning optimizations for certain
-+// structures of homogenous composition (like all ints).
-+// This set of tests checks all the possible combinations
-+// that use the special parm/return rules and one beyond.
-+//
-+// Bill Seurer (seurer@linux.vnet.ibm.com)
-+//
-+// (C) {Copyright holder}
-+//
-+
-+using System;
-+using System.Runtime.InteropServices;
-+
-+
-+public class Test_short {
-+
-+ [DllImport ("libtest", EntryPoint="mono_return_short1")]
-+ public static extern short mono_return_short1 (short1 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short1 {
-+ public short f1;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_short2")]
-+ public static extern short mono_return_short2 (short2 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short2 {
-+ public short f1,f2;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_short3")]
-+ public static extern short mono_return_short3 (short3 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short3 {
-+ public short f1,f2,f3;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_short4")]
-+ public static extern short mono_return_short4 (short4 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short4 {
-+ public short f1,f2,f3,f4;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_short5")]
-+ public static extern short mono_return_short5 (short5 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short5 {
-+ public short f1,f2,f3,f4,f5;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_short6")]
-+ public static extern short mono_return_short6 (short6 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short6 {
-+ public short f1,f2,f3,f4,f5,f6;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_short7")]
-+ public static extern short mono_return_short7 (short7 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short7 {
-+ public short f1,f2,f3,f4,f5,f6,f7;
-+ }
-+ [DllImport ("libtest", EntryPoint="mono_return_short8")]
-+ public static extern short mono_return_short8 (short8 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short8 {
-+ public short f1,f2,f3,f4,f5,f6,f7,f8;
-+ }
-+ // This structure is 1 element too large to use the special return
-+ // rules.
-+ [DllImport ("libtest", EntryPoint="mono_return_short9")]
-+ public static extern short mono_return_short9 (short9 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short9 {
-+ public short f1,f2,f3,f4,f5,f6,f7,f8,f9;
-+ }
-+
-+ // This structure has nested structures within it but they are
-+ // homogenous and thus should still use the special rules.
-+ public struct short8_nested1 {
-+ public short f1;
-+ };
-+ public struct short8_nested2 {
-+ public short f8;
-+ };
-+ [DllImport ("libtest", EntryPoint="mono_return_short8_nested")]
-+ public static extern short8_nested mono_return_short8_nested (short8_nested s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public struct short8_nested {
-+ public short8_nested1 nested1;
-+ public short f2,f3,f4,f5,f6,f7;
-+ public short8_nested2 nested2;
-+ }
-+
-+ public static int Main (string[] args) {
-+
-+ short1 s1;
-+ s1.f1 = 1;
-+ short retval1 = mono_return_short1(s1, 90);
-+ if (retval1 != 2*90) {
-+ Console.WriteLine(" short1 retval1: got {0} but expected {1}", retval1, 2*90);
-+ return 1;
-+ }
-+
-+ short2 s2;
-+ s2.f1 = 1;
-+ s2.f2 = 2;
-+ short retval2 = mono_return_short2(s2, 90);
-+ if (retval2 != 2*90) {
-+ Console.WriteLine(" short2 retval2: got {0} but expected {1}", retval2, 2*90);
-+ return 1;
-+ }
-+
-+ short3 s3;
-+ s3.f1 = 1;
-+ s3.f2 = 2;
-+ s3.f3 = 3;
-+ short retval3 = mono_return_short3(s3, 90);
-+ if (retval3 != 2*90) {
-+ Console.WriteLine(" short3 retval3: got {0} but expected {1}", retval3, 2*90);
-+ return 1;
-+ }
-+
-+ short4 s4;
-+ s4.f1 = 1;
-+ s4.f2 = 2;
-+ s4.f3 = 3;
-+ s4.f4 = 4;
-+ short retval4 = mono_return_short4(s4, 90);
-+ if (retval4 != 2*90) {
-+ Console.WriteLine(" short4 retval4: got {0} but expected {1}", retval4, 2*90);
-+ return 1;
-+ }
-+
-+ short5 s5;
-+ s5.f1 = 1;
-+ s5.f2 = 2;
-+ s5.f3 = 3;
-+ s5.f4 = 4;
-+ s5.f5 = 5;
-+ short retval5 = mono_return_short5(s5, 90);
-+ if (retval5 != 2*90) {
-+ Console.WriteLine(" short5 retval5: got {0} but expected {1}", retval5, 2*90);
-+ return 1;
-+ }
-+
-+ short6 s6;
-+ s6.f1 = 1;
-+ s6.f2 = 2;
-+ s6.f3 = 3;
-+ s6.f4 = 4;
-+ s6.f5 = 5;
-+ s6.f6 = 6;
-+ short retval6 = mono_return_short6(s6, 90);
-+ if (retval6 != 2*90) {
-+ Console.WriteLine(" short6 retval6: got {0} but expected {1}", retval6, 2*90);
-+ return 1;
-+ }
-+
-+ short7 s7;
-+ s7.f1 = 1;
-+ s7.f2 = 2;
-+ s7.f3 = 3;
-+ s7.f4 = 4;
-+ s7.f5 = 5;
-+ s7.f6 = 6;
-+ s7.f7 = 7;
-+ short retval7 = mono_return_short7(s7, 90);
-+ if (retval7 != 2*90) {
-+ Console.WriteLine(" short7 retval7: got {0} but expected {1}", retval7, 2*90);
-+ return 1;
-+ }
-+
-+ short8 s8;
-+ s8.f1 = 1;
-+ s8.f2 = 2;
-+ s8.f3 = 3;
-+ s8.f4 = 4;
-+ s8.f5 = 5;
-+ s8.f6 = 6;
-+ s8.f7 = 7;
-+ s8.f8 = 8;
-+ short retval8 = mono_return_short8(s8, 90);
-+ if (retval8 != 2*90) {
-+ Console.WriteLine(" short8 retval8: got {0} but expected {1}", retval8, 2*90);
-+ return 1;
-+ }
-+
-+ short9 s9;
-+ s9.f1 = 1;
-+ s9.f2 = 2;
-+ s9.f3 = 3;
-+ s9.f4 = 4;
-+ s9.f5 = 5;
-+ s9.f6 = 6;
-+ s9.f7 = 7;
-+ s9.f8 = 8;
-+ s9.f9 = 9;
-+ short retval9 = mono_return_short9(s9, 90);
-+ if (retval9 != 2*90) {
-+ Console.WriteLine(" short9 retval9: got {0} but expected {1}", retval9, 2*90);
-+ return 1;
-+ }
-+
-+
-+ return 0;
-+ } // end Main
-+} // end class Test_short
-+
-+
-+
-+
-+
diff --git a/mono-4.2.2.30.tar.bz2 b/mono-4.2.2.30.tar.bz2
deleted file mode 100644
index 66f1ae6..0000000
--- a/mono-4.2.2.30.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:57858cd033be9915d7abdc5158c1faae8fa05757c3b7117cab3d703aa696c56b
-size 78365827
diff --git a/mono-4.3.2.467.tar.bz2 b/mono-4.3.2.467.tar.bz2
new file mode 100644
index 0000000..a708b02
--- /dev/null
+++ b/mono-4.3.2.467.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2949e06b7301a4d9315f622bff318b77f0dc5cdd7a0f9bc086239e5fdb0c87c5
+size 84929059
diff --git a/mono-core.changes b/mono-core.changes
index e91fcdc..c16e23f 100644
--- a/mono-core.changes
+++ b/mono-core.changes
@@ -1,3 +1,29 @@
+-------------------------------------------------------------------
+Sun Apr 17 12:43:59 UTC 2016 - mailaender@opensuse.org
+
+- update to 4.3.2 (service release), bugfixes:
+ * bxc#36116 - [System.Web.Services] Unix paths fix
+ * bxc#37079 - [jit] Fix the support for gshared types in mini_emit_initobj ()
+ * bxc#37273 - [llvm] Disable support for nested clauses.
+ * bxc#38012 - [sgen] Fix register scanning on ARM
+ * bxc#37846 - [jit] Fix the reference type detection for Volatile:Read/Write ()
+- remove mono-nunit-default-runtime-4.5.patch
+ (has been accepted upstream: https://github.com/mono/mono/pull/1917)
+- remove mono-un-revoke-fix-in-BNC-144655.patch
+ (upstreamed: https://github.com/mono/mono/commit/cdb098617af97c6af76e9048af62e8e5e778b5b6)
+- remove strncat-process-c.patch (code line was removed upstream)
+- remove set of PPC patches included upstream:
+ * ppc_instruction_length_of_atomic_add_i4_is_28.patch
+ * fix_atomic_add_i4_support_for_32bit_ppc.patch
+ * basic_changes_powerpc_be.patch
+ * ppc_add_monocontext_and_async_callback.patch
+ * fix_passing_struct_parms_per_elf_abiv2.patch
+ * update_elf_abiv2_testcases.patch
+ * partial_sharing_false_4_powerpc.patch
+ * fix_exception_when_reading_from_timezone_file.patch
+- remove outdated authors.patch as it was removed on purpose
+ https://github.com/mono/mono/commit/b39e7e9d78938362417b2c966d204da60952c7b4
+
-------------------------------------------------------------------
Sun Jan 31 16:30:56 UTC 2016 - mailaender@opensuse.org
@@ -161,7 +187,7 @@ Mon Mar 23 22:04:47 UTC 2015 - dvaleev@suse.com
- Cleanup patch numbers
- Rebase ppc64 patches based on upstream (commits are 173eaf1dfaf,
- 7e056cd346c, PR#1479) - 0001-ppc64le-fixes.patch bsc#923558
+ 7e056cd346c, PR#1479) - 0001-ppc64le-fixes.patch bsc#923558
- drop mono-core-ppc64le-callreg.diff
- drop mono-core-ppc64le-swr11r12.diff
- mono-core-ppc64le.diff
@@ -595,7 +621,7 @@ Mon Mar 10 17:20:57 CET 2014 - ro@suse.de
- Add support for ppc64le, fix build warnings, the blocksize
changes in mono-core-ppc64le.diff should also help ppc64 proper.
Added patches:
- * mono-core-parallel-build.diff
+ * mono-core-parallel-build.diff
* mono-core-ppc64le-callreg.diff
* mono-core-ppc64le-swr11r12.diff
* mono-core-ppc64le.diff
@@ -1128,7 +1154,7 @@ Tue Apr 16 14:28:23 UTC 2013 - mailaender@opensuse.org
+ Optimize Activator.CreateInstance ().
+ Optimize icalls in FullAOT code.
+ Implement Volatile.Read/Write and Interlocked.MemoryBarrier ().
- + Optimized unmanaged to managed string conversion.
+ + Optimized unmanaged to managed string conversion.
-------------------------------------------------------------------
Tue Apr 16 10:30:14 UTC 2013 - idonmez@suse.com
@@ -1231,7 +1257,7 @@ Fri Oct 5 12:02:10 UTC 2012 - dvaleev@suse.com
-------------------------------------------------------------------
Sat Jul 21 23:08:36 UTC 2012 - dvaleev@suse.com
-- fix ppc build
+- fix ppc build
-------------------------------------------------------------------
Fri Dec 2 13:31:57 UTC 2011 - agraf@suse.de
@@ -1333,7 +1359,7 @@ Mon Mar 1 17:12:06 CET 2010 - ro@suse.de
- try to prevent crash on exit in gmcs
call mono_alloc_special_static_data_free before closing
- assemblies
+ assemblies
-------------------------------------------------------------------
Tue Jan 26 22:30:50 UTC 2010 - ajorgensen@novell.com
@@ -1452,13 +1478,13 @@ Tue Aug 26 09:33:09 MDT 2008 - ajorgensen@novell.com
* Big Arrays
* Mono now supports 64-bit indexed arrays on 64-bit systems. Although this is permitted by the ECMA standard, this today is a unique feature of Mono as .NET on Windows does not support 64-bit array indexes. This code was developed by Luis Ortiz at Interactive Supercomputing and integrated by Rodrigo Kumpera.
* This feature is useful for developers that needs to manipulate very large data sets with C# arrays.
- * To use this feature, you must configure Mono with --enable-big-arrays.
+ * To use this feature, you must configure Mono with --enable-big-arrays.
-------------------------------------------------------------------
Mon May 26 22:12:33 CEST 2008 - crrodriguez@suse.de
- add missing zlib-devel BuildRequires this made mono to
- use a bundled copy a zlib.
+ use a bundled copy a zlib.
-------------------------------------------------------------------
Mon May 12 10:13:19 CEST 2008 - aj@suse.de
@@ -1473,7 +1499,7 @@ Tue May 6 13:34:26 CEST 2008 - schwab@suse.de
-------------------------------------------------------------------
Fri Apr 25 10:23:23 MST 2008 - wberrier@suse.de
-- Make sure x11 headers/libs are installed so that
+- Make sure x11 headers/libs are installed so that
/etc/mono/config has correct link to libX11.so.6.
Fixes (bnc#339712)
@@ -1482,17 +1508,17 @@ Tue Apr 22 10:23:23 MST 2008 - wberrier@suse.de
- Update to 1.9.1 (bugfix release)
-G_DECL fixes
- -Microsoft.CSharp: Emit bodyless getters and setters for abstract
+ -Microsoft.CSharp: Emit bodyless getters and setters for abstract
properties
-ASP.NET: Don't output a date header from System.Web
-Fix an issue with Groupwise WSDL
- -Mono.Mozilla: Support more than one browser widget per
+ -Mono.Mozilla: Support more than one browser widget per
application Windows.Forms
-Winforms:
-Finish implementation for EventsTab and PropertiesTab
-Fix keyboard layout issue
-MenuAPI fixes
- -System.Design: Cache editor widget instead of creating it each
+ -System.Design: Cache editor widget instead of creating it each
time
-System.Text: Fix possible integer overflow
-System.Net.Mail: Fix filename handling
@@ -1573,7 +1599,7 @@ Mon Jan 14 13:23:23 MST 2008 - wberrier@suse.de
-Updated verifier
-Implementation of CoreCLR security
-More C# compiler 3.0 completion
- -Mono 1.2.6 can now be used as an SDK for creating Silverlight
+ -Mono 1.2.6 can now be used as an SDK for creating Silverlight
1.1 applications on all platforms.
-Support for the PE32+ assembly file format
-Managed allocations support
@@ -1581,7 +1607,7 @@ Mon Jan 14 13:23:23 MST 2008 - wberrier@suse.de
-System.Net.Mail improvements
-Fixed SSL/TLS thread-synchronization
(for LDAPS over multiple threads)
- -Novell.Directory.Ldap synchronized with the Novell's CSHARP
+ -Novell.Directory.Ldap synchronized with the Novell's CSHARP
LDAP SDK (version 2.1.8)
-------------------------------------------------------------------
@@ -1627,7 +1653,7 @@ Fri Aug 3 17:40:00 CEST 2007 - wberrier@suse.de
-IL verifier implemented
-HttpWebRequest can now be used with X.509 client certificates
-Added support X.509 Client Certificate Chains for SSL/TLS
- -Fixed SSL/TLS not to require exportable private keys for
+ -Fixed SSL/TLS not to require exportable private keys for
client certificates
-Implemented import and export of DSA keys CryptoAPI-compatible
BLOB (2.0)
@@ -1635,9 +1661,9 @@ Fri Aug 3 17:40:00 CEST 2007 - wberrier@suse.de
-Regioninfo support
-Optimized dictionary type
-New TimeZone implementation
- -new 2.0 Winform controls: MaskedTextBox, ToolStripPainter,
+ -new 2.0 Winform controls: MaskedTextBox, ToolStripPainter,
ToolStripSystemRenderer
- -Mono Cairo API has been updated, it will now expose Cairo
+ -Mono Cairo API has been updated, it will now expose Cairo
1.2 API entry points.
- Don't use 64bit libs on ppc64 in find-requires (runtime is 32bit,
@@ -1662,7 +1688,7 @@ Tue Jul 05 20:03:53 MST 2007 - wberrier@novell.com
Wed Jun 20 13:08:33 CEST 2007 - ro@suse.de
- removed requires on specific release in mono-complete for
- mono-basic (not a subpackage of mono-core anymore)
+ mono-basic (not a subpackage of mono-core anymore)
-------------------------------------------------------------------
Tue Jun 15 18:18:53 MST 2007 - wberrier@novell.com
@@ -1682,16 +1708,16 @@ Tue Jun 5 15:18:53 MST 2007 - wberrier@novell.com
- Update filelists
- Update to 1.2.4
-680 new methods implemented.
- -290 stubs that used to throw NotImplemented exceptions have been
+ -290 stubs that used to throw NotImplemented exceptions have been
implemented.
- -43 methods flagged with "to-do" have been implemented.
+ -43 methods flagged with "to-do" have been implemented.
-Fixed HandleRef support
-Ability to disable shared mem support
-Mostly complete ASP 2.0 support (webparts is missing)
-asp.net 2.0 performance tripled
-C# 3.0 compiler support
- -Mono.DataConvert: fixed implementation of the broken
- System.BitConverter
+ -Mono.DataConvert: fixed implementation of the broken
+ System.BitConverter
-System.Windows.Forms
-150 bugfixes
-performance fixes
@@ -1707,7 +1733,7 @@ Tue Jun 5 15:18:53 MST 2007 - wberrier@novell.com
-Path.GetTempFileName now returns a file with 600 perms
-Fixed HMACSHA384 and HMACSHA512 to use a 128 bits block size
-Signcode tool now support password-protected PVK files
- -CryptoStream.Write is now closer to MS behaviour and requires
+ -CryptoStream.Write is now closer to MS behaviour and requires
less memory
-Fixed endian issue in RIPEMD160
-installvst: new tool to install VisualStudio source packages
@@ -1739,31 +1765,31 @@ Wed Feb 28 18:55:52 CET 2007 - wberrier@suse.de
- Turn off sigaltstack, as it's not safe (Requested by Paolo)
- Remove obsolete patches
-- Update to 1.2.3.1 (Various runtime and winforms crashers
+- Update to 1.2.3.1 (Various runtime and winforms crashers
as well as a zmd crasher)
- 1.2.3 Changes:
- 1,933 missing methods were implemented.
- - 164 methods with pending implementations were fixed.
+ - 164 methods with pending implementations were fixed.
- Improved Winforms 2.0 Support, with additional controls, and
reduced memory usage
- API complete ASP.NET 2.0 implementation (except for WebParts).
- System.Media implementation
- Supports SOAP 1.2 as well as the WS-BasicProfile 1.1 checker
- Many fixes to the XmlSerializer as well to support the new features
- - The mkbundle tool now allows the machine.config file to be embedded
+ - The mkbundle tool now allows the machine.config file to be embedded
as well
- - HttpListener now also support HTTPS, to configure the certificates
+ - HttpListener now also support HTTPS, to configure the certificates
use the httpcfg tool
- - Completed the support for the 2.0 updates to the API in
+ - Completed the support for the 2.0 updates to the API in
System.Net.Sockets
- System.Drawing.SystemIcons are now implemented
- - Authenticode: Signcode now generates valid signature on PE
- files with extra data (e.g. debug information, installers)
+ - Authenticode: Signcode now generates valid signature on PE
+ files with extra data (e.g. debug information, installers)
and for file length that aren't multiple of eight
- - SSL/TLS: Fix negotiation cache and added configurable cache
+ - SSL/TLS: Fix negotiation cache and added configurable cache
timeout using the MONO_TLS_SESSION_CACHE_TIMEOUT environment variable
- - XML Signature and XML Encryption: several bug fixes, it now it
+ - XML Signature and XML Encryption: several bug fixes, it now it
support exclusive canonicalization (needed for ongoing Olive work)
- Support for inherited key parameters in DSA certificates
- Support for DSA certificates in PKCS#12 files
@@ -1795,7 +1821,7 @@ Sat Dec 2 05:00:07 CET 2006 - wberrier@suse.de
- Update to 1.2.2 (Fate #301111)
-Serious bug fix in compiler (anonymous methods)
-Additional 2.0 APIs implemented for Windows.Forms
- -Removal of many incorrect MonoTODOs and implemented many methods
+ -Removal of many incorrect MonoTODOs and implemented many methods
that were throwing not implemented exceptions
- Changes in 1.2.1
@@ -1809,7 +1835,7 @@ Sat Dec 2 05:00:07 CET 2006 - wberrier@suse.de
-Process launching supports supports open special files in addition
to launch programs (ie: xdg-open, gnome-open, or kfmclient)
-System.Drawing UTF8 to UCS2 conversion fixed
- -2.0 api updates to X.509 related classes
+ -2.0 api updates to X.509 related classes
- Changes in 1.2
-Serialization Callbacks
@@ -1854,7 +1880,7 @@ Fri Sep 1 20:12:52 CEST 2006 - wberrier@suse.de
- Update to 1.1.17.1 - Minor bugfix update
- Fix HttpListener, it was failing with a few post operations
-- mono-service is now installed into the GAC, the recent changes
+- mono-service is now installed into the GAC, the recent changes
broke applications that created new AppDomains
- Fix a race condition on array new
@@ -1868,50 +1894,50 @@ Tue Aug 29 21:02:47 CEST 2006 - wberrier@suse.de
- Update to 1.1.17
- Windows.Forms: Printing is now supported.
- - Basic COM support has been integrated.
- - FileSystem will now use inotify directly on systems that
- support it without having to go through an external library like
+ - Basic COM support has been integrated.
+ - FileSystem will now use inotify directly on systems that
+ support it without having to go through an external library like
FAM or Gamin [Gonzalo Paniagua]
- - 2.0 support for asynchronous reads and writes from the
+ - 2.0 support for asynchronous reads and writes from the
Process class is now supported [Gonzalo]
- Fxied Loading as a Shared Library
- Mono.Cairo bindings now supports a DirectFB surface now [Alp Toker]
- Process now support the async io handling [Gonzalo Paniagua]
- String.Normalize is included [Atsushi Enomoto]
- - ADO.NET 2.0 updates, included an implementation for
+ - ADO.NET 2.0 updates, included an implementation for
SqlConnection.GetSchema (Nagappan, Nagappan).
- Registry Updated to the 2.0 API. [Miguel de Icaza]
- - Support for splitting the registry across user and system level
+ - Support for splitting the registry across user and system level
settings. [Gert Driesen]
- - Support for X.509 client certificates
+ - Support for X.509 client certificates
[Hubert Fongarnand, Sebastien Pouliot]
- - SN accepts password-protected PKCS#12/PFX files to strongname
- assemblies. This feature is enabled in both 1.x and 2.0 profiles
+ - SN accepts password-protected PKCS#12/PFX files to strongname
+ assemblies. This feature is enabled in both 1.x and 2.0 profiles
[Sebastien Pouliot]
- - CodeDOM JScriptCodeProvider code JavaScript code is now
+ - CodeDOM JScriptCodeProvider code JavaScript code is now
included [Akiramei]
- - An EventLog implementation is available on both Unix and
+ - An EventLog implementation is available on both Unix and
Windows by setting MONO_EVENTLOG_TYPE
- - COM Interop: Basic support for Runtime Callable Wrappers
+ - COM Interop: Basic support for Runtime Callable Wrappers
(RCWs) [Jon Chambers]
- - Sqlite now exposes a Version property to detect which underlying
+ - Sqlite now exposes a Version property to detect which underlying
database is available (2.x or 3.x) [Joshua Tauberer]
- - Mono.Posix now features an abstract Unix end point in addition
+ - Mono.Posix now features an abstract Unix end point in addition
to Unix End Points [Alp Toker].
- - Fixed XmlSchemaSet and XmlSchemaCollection problem across
+ - Fixed XmlSchemaSet and XmlSchemaCollection problem across
multiple namespaces [Atsushi Enomoto]
- Important Bug fixs:
- - Dynamic linking of Mono is now possible in applications
+ - Dynamic linking of Mono is now possible in applications
that were using the TLS (open office) [Zoltan Varga]
- - Newly created AppDomains no longer inherit the list of
+ - Newly created AppDomains no longer inherit the list of
loaded assemblies from the main domain [Lluis Sánchez]
- - A number of missing pieces of System.IO.Ports have been
- implemented (ReadChar, ReadLine, BytesToRead, BytesToWrite,
+ - A number of missing pieces of System.IO.Ports have been
+ implemented (ReadChar, ReadLine, BytesToRead, BytesToWrite,
ReadTo, return USB tty devices) [Miguel de Icaza]
- - ASP.NET Cache will now check dependencies (79002)
- [Gonzalo Paniagua]
- - Updated the Posgress data bindings to RC3
+ - ASP.NET Cache will now check dependencies (79002)
+ [Gonzalo Paniagua]
+ - Updated the Posgress data bindings to RC3
[Francisco Figueiredo].
- --------
@@ -1921,7 +1947,7 @@ Tue Aug 29 21:02:47 CEST 2006 - wberrier@suse.de
- Add sigaltstack configure option for performance
- Update to 1.1.16.1
-- Sending the QUIT signal to a running Mono process will produce
+- Sending the QUIT signal to a running Mono process will produce
a stack trace of each thread
- Updated Boehm garbage collector
- Large file uploads are now supported
@@ -1931,13 +1957,13 @@ Tue Aug 29 21:02:47 CEST 2006 - wberrier@suse.de
- Fixed some possible deadlocks while negotiating
- basic implementation of System.Transactions
- implemented assembly unloading when an appdomain is released
-- C# Compiler bug fixes:
+- C# Compiler bug fixes:
- #78020, #77916, #77961, #78048, #77966
- Improved the generated output for array initialization
- #77958, #77929, #77954
- #77002
- XMLSerialization implemented for XmlSchemas
-- improved performance of Int32.ToString()
+- improved performance of Int32.ToString()
- major updates to System.Windows.Forms and System.Drawing
- inline optimization enabled by default
- Long standing debugging line numbers bug fixed
@@ -1958,8 +1984,8 @@ to fix bnc #179080 (zmd issue on s390x)
-------------------------------------------------------------------
Mon May 15 22:41:12 CEST 2006 - wberrier@suse.de
-- Revert change to mono-find-provides (59882) so that Mono apps will
- not have to depend on being able to find dependent assemblies in
+- Revert change to mono-find-provides (59882) so that Mono apps will
+ not have to depend on being able to find dependent assemblies in
the gac.
-------------------------------------------------------------------
@@ -1970,7 +1996,7 @@ Thu May 11 01:07:58 CEST 2006 - wberrier@suse.de
-Assembler:
-Fix assembler bug that tried to sign netmodules.
-Assembler will now report a bug if two identical labels are declared
- on the same methods
+ on the same methods
-On 2.0, support the "property" directive.
-ASP.NET:
@@ -2080,9 +2106,9 @@ bytes (iFolder CPU consumption issue).
-HttpWebRequest: fix close semantics (77753)
-UpdClient: fix IPV6 family check (77689).
-System.Data fixes: Fixed 77557, 77776 and enabled tests
-that were previously disables, add new tests.
+that were previously disables, add new tests.
-System.Data: Fixed endianess bugs reported on PPC and
-SPARC.
+SPARC.
-Runtime: Updates for LocalDataStoreSlot to prevent the
Beagle leak from happening; Fixed crasher bug in class
libraries (77772). Fixes 77504 in generic libraries; Fix
@@ -2093,7 +2119,7 @@ Handle null in Equals (77700); backport memory corruption fix
(no bug number);
-Tracing: Fix crash in StringBuilders when tracing (77848);
disable output always 77706.
- -S390x: Use long-displacement if the CPU supports it.
+ -S390x: Use long-displacement if the CPU supports it.
-Patch from Tambet at ZenWorks team to reduce memory
consumption in remoting, shaves a few megabytes on RPC calls.
-System.Drawing/Windows.Forms: Bring code from trunk (these
@@ -2101,7 +2127,7 @@ are unsupported libraries).
-Mono.Security: several fixes to the async stream handling
in SSL: implement a ClientSessionCache, redo the async
processing of requests as they were previously hanging iFolder
-(77663, 67711). There were no changes to the crypto code.
+(77663, 67711). There were no changes to the crypto code.
-Upgraded C5 test suite to 1.0 release from upstream.
-Updated debugger API.
-Added tests for bugs fixed.
@@ -2124,7 +2150,7 @@ Wed Mar 1 03:13:10 CET 2006 - wberrier@suse.de
-------------------------------------------------------------------
Sat Feb 18 14:41:07 CET 2006 - ro@suse.de
-- use wildcards in filelist (.mdb files moved to debuginfo package)
+- use wildcards in filelist (.mdb files moved to debuginfo package)
-------------------------------------------------------------------
Thu Feb 16 22:53:40 CET 2006 - wberrier@suse.de
@@ -2134,7 +2160,7 @@ Thu Feb 16 22:53:40 CET 2006 - wberrier@suse.de
-------------------------------------------------------------------
Thu Jan 26 17:54:16 CET 2006 - ro@suse.de
-- warn if installing on s390/G5
+- warn if installing on s390/G5
-------------------------------------------------------------------
Wed Jan 25 21:38:23 CET 2006 - mls@suse.de
@@ -2187,7 +2213,7 @@ Tue Dec 20 02:48:31 CET 2005 - wberrier@suse.de
-------------------------------------------------------------------
Fri Dec 16 15:32:16 CET 2005 - ro@suse.de
-- add an explicit cast on ppc for InterlockedCompareExchangePointer
+- add an explicit cast on ppc for InterlockedCompareExchangePointer
-------------------------------------------------------------------
Thu Dec 15 21:36:32 CET 2005 - wberrier@suse.de
@@ -2220,12 +2246,12 @@ Thu Oct 20 17:58:16 CEST 2005 - ro@suse.de
Thu Oct 13 01:53:59 CEST 2005 - ro@suse.de
- take fix for gacutil problem from SVN
-- remove workaround hack from specfile
+- remove workaround hack from specfile
-------------------------------------------------------------------
Wed Oct 12 18:24:25 CEST 2005 - ro@suse.de
-- fix some lib64 issues
+- fix some lib64 issues
-------------------------------------------------------------------
Wed Oct 12 02:41:24 CEST 2005 - wberrier@suse.de
@@ -2235,7 +2261,7 @@ Wed Oct 12 02:41:24 CEST 2005 - wberrier@suse.de
-------------------------------------------------------------------
Mon Sep 26 15:22:27 CEST 2005 - ro@suse.de
-- fix build on x86_64
+- fix build on x86_64
- move mono-nunit.pc to mono-nunit package
-------------------------------------------------------------------
@@ -2251,7 +2277,7 @@ Fri Sep 16 20:46:58 CEST 2005 - wberrier@suse.de
-------------------------------------------------------------------
Fri Sep 9 01:12:59 CEST 2005 - ro@suse.de
-- fix build on 9.1+
+- fix build on 9.1+
-------------------------------------------------------------------
Tue Aug 23 23:10:13 CEST 2005 - wberrier@suse.de
@@ -2261,7 +2287,7 @@ Tue Aug 23 23:10:13 CEST 2005 - wberrier@suse.de
-------------------------------------------------------------------
Tue Aug 2 00:50:30 CEST 2005 - ro@suse.de
-- update to 1.1.8.3
+- update to 1.1.8.3
-------------------------------------------------------------------
Mon Jul 15 01:20:31 CEST 2005 - wberrier@novell.com
@@ -2271,22 +2297,22 @@ Mon Jul 15 01:20:31 CEST 2005 - wberrier@novell.com
-------------------------------------------------------------------
Mon Jun 27 01:20:31 CEST 2005 - ro@suse.de
-- use ldscript only for "libmono" but not for "mono"
+- use ldscript only for "libmono" but not for "mono"
-------------------------------------------------------------------
Wed Jun 22 14:06:10 CEST 2005 - ro@suse.de
-- fix more warnings on ppc
+- fix more warnings on ppc
-------------------------------------------------------------------
Wed Jun 22 00:29:24 CEST 2005 - ro@suse.de
-- update to 1.1.8.1
+- update to 1.1.8.1
-------------------------------------------------------------------
Tue Jun 21 17:19:36 CEST 2005 - ro@suse.de
-- revisit execstack : pass with "-Wl" as linker flag
+- revisit execstack : pass with "-Wl" as linker flag
-------------------------------------------------------------------
Tue Jun 7 12:56:00 CEST 2005 - uli@suse.de
@@ -2302,7 +2328,7 @@ Sat May 14 18:26:39 CEST 2005 - aj@suse.de
-------------------------------------------------------------------
Fri May 13 12:08:32 CEST 2005 - ro@suse.de
-- fix assembliesdir in libexecdir patch again
+- fix assembliesdir in libexecdir patch again
-------------------------------------------------------------------
Thu May 12 14:10:20 CEST 2005 - uli@suse.de
@@ -2318,7 +2344,7 @@ Tue Mar 22 00:49:39 CET 2005 - mmj@suse.de
-------------------------------------------------------------------
Wed Mar 16 05:04:19 CET 2005 - gekker@suse.de
-- Add mono-sys-web.patch and mono-leak-fix.patch for mono team
+- Add mono-sys-web.patch and mono-leak-fix.patch for mono team
-------------------------------------------------------------------
Fri Mar 11 18:26:44 CET 2005 - gekker@suse.de
@@ -2334,17 +2360,17 @@ Fri Mar 11 13:54:03 CET 2005 - uli@suse.de
-------------------------------------------------------------------
Thu Mar 10 19:58:08 CET 2005 - gekker@suse.de
-- add mono-sqlite2-config.patch (71844).
+- add mono-sqlite2-config.patch (71844).
-------------------------------------------------------------------
Tue Mar 8 03:04:19 CET 2005 - gekker@suse.de
-- add mono-mini-threadfix.diff, to fix random crashes in mcs
+- add mono-mini-threadfix.diff, to fix random crashes in mcs
-------------------------------------------------------------------
Tue Mar 1 21:23:43 CET 2005 - gekker@suse.de
-- remove sqlite2-devel crack from requires for mono-data-sqlite
+- remove sqlite2-devel crack from requires for mono-data-sqlite
-------------------------------------------------------------------
Mon Feb 21 08:24:58 CET 2005 - clahey@suse.de
@@ -2355,52 +2381,52 @@ Mon Feb 21 08:24:58 CET 2005 - clahey@suse.de
Sun Feb 20 18:43:52 CET 2005 - ro@suse.de
- expand configure macro (not always correct for old distributions)
-- more hacks to java path
+- more hacks to java path
-------------------------------------------------------------------
Sun Feb 20 11:41:32 CET 2005 - ro@suse.de
-- changed java path
+- changed java path
-------------------------------------------------------------------
Sat Feb 19 11:23:59 CET 2005 - ro@suse.de
-- fix build for older distributions (without jni)
+- fix build for older distributions (without jni)
-------------------------------------------------------------------
Thu Feb 17 19:25:18 CET 2005 - gekker@suse.de
-- Add requires to mono-data-sqlite for sqlite2 and sqlite2-devel
+- Add requires to mono-data-sqlite for sqlite2 and sqlite2-devel
-------------------------------------------------------------------
Tue Feb 15 17:07:39 CET 2005 - gekker@suse.de
-- add -z execstack to LDFLAGS (50536)
+- add -z execstack to LDFLAGS (50536)
-------------------------------------------------------------------
Mon Feb 7 00:03:54 CET 2005 - ro@suse.de
-- fix mono with exec stack protection
+- fix mono with exec stack protection
-------------------------------------------------------------------
Wed Feb 2 02:19:17 CET 2005 - ro@suse.de
-- fix mono-provides
+- fix mono-provides
-------------------------------------------------------------------
Mon Jan 31 17:31:39 CET 2005 - gekker@suse.de
-- fix a directory ownership problem
+- fix a directory ownership problem
-------------------------------------------------------------------
Mon Jan 31 14:38:50 CET 2005 - ro@suse.de
-- fix build on lib64 (again ...)
+- fix build on lib64 (again ...)
-------------------------------------------------------------------
Mon Jan 31 14:25:17 CET 2005 - ro@suse.de
-- fix setup line in spec file
+- fix setup line in spec file
-------------------------------------------------------------------
Mon Jan 31 10:10:20 CET 2005 - clahey@suse.de
@@ -2415,7 +2441,7 @@ Thu Jan 13 01:48:00 CET 2005 - ro@suse.de
-------------------------------------------------------------------
Mon Nov 29 01:28:07 CET 2004 - ro@suse.de
-- THREAD_LOCAL_ALLOC is not possible on ppc, don't force it
+- THREAD_LOCAL_ALLOC is not possible on ppc, don't force it
- extended 64bit-warning patch some more
- configure "with-jit=yes" as in sles9
@@ -2473,7 +2499,7 @@ Tue May 25 21:39:55 CEST 2004 - clahey@suse.de
-------------------------------------------------------------------
Tue May 25 08:25:45 CEST 2004 - adrian@suse.de
-- fix permissions of -devel package
+- fix permissions of -devel package
(Requires base mono package and conflicts with pnet-compiler)
-------------------------------------------------------------------
@@ -2496,7 +2522,7 @@ Tue Apr 20 14:03:00 CEST 2004 - uli@suse.de
-------------------------------------------------------------------
Mon Apr 19 15:28:18 CEST 2004 - uli@suse.de
-- update -> 0.31 as reqd by gp
+- update -> 0.31 as reqd by gp
-------------------------------------------------------------------
Wed Feb 18 11:53:28 CET 2004 - uli@suse.de
@@ -2518,7 +2544,7 @@ Thu Feb 5 18:15:17 CET 2004 - uli@suse.de
-------------------------------------------------------------------
Wed Feb 4 17:38:38 CET 2004 - uli@suse.de
-- renamed ilasm to milasm to avoid conflict with Portable.NET
+- renamed ilasm to milasm to avoid conflict with Portable.NET
-------------------------------------------------------------------
Fri Jan 30 15:58:15 CET 2004 - uli@suse.de
diff --git a/mono-core.spec b/mono-core.spec
index 45ecf54..ebe7451 100644
--- a/mono-core.spec
+++ b/mono-core.spec
@@ -1,7 +1,7 @@
#
# spec file for package mono-core
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -21,35 +21,17 @@
%define sgen yes
Name: mono-core
-Version: 4.2.2
+Version: 4.3.2
Release: 0
Summary: Cross-platform, Open Source, .NET development framework
License: LGPL-2.1 and MIT and MS-PL
Group: Development/Languages/Mono
Url: http://www.mono-project.com
-Source0: http://download.mono-project.com/sources/mono/mono-%{version}.30.tar.bz2
+Source0: http://download.mono-project.com/sources/mono/mono-%{version}.467.tar.bz2
Source1: mono-core.rpmlintrc
Source2: gmcs
# ppc build segfault so exclude it
ExcludeArch: ppc
-# PATCH-FIX-OPENSUSE Use runtime 4.5 as default for nunit
-Patch0: mono-nunit-default-runtime-4.5.patch
-# PATCH-FIX-OPENSUSE authors file is missing
-Patch2: authors.patch
-# PATCH-FIX-OPENSUSE fix insecure use of strncat at process.c:383 to fix build process
-Patch3: strncat-process-c.patch
-Patch4: mono-un-revoke-fix-in-BNC-144655.patch
-##################
-## set of ppc patches from git upstream not yet in tarball 4.2.1
-Patch5: ppc_instruction_length_of_atomic_add_i4_is_28.patch
-Patch6: fix_atomic_add_i4_support_for_32bit_ppc.patch
-Patch7: basic_changes_powerpc_be.patch
-Patch8: ppc_add_monocontext_and_async_callback.patch
-Patch9: fix_passing_struct_parms_per_elf_abiv2.patch
-Patch10: update_elf_abiv2_testcases.patch
-Patch11: partial_sharing_false_4_powerpc.patch
-Patch12: fix_exception_when_reading_from_timezone_file.patch
-##################
# PATCH-FIX-UPSTREAM https://github.com/mono/mono/pull/2394
Patch13: libgdiplus0-un-devel.patch
BuildRequires: autoconf
@@ -124,18 +106,6 @@ technologies that have been submitted to the ECMA for standardization.
%prep
%setup -q -n mono-%{version}
-%patch0 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
-%patch9 -p1
-%patch10 -p1
-%patch11 -p1
-%patch12 -p1
%patch13 -p1
%build
@@ -235,7 +205,7 @@ rm %{buildroot}%{_bindir}/mono-sgen-gdb.py
%files -f mcs.lang
%defattr(-, root, root)
-%doc AUTHORS COPYING.LIB LICENSE ChangeLog NEWS README.md
+%doc COPYING.LIB LICENSE ChangeLog NEWS README.md
%config %{_sysconfdir}/mono/2.0/machine.config
%config %{_sysconfdir}/mono/2.0/settings.map
%config %{_sysconfdir}/mono/4.0/machine.config
@@ -244,8 +214,11 @@ rm %{buildroot}%{_bindir}/mono-sgen-gdb.py
%config %{_sysconfdir}/mono/4.5/settings.map
%config %{_sysconfdir}/mono/config
%dir %{_prefix}/lib/mono
+%dir %{_prefix}/lib/mono/4.0-api
%dir %{_prefix}/lib/mono/4.5
%dir %{_prefix}/lib/mono/4.5/Facades
+%dir %{_prefix}/lib/mono/4.5-api
+%dir %{_prefix}/lib/mono/4.5-api/Facades
%dir %{_prefix}/lib/mono/gac
%dir %{_sysconfdir}/mono
%dir %{_sysconfdir}/mono/2.0
@@ -290,7 +263,9 @@ rm %{buildroot}%{_bindir}/mono-sgen-gdb.py
%{_mandir}/man1/sn.1%ext_man
%{_mandir}/man5/mono-config.5%ext_man
%{_prefix}/lib/mono/4.5/System.IO.Compression.FileSystem.dll
+%{_prefix}/lib/mono/4.5-api/System.IO.Compression.FileSystem.dll
%{_prefix}/lib/mono/4.5/System.IO.Compression.dll
+%{_prefix}/lib/mono/4.5-api/System.IO.Compression.dll
%{_prefix}/lib/mono/4.5/al.exe*
%{_prefix}/lib/mono/4.5/cert-sync.exe*
%{_prefix}/lib/mono/4.5/certmgr.exe*
@@ -304,43 +279,87 @@ rm %{buildroot}%{_bindir}/mono-sgen-gdb.py
%{_prefix}/lib/mono/4.5/setreg.exe*
%{_prefix}/lib/mono/4.5/sn.exe*
%{_prefix}/lib/mono/4.5/Commons.Xml.Relaxng.dll
+%{_prefix}/lib/mono/4.5-api/Commons.Xml.Relaxng.dll
%{_prefix}/lib/mono/4.5/CustomMarshalers.dll
+%{_prefix}/lib/mono/4.5-api/CustomMarshalers.dll
%{_prefix}/lib/mono/4.5/I18N.West.dll
+%{_prefix}/lib/mono/4.5-api/I18N.West.dll
%{_prefix}/lib/mono/4.5/I18N.dll
+%{_prefix}/lib/mono/4.5-api/I18N.dll
%{_prefix}/lib/mono/4.5/ICSharpCode.SharpZipLib.dll
+%{_prefix}/lib/mono/4.5-api/ICSharpCode.SharpZipLib.dll
%{_prefix}/lib/mono/4.5/Microsoft.CSharp.dll
+%{_prefix}/lib/mono/4.5-api/Microsoft.CSharp.dll
%{_prefix}/lib/mono/4.5/Microsoft.VisualC.dll
-%{_prefix}/lib/mono/4.5/Mono.C5.dll
+%{_prefix}/lib/mono/4.5-api/Microsoft.VisualC.dll
+%{_prefix}/lib/mono/4.5-api/Mono.C5.dll
%{_prefix}/lib/mono/4.5/Mono.CSharp.dll
+%{_prefix}/lib/mono/4.5-api/Mono.CSharp.dll
%{_prefix}/lib/mono/4.5/Mono.Cairo.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Cairo.dll
%{_prefix}/lib/mono/4.5/Mono.CompilerServices.SymbolWriter.dll
+%{_prefix}/lib/mono/4.5-api/Mono.CompilerServices.SymbolWriter.dll
%{_prefix}/lib/mono/4.5/Mono.Management.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Management.dll
%{_prefix}/lib/mono/4.5/Mono.Parallel.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Parallel.dll
%{_prefix}/lib/mono/4.5/Mono.Posix.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Posix.dll
%{_prefix}/lib/mono/4.5/Mono.Security.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Security.dll
+%{_prefix}/lib/mono/4.5/Mono.Security.Providers.DotNet.dll
+%{_prefix}/lib/mono/4.5/Mono.Security.Providers.NewSystemSource.dll
+%{_prefix}/lib/mono/4.5/Mono.Security.Providers.NewTls.dll
+%{_prefix}/lib/mono/4.5/Mono.Security.Providers.OldTls.dll
%{_prefix}/lib/mono/4.5/Mono.Simd.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Simd.dll
%{_prefix}/lib/mono/4.5/Mono.Tasklets.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Tasklets.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Options.dll
%{_prefix}/lib/mono/4.5/System.Configuration.dll
+%{_prefix}/lib/mono/4.5-api/System.Configuration.dll
%{_prefix}/lib/mono/4.5/System.Core.dll
+%{_prefix}/lib/mono/4.5-api/System.Core.dll
%{_prefix}/lib/mono/4.5/System.Drawing.dll
+%{_prefix}/lib/mono/4.5-api/System.Drawing.dll
%{_prefix}/lib/mono/4.5/System.Dynamic.dll
+%{_prefix}/lib/mono/4.5-api/System.Dynamic.dll
%{_prefix}/lib/mono/4.5/System.Json.dll
+%{_prefix}/lib/mono/4.5-api/System.Json.dll
%{_prefix}/lib/mono/4.5/System.Json.Microsoft.dll
+%{_prefix}/lib/mono/4.5-api/System.Json.Microsoft.dll
%{_prefix}/lib/mono/4.5/System.Net.dll
+%{_prefix}/lib/mono/4.5-api/System.Net.dll
%{_prefix}/lib/mono/4.5/System.Net.Http.dll
+%{_prefix}/lib/mono/4.5-api/System.Net.Http.dll
%{_prefix}/lib/mono/4.5/System.Net.Http.Formatting.dll
+%{_prefix}/lib/mono/4.5-api/System.Net.Http.Formatting.dll
%{_prefix}/lib/mono/4.5/System.Net.Http.WebRequest.dll
+%{_prefix}/lib/mono/4.5-api/System.Net.Http.WebRequest.dll
%{_prefix}/lib/mono/4.5/System.Numerics.dll
+%{_prefix}/lib/mono/4.5-api/System.Numerics.dll
+%{_prefix}/lib/mono/4.5/System.Numerics.Vectors.dll
%{_prefix}/lib/mono/4.5/System.Security.dll
+%{_prefix}/lib/mono/4.5-api/System.Security.dll
%{_prefix}/lib/mono/4.5/System.Threading.Tasks.Dataflow.dll
+%{_prefix}/lib/mono/4.5-api/System.Threading.Tasks.Dataflow.dll
%{_prefix}/lib/mono/4.5/System.Windows.dll
+%{_prefix}/lib/mono/4.5-api/System.Windows.dll
%{_prefix}/lib/mono/4.5/System.Xml.Serialization.dll
+%{_prefix}/lib/mono/4.5-api/System.Xml.Serialization.dll
%{_prefix}/lib/mono/4.5/System.Xml.Linq.dll
+%{_prefix}/lib/mono/4.5-api/System.Xml.Linq.dll
%{_prefix}/lib/mono/4.5/System.Xml.dll
+%{_prefix}/lib/mono/4.5-api/System.Xml.dll
%{_prefix}/lib/mono/4.5/System.dll
+%{_prefix}/lib/mono/4.5-api/System.dll
%{_prefix}/lib/mono/4.5/cscompmgd.dll
+%{_prefix}/lib/mono/4.5-api/cscompmgd.dll
%{_prefix}/lib/mono/4.5/mscorlib.dll*
-%{_prefix}/lib/mono/4.5/Facades/System*
+%{_prefix}/lib/mono/4.5-api/mscorlib.dll*
+%{_prefix}/lib/mono/4.5/Facades/*
+%{_prefix}/lib/mono/4.5-api/Facades/System*
+%{_prefix}/lib/mono/4.5-api/Mono.Cecil*
%{_prefix}/lib/mono/gac/Commons.Xml.Relaxng
%{_prefix}/lib/mono/gac/CustomMarshalers
%{_prefix}/lib/mono/gac/I18N
@@ -348,7 +367,6 @@ rm %{buildroot}%{_bindir}/mono-sgen-gdb.py
%{_prefix}/lib/mono/gac/ICSharpCode.SharpZipLib
%{_prefix}/lib/mono/gac/Microsoft.CSharp
%{_prefix}/lib/mono/gac/Microsoft.VisualC
-%{_prefix}/lib/mono/gac/Mono.C5
%{_prefix}/lib/mono/gac/Mono.CSharp
%{_prefix}/lib/mono/gac/Mono.Cairo
%{_prefix}/lib/mono/gac/Mono.Cecil
@@ -357,6 +375,10 @@ rm %{buildroot}%{_bindir}/mono-sgen-gdb.py
%{_prefix}/lib/mono/gac/Mono.Parallel
%{_prefix}/lib/mono/gac/Mono.Posix
%{_prefix}/lib/mono/gac/Mono.Security
+%{_prefix}/lib/mono/gac/Mono.Security.Providers.DotNet
+%{_prefix}/lib/mono/gac/Mono.Security.Providers.NewSystemSource
+%{_prefix}/lib/mono/gac/Mono.Security.Providers.NewTls
+%{_prefix}/lib/mono/gac/Mono.Security.Providers.OldTls
%{_prefix}/lib/mono/gac/Mono.Simd
%{_prefix}/lib/mono/gac/Mono.Tasklets
%{_prefix}/lib/mono/gac/System
@@ -369,6 +391,7 @@ rm %{buildroot}%{_bindir}/mono-sgen-gdb.py
%{_prefix}/lib/mono/gac/System.Net.Http.Formatting
%{_prefix}/lib/mono/gac/System.Net.Http.WebRequest
%{_prefix}/lib/mono/gac/System.Numerics
+%{_prefix}/lib/mono/gac/System.Numerics.Vectors
%{_prefix}/lib/mono/gac/System.Security
%{_prefix}/lib/mono/gac/System.Threading.Tasks.Dataflow
%{_prefix}/lib/mono/gac/System.Windows
@@ -382,7 +405,7 @@ rm %{buildroot}%{_bindir}/mono-sgen-gdb.py
%{_prefix}/lib/mono/gac/cscompmgd
%{_prefix}/lib/mono/mono-configuration-crypto
-%post
+%post
cert-sync /etc/ssl/ca-bundle.pem
%package -n libmono-2_0-1
@@ -574,9 +597,13 @@ Extra locale information.
%files -n mono-locale-extras
%defattr(-, root, root)
%{_prefix}/lib/mono/4.5/I18N.CJK.dll
+%{_prefix}/lib/mono/4.5-api/I18N.CJK.dll
%{_prefix}/lib/mono/4.5/I18N.MidEast.dll
+%{_prefix}/lib/mono/4.5-api/I18N.MidEast.dll
%{_prefix}/lib/mono/4.5/I18N.Other.dll
+%{_prefix}/lib/mono/4.5-api/I18N.Other.dll
%{_prefix}/lib/mono/4.5/I18N.Rare.dll
+%{_prefix}/lib/mono/4.5-api/I18N.Rare.dll
%{_prefix}/lib/mono/gac/I18N.CJK
%{_prefix}/lib/mono/gac/I18N.MidEast
%{_prefix}/lib/mono/gac/I18N.Other
@@ -612,17 +639,29 @@ Database connectivity for Mono.
%{_bindir}/sqlsharp
%{_mandir}/man1/sqlsharp.1%ext_man
%{_prefix}/lib/mono/4.5/Mono.Data.Tds.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Data.Tds.dll
%{_prefix}/lib/mono/4.5/Novell.Directory.Ldap.dll
+%{_prefix}/lib/mono/4.5-api/Novell.Directory.Ldap.dll
%{_prefix}/lib/mono/4.5/System.Data.DataSetExtensions.dll
+%{_prefix}/lib/mono/4.5-api/System.Data.DataSetExtensions.dll
%{_prefix}/lib/mono/4.5/System.Data.Linq.dll
+%{_prefix}/lib/mono/4.5-api/System.Data.Linq.dll
%{_prefix}/lib/mono/4.5/System.Data.dll
+%{_prefix}/lib/mono/4.5-api/System.Data.dll
%{_prefix}/lib/mono/4.5/System.Data.Entity.dll
+%{_prefix}/lib/mono/4.5-api/System.Data.Entity.dll
%{_prefix}/lib/mono/4.5/System.DirectoryServices.dll
+%{_prefix}/lib/mono/4.5-api/System.DirectoryServices.dll
%{_prefix}/lib/mono/4.5/System.DirectoryServices.Protocols.dll
+%{_prefix}/lib/mono/4.5-api/System.DirectoryServices.Protocols.dll
%{_prefix}/lib/mono/4.5/System.EnterpriseServices.dll
+%{_prefix}/lib/mono/4.5-api/System.EnterpriseServices.dll
%{_prefix}/lib/mono/4.5/System.Runtime.Serialization.dll
+%{_prefix}/lib/mono/4.5-api/System.Runtime.Serialization.dll
%{_prefix}/lib/mono/4.5/System.Transactions.dll
+%{_prefix}/lib/mono/4.5-api/System.Transactions.dll
%{_prefix}/lib/mono/4.5/WebMatrix.Data.dll
+%{_prefix}/lib/mono/4.5-api/WebMatrix.Data.dll
%{_prefix}/lib/mono/4.5/sqlmetal.exe*
%{_prefix}/lib/mono/4.5/sqlsharp.exe*
%{_prefix}/lib/mono/gac/Mono.Data.Tds
@@ -664,11 +703,17 @@ Mono's Windows Forms implementation.
%files -n mono-winforms
%defattr(-, root, root)
%{_prefix}/lib/mono/4.5/Accessibility.dll
+%{_prefix}/lib/mono/4.5-api/Accessibility.dll
%{_prefix}/lib/mono/4.5/Mono.WebBrowser.dll
+%{_prefix}/lib/mono/4.5-api/Mono.WebBrowser.dll
%{_prefix}/lib/mono/4.5/System.Design.dll
+%{_prefix}/lib/mono/4.5-api/System.Design.dll
%{_prefix}/lib/mono/4.5/System.Drawing.Design.dll
+%{_prefix}/lib/mono/4.5-api/System.Drawing.Design.dll
%{_prefix}/lib/mono/4.5/System.Windows.Forms.DataVisualization.dll
+%{_prefix}/lib/mono/4.5-api/System.Windows.Forms.DataVisualization.dll
%{_prefix}/lib/mono/4.5/System.Windows.Forms.dll
+%{_prefix}/lib/mono/4.5-api/System.Windows.Forms.dll
%{_prefix}/lib/mono/gac/Accessibility
%{_prefix}/lib/mono/gac/Mono.WebBrowser
%{_prefix}/lib/mono/gac/System.Design
@@ -694,6 +739,7 @@ Database connectivity for DB2.
%files -n ibm-data-db2
%defattr(-, root, root)
%{_prefix}/lib/mono/4.5/IBM.Data.DB2.dll
+%{_prefix}/lib/mono/4.5-api/IBM.Data.DB2.dll
%{_prefix}/lib/mono/gac/IBM.Data.DB2
%package -n mono-extras
@@ -728,15 +774,24 @@ Extra packages.
%{_prefix}/lib/mono/4.5/installutil.exe*
%{_prefix}/lib/mono/4.5/mono-service.exe*
%{_prefix}/lib/mono/4.5/Mono.Messaging.RabbitMQ.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Messaging.RabbitMQ.dll
%{_prefix}/lib/mono/4.5/Mono.Messaging.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Messaging.dll
%{_prefix}/lib/mono/4.5/RabbitMQ.Client.Apigen.exe*
%{_prefix}/lib/mono/4.5/RabbitMQ.Client.dll
+%{_prefix}/lib/mono/4.5-api/RabbitMQ.Client.dll
%{_prefix}/lib/mono/4.5/System.Configuration.Install.dll
+%{_prefix}/lib/mono/4.5-api/System.Configuration.Install.dll
%{_prefix}/lib/mono/4.5/System.Management.dll
+%{_prefix}/lib/mono/4.5-api/System.Management.dll
%{_prefix}/lib/mono/4.5/System.Messaging.dll
+%{_prefix}/lib/mono/4.5-api/System.Messaging.dll
%{_prefix}/lib/mono/4.5/System.Runtime.Caching.dll
+%{_prefix}/lib/mono/4.5-api/System.Runtime.Caching.dll
%{_prefix}/lib/mono/4.5/System.ServiceProcess.dll
+%{_prefix}/lib/mono/4.5-api/System.ServiceProcess.dll
%{_prefix}/lib/mono/4.5/System.Xaml.dll
+%{_prefix}/lib/mono/4.5-api/System.Xaml.dll
%{_prefix}/lib/mono/gac/Mono.Messaging
%{_prefix}/lib/mono/gac/Mono.Messaging.RabbitMQ
%{_prefix}/lib/mono/gac/RabbitMQ.Client
@@ -768,6 +823,7 @@ Database connectivity for Mono.
%files -n mono-data-sqlite
%defattr(-, root, root)
%{_prefix}/lib/mono/4.5/Mono.Data.Sqlite.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Data.Sqlite.dll
%{_prefix}/lib/mono/gac/Mono.Data.Sqlite
%package -n mono-wcf
@@ -790,16 +846,27 @@ Mono implementation of WCF, Windows Communication Foundation
%{_bindir}/svcutil
%{_libdir}/pkgconfig/wcf.pc
%{_prefix}/lib/mono/4.5/System.Data.Services.dll
+%{_prefix}/lib/mono/4.5-api/System.Data.Services.dll
%{_prefix}/lib/mono/4.5/System.IdentityModel.Selectors.dll
+%{_prefix}/lib/mono/4.5-api/System.IdentityModel.Selectors.dll
%{_prefix}/lib/mono/4.5/System.IdentityModel.dll
+%{_prefix}/lib/mono/4.5-api/System.IdentityModel.dll
%{_prefix}/lib/mono/4.5/System.Runtime.DurableInstancing.dll
+%{_prefix}/lib/mono/4.5-api/System.Runtime.DurableInstancing.dll
%{_prefix}/lib/mono/4.5/System.ServiceModel.Activation.dll
+%{_prefix}/lib/mono/4.5-api/System.ServiceModel.Activation.dll
%{_prefix}/lib/mono/4.5/System.ServiceModel.Discovery.dll
+%{_prefix}/lib/mono/4.5-api/System.ServiceModel.Discovery.dll
%{_prefix}/lib/mono/4.5/System.ServiceModel.Routing.dll
+%{_prefix}/lib/mono/4.5-api/System.ServiceModel.Routing.dll
%{_prefix}/lib/mono/4.5/System.ServiceModel.Web.dll
+%{_prefix}/lib/mono/4.5-api/System.ServiceModel.Web.dll
%{_prefix}/lib/mono/4.5/System.ServiceModel.Internals.dll
+%{_prefix}/lib/mono/4.5-api/System.ServiceModel.Internals.dll
%{_prefix}/lib/mono/4.5/System.ServiceModel.dll
+%{_prefix}/lib/mono/4.5-api/System.ServiceModel.dll
%{_prefix}/lib/mono/4.5/SMDiagnostics.dll
+%{_prefix}/lib/mono/4.5-api/SMDiagnostics.dll
%{_prefix}/lib/mono/4.5/svcutil.exe*
%{_prefix}/lib/mono/gac/System.Data.Services
%{_prefix}/lib/mono/gac/System.IdentityModel
@@ -831,7 +898,9 @@ Mono implementation of core WinFX APIs
%files -n mono-winfxcore
%defattr(-, root, root)
%{_prefix}/lib/mono/4.5/System.Data.Services.Client.dll*
+%{_prefix}/lib/mono/4.5-api/System.Data.Services.Client.dll*
%{_prefix}/lib/mono/4.5/WindowsBase.dll*
+%{_prefix}/lib/mono/4.5-api/WindowsBase.dll*
%{_prefix}/lib/mono/gac/System.Data.Services.Client
%{_prefix}/lib/mono/gac/WindowsBase
@@ -889,28 +958,47 @@ Mono implementation of ASP.NET, Remoting and Web Services.
%{_mandir}/man1/wsdl.1%ext_man
%{_mandir}/man1/xsd.1%ext_man
%{_prefix}/lib/mono/4.5/Mono.Http.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Http.dll
%{_prefix}/lib/mono/4.5/System.ComponentModel.Composition.dll
+%{_prefix}/lib/mono/4.5-api/System.ComponentModel.Composition.dll
%{_prefix}/lib/mono/4.5/System.ComponentModel.DataAnnotations.dll
+%{_prefix}/lib/mono/4.5-api/System.ComponentModel.DataAnnotations.dll
%{_prefix}/lib/mono/4.5/System.Runtime.Remoting.dll
+%{_prefix}/lib/mono/4.5-api/System.Runtime.Remoting.dll
%{_prefix}/lib/mono/4.5/System.Runtime.Serialization.Formatters.Soap.dll
+%{_prefix}/lib/mono/4.5-api/System.Runtime.Serialization.Formatters.Soap.dll
%{_prefix}/lib/mono/4.5/System.Web.Abstractions.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Abstractions.dll
%{_prefix}/lib/mono/4.5/System.Web.ApplicationServices.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.ApplicationServices.dll
%{_prefix}/lib/mono/4.5/System.Web.Http.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Http.dll
%{_prefix}/lib/mono/4.5/System.Web.Http.SelfHost.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Http.SelfHost.dll
%{_prefix}/lib/mono/4.5/System.Web.Http.WebHost.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Http.WebHost.dll
%{_prefix}/lib/mono/4.5/System.Web.Routing.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Routing.dll
%{_prefix}/lib/mono/4.5/System.Web.Razor.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Razor.dll
%{_prefix}/lib/mono/4.5/System.Web.Services.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Services.dll
%{_prefix}/lib/mono/4.5/System.Web.WebPages.Deployment.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.WebPages.Deployment.dll
%{_prefix}/lib/mono/4.5/System.Web.WebPages.Razor.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.WebPages.Razor.dll
%{_prefix}/lib/mono/4.5/System.Web.WebPages.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.WebPages.dll
%{_prefix}/lib/mono/4.5/System.Web.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.dll
%{_prefix}/lib/mono/4.5/disco.exe*
%{_prefix}/lib/mono/4.5/mconfig.exe*
%{_prefix}/lib/mono/4.5/soapsuds.exe*
%{_prefix}/lib/mono/4.5/wsdl.exe*
%{_prefix}/lib/mono/4.5/xsd.exe*
%{_prefix}/lib/mono/4.5/Microsoft.Web.Infrastructure.dll
+%{_prefix}/lib/mono/4.5-api/Microsoft.Web.Infrastructure.dll
+%{_prefix}/lib/mono/4.5-api/SystemWebTestShim.dll
%{_prefix}/lib/mono/gac/Microsoft.Web.Infrastructure
%{_prefix}/lib/mono/gac/Mono.Http
%{_prefix}/lib/mono/gac/System.ComponentModel.Composition
@@ -953,9 +1041,13 @@ Mono implementation of ASP.NET MVC.
%{_libdir}/pkgconfig/system.web.mvc2.pc
%{_libdir}/pkgconfig/system.web.mvc3.pc
%{_prefix}/lib/mono/4.5/System.Web.DynamicData.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.DynamicData.dll
%{_prefix}/lib/mono/4.5/System.Web.Extensions.Design.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Extensions.Design.dll
%{_prefix}/lib/mono/4.5/System.Web.Extensions.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Extensions.dll
%{_prefix}/lib/mono/4.5/System.Web.Mvc.dll
+%{_prefix}/lib/mono/4.5-api/System.Web.Mvc.dll
%{_prefix}/lib/mono/gac/System.Web.DynamicData
%{_prefix}/lib/mono/gac/System.Web.Extensions
%{_prefix}/lib/mono/gac/System.Web.Extensions.Design
@@ -981,6 +1073,7 @@ Database connectivity for Mono.
%files -n mono-data-oracle
%defattr(-, root, root)
%{_prefix}/lib/mono/4.5/System.Data.OracleClient.dll
+%{_prefix}/lib/mono/4.5-api/System.Data.OracleClient.dll
%{_prefix}/lib/mono/gac/System.Data.OracleClient
%package -n mono-nunit
@@ -1146,17 +1239,30 @@ Mono development tools.
%{_mandir}/man1/signcode.1%ext_man
%{_mandir}/man1/xbuild.1%ext_man
%{_prefix}/lib/mono-source-libs
+%{_prefix}/lib/mono/4.0-api
+# https://bugzilla.xamarin.com/show_bug.cgi?id=38331
%{_prefix}/lib/mono/4.0
-%{_prefix}/lib/mono/3.5
-%{_prefix}/lib/mono/2.0
+%{_prefix}/lib/mono/4.0/mscorlib.dll
+%{_prefix}/lib/mono/3.5-api
+%{_prefix}/lib/mono/2.0-api
%{_prefix}/lib/mono/4.5/Microsoft.Build.dll
+%{_prefix}/lib/mono/4.5-api/Microsoft.Build.dll
%{_prefix}/lib/mono/4.5/Microsoft.Build.Engine.dll
+%{_prefix}/lib/mono/4.5-api/Microsoft.Build.Engine.dll
%{_prefix}/lib/mono/4.5/Microsoft.Build.Framework.dll
+%{_prefix}/lib/mono/4.5-api/Microsoft.Build.Framework.dll
%{_prefix}/lib/mono/4.5/Microsoft.Build.Tasks.v4.0.dll
+%{_prefix}/lib/mono/4.5-api/Microsoft.Build.Tasks.v4.0.dll
%{_prefix}/lib/mono/4.5/Microsoft.Build.Utilities.v4.0.dll
+%{_prefix}/lib/mono/4.5-api/Microsoft.Build.Utilities.v4.0.dll
%{_prefix}/lib/mono/4.5/Mono.Debugger.Soft.dll
+%{_prefix}/lib/mono/4.5-api/Mono.Debugger.Soft.dll
%{_prefix}/lib/mono/4.5/Mono.CodeContracts.dll
+%{_prefix}/lib/mono/4.5-api/Mono.CodeContracts.dll
+%{_prefix}/lib/mono/4.5/Mono.XBuild.Tasks.dll
+%{_prefix}/lib/mono/4.5-api/Mono.XBuild.Tasks.dll
%{_prefix}/lib/mono/4.5/PEAPI.dll
+%{_prefix}/lib/mono/4.5-api/PEAPI.dll
%{_prefix}/lib/mono/4.5/caspol.exe*
%{_prefix}/lib/mono/4.5/cccheck.exe*
%{_prefix}/lib/mono/4.5/ccrewrite.exe*
@@ -1169,6 +1275,7 @@ Mono development tools.
%{_prefix}/lib/mono/4.5/ilasm.exe*
%{_prefix}/lib/mono/4.5/installvst.exe*
%{_prefix}/lib/mono/4.5/lc.exe*
+%{_prefix}/lib/mono/4.5/linkeranalyzer.exe*
%{_prefix}/lib/mono/4.5/macpack.exe*
%{_prefix}/lib/mono/4.5/makecert.exe*
%{_prefix}/lib/mono/4.5/mdbrebase.exe*
@@ -1194,7 +1301,6 @@ Mono development tools.
%{_prefix}/lib/mono/4.5/Microsoft.Common.targets
%{_prefix}/lib/mono/4.5/Microsoft.Common.tasks
%{_prefix}/lib/mono/4.5/Microsoft.VisualBasic.targets
-%{_prefix}/lib/mono/4.5/Mono.XBuild.Tasks.dll
%{_prefix}/lib/mono/gac/Microsoft.Build
%{_prefix}/lib/mono/gac/Microsoft.Build.Engine
%{_prefix}/lib/mono/gac/Microsoft.Build.Framework
@@ -1232,16 +1338,27 @@ Microsoft's Reactive Extensions.
%defattr(-, root, root)
%{_libdir}/pkgconfig/reactive.pc
%{_prefix}/lib/mono/4.5/System.Reactive.Core.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Core.dll
%{_prefix}/lib/mono/4.5/System.Reactive.Debugger.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Debugger.dll
%{_prefix}/lib/mono/4.5/System.Reactive.Experimental.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Experimental.dll
%{_prefix}/lib/mono/4.5/System.Reactive.Interfaces.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Interfaces.dll
%{_prefix}/lib/mono/4.5/System.Reactive.Linq.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Linq.dll
%{_prefix}/lib/mono/4.5/System.Reactive.Observable.Aliases.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Observable.Aliases.dll
%{_prefix}/lib/mono/4.5/System.Reactive.PlatformServices.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.PlatformServices.dll
%{_prefix}/lib/mono/4.5/System.Reactive.Providers.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Providers.dll
%{_prefix}/lib/mono/4.5/System.Reactive.Runtime.Remoting.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Runtime.Remoting.dll
%{_prefix}/lib/mono/4.5/System.Reactive.Windows.Forms.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Windows.Forms.dll
%{_prefix}/lib/mono/4.5/System.Reactive.Windows.Threading.dll
+%{_prefix}/lib/mono/4.5-api/System.Reactive.Windows.Threading.dll
%{_prefix}/lib/mono/gac/System.Reactive.Core/
%{_prefix}/lib/mono/gac/System.Reactive.Debugger/
%{_prefix}/lib/mono/gac/System.Reactive.Experimental/
@@ -1295,6 +1412,7 @@ Monodoc-core contains documentation tools for C#.
%{_mandir}/man5/mdoc.5%ext_man
%{_prefix}/lib/mono/4.5/mdoc.exe*
%{_prefix}/lib/mono/4.5/mod.exe*
+%{_prefix}/lib/mono/4.5-api/monodoc.dll
%{_prefix}/lib/mono/gac/monodoc
%{_prefix}/lib/mono/monodoc
%{_prefix}/lib/monodoc
diff --git a/mono-nunit-default-runtime-4.5.patch b/mono-nunit-default-runtime-4.5.patch
deleted file mode 100644
index caa7a47..0000000
--- a/mono-nunit-default-runtime-4.5.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-Index: mono-3.10.0/data/mono-nunit.pc.in
-===================================================================
---- mono-3.10.0.orig/data/mono-nunit.pc.in
-+++ mono-3.10.0/data/mono-nunit.pc.in
-@@ -6,4 +6,4 @@ libdir=${exec_prefix}/lib
- Name: Mono NUnit
- Description: Mono's version of NUnit
- Version: @VERSION@
--Libs: -r:${libdir}/mono/2.0/nunit.core.dll -r:${libdir}/mono/2.0/nunit.core.interfaces.dll -r:${libdir}/mono/2.0/nunit.core.extensions.dll -r:${libdir}/mono/2.0/nunit.framework.dll -r:${libdir}/mono/2.0/nunit.framework.extensions.dll -r:${libdir}/mono/2.0/nunit.mocks.dll -r:${libdir}/mono/2.0/nunit.util.dll -r:${libdir}/mono/2.0/nunit-console-runner.dll
-+Libs: -r:${libdir}/mono/4.5/nunit.core.dll -r:${libdir}/mono/4.5/nunit.core.interfaces.dll -r:${libdir}/mono/4.5/nunit.core.extensions.dll -r:${libdir}/mono/4.5/nunit.framework.dll -r:${libdir}/mono/4.5/nunit.framework.extensions.dll -r:${libdir}/mono/4.5/nunit.mocks.dll -r:${libdir}/mono/4.5/nunit.util.dll -r:${libdir}/mono/4.5/nunit-console-runner.dll
diff --git a/mono-un-revoke-fix-in-BNC-144655.patch b/mono-un-revoke-fix-in-BNC-144655.patch
deleted file mode 100644
index ce44f7b..0000000
--- a/mono-un-revoke-fix-in-BNC-144655.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From cdb098617af97c6af76e9048af62e8e5e778b5b6 Mon Sep 17 00:00:00 2001
-From: Jo Shields
-Date: Tue, 11 Aug 2015 19:41:23 +0100
-Subject: [PATCH] Un-revoke fix in BNC#144655 - mono-find-provides should ONLY
- work on GAC libraries, and any packages which break on this behaviour should
- be fixed - rather than generating utterly broken Provides.
-
-(cherry picked from commit 1f4133a06f252ec1b78637dd91e49f50836cf570)
----
- scripts/mono-find-provides.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/scripts/mono-find-provides.in b/scripts/mono-find-provides.in
-index 155690d..5e440ab 100644
---- a/scripts/mono-find-provides.in
-+++ b/scripts/mono-find-provides.in
-@@ -14,7 +14,7 @@ monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
-
- # Only include files with /gac/ in path
- # (Allows packages to contain private assemblies that don't conflict with other packages)
--#monolist=($(printf "%s\n" "${monolist[@]}" | egrep "/gac/"))
-+monolist=($(printf "%s\n" "${monolist[@]}" | egrep "/gac/"))
- # Disabled... see ChangeLog
-
- # Set the prefix, unless it is overriden (used when building mono rpms)
---
-2.6.0
-
diff --git a/partial_sharing_false_4_powerpc.patch b/partial_sharing_false_4_powerpc.patch
deleted file mode 100644
index 1c56eec..0000000
--- a/partial_sharing_false_4_powerpc.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 35b511524a4d15b75cfbba982d82b7abef3a29dc Mon Sep 17 00:00:00 2001
-From: Bill Seurer
-Date: Tue, 8 Dec 2015 12:52:01 -0600
-Subject: [PATCH] [ppc] Temporary fix for power to get builds working.
-
-
----
- mono/mini/mini-ppc.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-Index: mono-4.2.1/mono/mini/mini-ppc.c
-===================================================================
---- mono-4.2.1.orig/mono/mini/mini-ppc.c
-+++ mono-4.2.1/mono/mini/mini-ppc.c
-@@ -627,6 +627,9 @@ mono_arch_init (void)
- mono_mprotect (bp_trigger_page, mono_pagesize (), 0);
-
- mono_aot_register_jit_icall ("mono_ppc_throw_exception", mono_ppc_throw_exception);
-+
-+ // FIXME: Fix partial sharing for power and remove this
-+ mono_set_partial_sharing_supported (FALSE);
- }
-
- /*
diff --git a/ppc_add_monocontext_and_async_callback.patch b/ppc_add_monocontext_and_async_callback.patch
deleted file mode 100644
index 9379f85..0000000
--- a/ppc_add_monocontext_and_async_callback.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-From f05362d9a16317c65cf46506b7557dfb0176a678 Mon Sep 17 00:00:00 2001
-From: Bill Seurer
-Date: Mon, 24 Aug 2015 17:10:36 -0500
-Subject: [PATCH] [ppc] Add MonoContext and asynch callback support
-
-
----
- mono/mini/exceptions-ppc.c | 13 ++++++
- mono/mini/mini-ppc.h | 11 ++++-
- mono/utils/mono-context.h | 95 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 117 insertions(+), 2 deletions(-)
-
-Index: mono-4.2.1/mono/mini/exceptions-ppc.c
-===================================================================
---- mono-4.2.1.orig/mono/mini/exceptions-ppc.c
-+++ mono-4.2.1/mono/mini/exceptions-ppc.c
-@@ -783,3 +783,16 @@ mono_arch_handle_exception (void *ctx, g
- return result;
- #endif
- }
-+
-+
-+// FIX ME: This is not complete
-+void
-+mono_arch_setup_async_callback (MonoContext *ctx, void (*async_cb)(void *fun), gpointer user_data)
-+{
-+ uintptr_t sp = (uintptr_t) MONO_CONTEXT_GET_SP(ctx);
-+ sp -= PPC_MINIMAL_STACK_SIZE;
-+ *(unsigned long *)sp = MONO_CONTEXT_GET_SP(ctx);
-+ MONO_CONTEXT_SET_BP(ctx, sp);
-+ MONO_CONTEXT_SET_IP(ctx, (unsigned long) async_cb);
-+}
-+
-Index: mono-4.2.1/mono/mini/mini-ppc.h
-===================================================================
---- mono-4.2.1.orig/mono/mini/mini-ppc.h
-+++ mono-4.2.1/mono/mini/mini-ppc.h
-@@ -139,8 +139,15 @@ typedef struct MonoCompileArch {
- /* Linux */
- #ifdef __mono_ppc64__
- #define PPC_RET_ADDR_OFFSET 16
--#define PPC_STACK_PARAM_OFFSET 48
--#define PPC_MINIMAL_STACK_SIZE 48
-+ // Power LE abvi2
-+ #if (_CALL_ELF == 2)
-+ #define PPC_STACK_PARAM_OFFSET 32
-+ #define PPC_MINIMAL_STACK_SIZE 32
-+ #else
-+ #define PPC_STACK_PARAM_OFFSET 48
-+ #define PPC_MINIMAL_STACK_SIZE 48
-+ #endif
-+#define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1
- #define PPC_MINIMAL_PARAM_AREA_SIZE 64
- #define PPC_LAST_FPARG_REG ppc_f13
- #define PPC_PASS_STRUCTS_BY_VALUE 1
-Index: mono-4.2.1/mono/utils/mono-context.h
-===================================================================
---- mono-4.2.1.orig/mono/utils/mono-context.h
-+++ mono-4.2.1/mono/utils/mono-context.h
-@@ -359,6 +359,100 @@ typedef struct {
- * We might also want to add an additional field to propagate
- * the original context from the signal handler.
- */
-+#ifdef __mono_ppc64__
-+
-+typedef struct {
-+ gulong sc_ir; // pc
-+ gulong sc_sp; // r1
-+ mgreg_t regs [32];
-+ double fregs [32];
-+} MonoContext;
-+
-+/* we have the stack pointer, not the base pointer in sigcontext */
-+#define MONO_CONTEXT_SET_IP(ctx,ip) do { (ctx)->sc_ir = (gulong)ip; } while (0);
-+#define MONO_CONTEXT_SET_BP(ctx,bp) do { (ctx)->sc_sp = (gulong)bp; } while (0);
-+#define MONO_CONTEXT_SET_SP(ctx,sp) do { (ctx)->sc_sp = (gulong)sp; } while (0);
-+
-+#define MONO_CONTEXT_GET_IP(ctx) ((gpointer)((ctx)->sc_ir))
-+#define MONO_CONTEXT_GET_BP(ctx) ((gpointer)((ctx)->regs [ppc_r31-13]))
-+#define MONO_CONTEXT_GET_SP(ctx) ((gpointer)((ctx)->sc_sp))
-+
-+#define MONO_CONTEXT_GET_CURRENT(ctx) \
-+ __asm__ __volatile__( \
-+ "std 0, 0(%0)\n" \
-+ "std 1, 8(%0)\n" \
-+ "std 0, 8*0+16(%0)\n" \
-+ "std 1, 8*1+16(%0)\n" \
-+ "std 2, 8*2+16(%0)\n" \
-+ "std 3, 8*3+16(%0)\n" \
-+ "std 4, 8*4+16(%0)\n" \
-+ "std 5, 8*5+16(%0)\n" \
-+ "std 6, 8*6+16(%0)\n" \
-+ "std 7, 8*7+16(%0)\n" \
-+ "std 8, 8*8+16(%0)\n" \
-+ "std 9, 8*9+16(%0)\n" \
-+ "std 10, 8*10+16(%0)\n" \
-+ "std 11, 8*11+16(%0)\n" \
-+ "std 12, 8*12+16(%0)\n" \
-+ "std 13, 8*13+16(%0)\n" \
-+ "std 14, 8*14+16(%0)\n" \
-+ "std 15, 8*15+16(%0)\n" \
-+ "std 16, 8*16+16(%0)\n" \
-+ "std 17, 8*17+16(%0)\n" \
-+ "std 18, 8*18+16(%0)\n" \
-+ "std 19, 8*19+16(%0)\n" \
-+ "std 20, 8*20+16(%0)\n" \
-+ "std 21, 8*21+16(%0)\n" \
-+ "std 22, 8*22+16(%0)\n" \
-+ "std 23, 8*23+16(%0)\n" \
-+ "std 24, 8*24+16(%0)\n" \
-+ "std 25, 8*25+16(%0)\n" \
-+ "std 26, 8*26+16(%0)\n" \
-+ "std 27, 8*27+16(%0)\n" \
-+ "std 28, 8*28+16(%0)\n" \
-+ "std 29, 8*29+16(%0)\n" \
-+ "std 30, 8*30+16(%0)\n" \
-+ "std 31, 8*31+16(%0)\n" \
-+ "stfd 0, 8*0+8*32+16(%0)\n" \
-+ "stfd 1, 8*1+8*32+16(%0)\n" \
-+ "stfd 2, 8*2+8*32+16(%0)\n" \
-+ "stfd 3, 8*3+8*32+16(%0)\n" \
-+ "stfd 4, 8*4+8*32+16(%0)\n" \
-+ "stfd 5, 8*5+8*32+16(%0)\n" \
-+ "stfd 6, 8*6+8*32+16(%0)\n" \
-+ "stfd 7, 8*7+8*32+16(%0)\n" \
-+ "stfd 8, 8*8+8*32+16(%0)\n" \
-+ "stfd 9, 8*9+8*32+16(%0)\n" \
-+ "stfd 10, 8*10+8*32+16(%0)\n" \
-+ "stfd 11, 8*11+8*32+16(%0)\n" \
-+ "stfd 12, 8*12+8*32+16(%0)\n" \
-+ "stfd 13, 8*13+8*32+16(%0)\n" \
-+ "stfd 14, 8*14+8*32+16(%0)\n" \
-+ "stfd 15, 8*15+8*32+16(%0)\n" \
-+ "stfd 16, 8*16+8*32+16(%0)\n" \
-+ "stfd 17, 8*17+8*32+16(%0)\n" \
-+ "stfd 18, 8*18+8*32+16(%0)\n" \
-+ "stfd 19, 8*19+8*32+16(%0)\n" \
-+ "stfd 20, 8*20+8*32+16(%0)\n" \
-+ "stfd 21, 8*21+8*32+16(%0)\n" \
-+ "stfd 22, 8*22+8*32+16(%0)\n" \
-+ "stfd 23, 8*23+8*32+16(%0)\n" \
-+ "stfd 24, 8*24+8*32+16(%0)\n" \
-+ "stfd 25, 8*25+8*32+16(%0)\n" \
-+ "stfd 26, 8*26+8*32+16(%0)\n" \
-+ "stfd 27, 8*27+8*32+16(%0)\n" \
-+ "stfd 28, 8*28+8*32+16(%0)\n" \
-+ "stfd 29, 8*29+8*32+16(%0)\n" \
-+ "stfd 30, 8*30+8*32+16(%0)\n" \
-+ "stfd 31, 8*31+8*32+16(%0)\n" \
-+ : : "r" (&(ctx)) \
-+ : "memory" \
-+ )
-+
-+#define MONO_ARCH_HAS_MONO_CONTEXT 1
-+
-+#else
-+
- typedef struct {
- gulong sc_ir; // pc
- gulong sc_sp; // r1
-@@ -375,6 +469,7 @@ typedef struct {
- #define MONO_CONTEXT_GET_IP(ctx) ((gpointer)((ctx)->sc_ir))
- #define MONO_CONTEXT_GET_BP(ctx) ((gpointer)((ctx)->regs [ppc_r31-13]))
- #define MONO_CONTEXT_GET_SP(ctx) ((gpointer)((ctx)->sc_sp))
-+#endif
-
- #elif defined(__sparc__) || defined(sparc) /* defined(__mono_ppc__) */
-
diff --git a/ppc_instruction_length_of_atomic_add_i4_is_28.patch b/ppc_instruction_length_of_atomic_add_i4_is_28.patch
deleted file mode 100644
index 3dfb04f..0000000
--- a/ppc_instruction_length_of_atomic_add_i4_is_28.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From f967c79926900343f399c75624deedaba460e544 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?=
-Date: Mon, 3 Aug 2015 17:32:07 +0200
-Subject: [PATCH] [ppc] Instruction length of atomic_add_i4 is 28.
-
-
----
- mono/mini/cpu-ppc.md | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: mono-4.2.1/mono/mini/cpu-ppc.md
-===================================================================
---- mono-4.2.1.orig/mono/mini/cpu-ppc.md
-+++ mono-4.2.1/mono/mini/cpu-ppc.md
-@@ -314,5 +314,5 @@ vcall2_membase: src1:b len:16 clob:c
-
- jump_table: dest:i len:8
-
--atomic_add_i4: src1:b src2:i dest:i len:20
-+atomic_add_i4: src1:b src2:i dest:i len:28
- atomic_cas_i4: src1:b src2:i src3:i dest:i len:38
diff --git a/strncat-process-c.patch b/strncat-process-c.patch
deleted file mode 100644
index 67ba46f..0000000
--- a/strncat-process-c.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -uprN mono-4.2.0.old/mono/metadata/process.c mono-4.2.0.new/mono/metadata/process.c
---- mono-4.2.0.old/mono/metadata/process.c 2015-08-26 12:42:25.000000000 +0300
-+++ mono-4.2.0.new/mono/metadata/process.c 2015-08-29 15:49:25.369632846 +0300
-@@ -380,7 +380,7 @@ static MonoObject* get_process_module (M
- char filename [80] = "[In Memory] ";
- const char *modulename = assembly->aname.name;
-
-- strncat (filename, modulename, 80);
-+ strncat (filename, modulename, sizeof(filename)-strlen(filename)-1);
-
- /* Build a System.Diagnostics.ProcessModule with the data.
- */
diff --git a/update_elf_abiv2_testcases.patch b/update_elf_abiv2_testcases.patch
deleted file mode 100644
index 5f28f51..0000000
--- a/update_elf_abiv2_testcases.patch
+++ /dev/null
@@ -1,4409 +0,0 @@
-From 5013b989ed16303bc808a3d6570cddb4dfd8011d Mon Sep 17 00:00:00 2001
-From: Bill Seurer
-Date: Wed, 23 Sep 2015 15:44:24 -0500
-Subject: [PATCH] [ppc] Updated ELF ABI v2 test cases to include returning
- structures from functions
-
-
----
- mono/tests/libtest.c | 765 ++++++++++++++++++++------------------------
- mono/tests/pinvoke_ppcc.cs | 768 ++++++++++++++++++++++++++++++++++++++++-----
- mono/tests/pinvoke_ppcd.cs | 269 +++++++++++++--
- mono/tests/pinvoke_ppcf.cs | 243 +++++++++++---
- mono/tests/pinvoke_ppci.cs | 107 ++++--
- mono/tests/pinvoke_ppcs.cs | 263 +++++++++++++--
- 6 files changed, 1783 insertions(+), 632 deletions(-)
-
-Index: mono-4.2.1/mono/tests/libtest.c
-===================================================================
---- mono-4.2.1.orig/mono/tests/libtest.c
-+++ mono-4.2.1/mono/tests/libtest.c
-@@ -5450,1670 +5450,1605 @@ typedef struct {
- char f1;
- } sbyte1;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte1 STDCALL
- mono_return_sbyte1 (sbyte1 s1, int addend) {
- if (s1.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte1 s1.f1: got %d but expected %d\n", s1.f1, 1);
-- return 1;
- }
-- return 2*addend;
-+ s1.f1+=addend;
-+ return s1;
- }
-
- typedef struct {
- char f1,f2;
- } sbyte2;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte2 STDCALL
- mono_return_sbyte2 (sbyte2 s2, int addend) {
- if (s2.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte2 s2.f1: got %d but expected %d\n", s2.f1, 1);
-- return 1;
- }
- if (s2.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte2 s2.f2: got %d but expected %d\n", s2.f2, 2);
-- return 1;
- }
-- return 2*addend;
-+ s2.f1+=addend; s2.f2+=addend;
-+ return s2;
- }
-
- typedef struct {
- char f1,f2,f3;
- } sbyte3;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte3 STDCALL
- mono_return_sbyte3 (sbyte3 s3, int addend) {
- if (s3.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte3 s3.f1: got %d but expected %d\n", s3.f1, 1);
-- return 1;
- }
- if (s3.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte3 s3.f2: got %d but expected %d\n", s3.f2, 2);
-- return 1;
- }
- if (s3.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte3 s3.f3: got %d but expected %d\n", s3.f3, 3);
-- return 1;
- }
-- return 2*addend;
-+ s3.f1+=addend; s3.f2+=addend; s3.f3+=addend;
-+ return s3;
- }
-
- typedef struct {
- char f1,f2,f3,f4;
- } sbyte4;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte4 STDCALL
- mono_return_sbyte4 (sbyte4 s4, int addend) {
- if (s4.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte4 s4.f1: got %d but expected %d\n", s4.f1, 1);
-- return 1;
- }
- if (s4.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte4 s4.f2: got %d but expected %d\n", s4.f2, 2);
-- return 1;
- }
- if (s4.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte4 s4.f3: got %d but expected %d\n", s4.f3, 3);
-- return 1;
- }
- if (s4.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte4 s4.f4: got %d but expected %d\n", s4.f4, 4);
-- return 1;
- }
-- return 2*addend;
-+ s4.f1+=addend; s4.f2+=addend; s4.f3+=addend; s4.f4+=addend;
-+ return s4;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5;
- } sbyte5;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte5 STDCALL
- mono_return_sbyte5 (sbyte5 s5, int addend) {
- if (s5.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte5 s5.f1: got %d but expected %d\n", s5.f1, 1);
-- return 1;
- }
- if (s5.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte5 s5.f2: got %d but expected %d\n", s5.f2, 2);
-- return 1;
- }
- if (s5.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte5 s5.f3: got %d but expected %d\n", s5.f3, 3);
-- return 1;
- }
- if (s5.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte5 s5.f4: got %d but expected %d\n", s5.f4, 4);
-- return 1;
- }
- if (s5.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte5 s5.f5: got %d but expected %d\n", s5.f5, 5);
-- return 1;
- }
-- return 2*addend;
-+ s5.f1+=addend; s5.f2+=addend; s5.f3+=addend; s5.f4+=addend; s5.f5+=addend;
-+ return s5;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6;
- } sbyte6;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte6 STDCALL
- mono_return_sbyte6 (sbyte6 s6, int addend) {
- if (s6.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte6 s6.f1: got %d but expected %d\n", s6.f1, 1);
-- return 1;
- }
- if (s6.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte6 s6.f2: got %d but expected %d\n", s6.f2, 2);
-- return 1;
- }
- if (s6.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte6 s6.f3: got %d but expected %d\n", s6.f3, 3);
-- return 1;
- }
- if (s6.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte6 s6.f4: got %d but expected %d\n", s6.f4, 4);
-- return 1;
- }
- if (s6.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte6 s6.f5: got %d but expected %d\n", s6.f5, 5);
-- return 1;
- }
- if (s6.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte6 s6.f6: got %d but expected %d\n", s6.f6, 6);
-- return 1;
- }
-- return 2*addend;
-+ s6.f1+=addend; s6.f2+=addend; s6.f3+=addend; s6.f4+=addend; s6.f5+=addend; s6.f6+=addend;
-+ return s6;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7;
- } sbyte7;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte7 STDCALL
- mono_return_sbyte7 (sbyte7 s7, int addend) {
- if (s7.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte7 s7.f1: got %d but expected %d\n", s7.f1, 1);
-- return 1;
- }
- if (s7.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte7 s7.f2: got %d but expected %d\n", s7.f2, 2);
-- return 1;
- }
- if (s7.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte7 s7.f3: got %d but expected %d\n", s7.f3, 3);
-- return 1;
- }
- if (s7.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte7 s7.f4: got %d but expected %d\n", s7.f4, 4);
-- return 1;
- }
- if (s7.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte7 s7.f5: got %d but expected %d\n", s7.f5, 5);
-- return 1;
- }
- if (s7.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte7 s7.f6: got %d but expected %d\n", s7.f6, 6);
-- return 1;
- }
- if (s7.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte7 s7.f7: got %d but expected %d\n", s7.f7, 7);
-- return 1;
- }
-- return 2*addend;
-+ s7.f1+=addend; s7.f2+=addend; s7.f3+=addend; s7.f4+=addend; s7.f5+=addend; s7.f6+=addend; s7.f7+=addend;
-+ return s7;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8;
- } sbyte8;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte8 STDCALL
- mono_return_sbyte8 (sbyte8 s8, int addend) {
- if (s8.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte8 s8.f1: got %d but expected %d\n", s8.f1, 1);
-- return 1;
- }
- if (s8.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte8 s8.f2: got %d but expected %d\n", s8.f2, 2);
-- return 1;
- }
- if (s8.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte8 s8.f3: got %d but expected %d\n", s8.f3, 3);
-- return 1;
- }
- if (s8.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte8 s8.f4: got %d but expected %d\n", s8.f4, 4);
-- return 1;
- }
- if (s8.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte8 s8.f5: got %d but expected %d\n", s8.f5, 5);
-- return 1;
- }
- if (s8.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte8 s8.f6: got %d but expected %d\n", s8.f6, 6);
-- return 1;
- }
- if (s8.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte8 s8.f7: got %d but expected %d\n", s8.f7, 7);
-- return 1;
- }
- if (s8.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte8 s8.f8: got %d but expected %d\n", s8.f8, 8);
-- return 1;
- }
-- return 2*addend;
-+ s8.f1+=addend; s8.f2+=addend; s8.f3+=addend; s8.f4+=addend; s8.f5+=addend; s8.f6+=addend; s8.f7+=addend; s8.f8+=addend;
-+ return s8;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8,f9;
- } sbyte9;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte9 STDCALL
- mono_return_sbyte9 (sbyte9 s9, int addend) {
- if (s9.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte9 s9.f1: got %d but expected %d\n", s9.f1, 1);
-- return 1;
- }
- if (s9.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte9 s9.f2: got %d but expected %d\n", s9.f2, 2);
-- return 1;
- }
- if (s9.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte9 s9.f3: got %d but expected %d\n", s9.f3, 3);
-- return 1;
- }
- if (s9.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte9 s9.f4: got %d but expected %d\n", s9.f4, 4);
-- return 1;
- }
- if (s9.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte9 s9.f5: got %d but expected %d\n", s9.f5, 5);
-- return 1;
- }
- if (s9.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte9 s9.f6: got %d but expected %d\n", s9.f6, 6);
-- return 1;
- }
- if (s9.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte9 s9.f7: got %d but expected %d\n", s9.f7, 7);
-- return 1;
- }
- if (s9.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte9 s9.f8: got %d but expected %d\n", s9.f8, 8);
-- return 1;
- }
- if (s9.f9 != 9) {
- fprintf(stderr, "mono_return_sbyte9 s9.f9: got %d but expected %d\n", s9.f9, 9);
-- return 1;
- }
-- return 2*addend;
-+ s9.f1+=addend; s9.f2+=addend; s9.f3+=addend; s9.f4+=addend; s9.f5+=addend; s9.f6+=addend; s9.f7+=addend; s9.f8+=addend; s9.f9+=addend;
-+ return s9;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10;
- } sbyte10;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte10 STDCALL
- mono_return_sbyte10 (sbyte10 s10, int addend) {
- if (s10.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte10 s10.f1: got %d but expected %d\n", s10.f1, 1);
-- return 1;
- }
- if (s10.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte10 s10.f2: got %d but expected %d\n", s10.f2, 2);
-- return 1;
- }
- if (s10.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte10 s10.f3: got %d but expected %d\n", s10.f3, 3);
-- return 1;
- }
- if (s10.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte10 s10.f4: got %d but expected %d\n", s10.f4, 4);
-- return 1;
- }
- if (s10.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte10 s10.f5: got %d but expected %d\n", s10.f5, 5);
-- return 1;
- }
- if (s10.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte10 s10.f6: got %d but expected %d\n", s10.f6, 6);
-- return 1;
- }
- if (s10.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte10 s10.f7: got %d but expected %d\n", s10.f7, 7);
-- return 1;
- }
- if (s10.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte10 s10.f8: got %d but expected %d\n", s10.f8, 8);
-- return 1;
- }
- if (s10.f9 != 9) {
- fprintf(stderr, "mono_return_sbyte10 s10.f9: got %d but expected %d\n", s10.f9, 9);
-- return 1;
- }
- if (s10.f10 != 10) {
- fprintf(stderr, "mono_return_sbyte10 s10.f10: got %d but expected %d\n", s10.f10, 10);
-- return 1;
- }
-- return 2*addend;
-+ s10.f1+=addend; s10.f2+=addend; s10.f3+=addend; s10.f4+=addend; s10.f5+=addend; s10.f6+=addend; s10.f7+=addend; s10.f8+=addend; s10.f9+=addend; s10.f10+=addend;
-+ return s10;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11;
- } sbyte11;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte11 STDCALL
- mono_return_sbyte11 (sbyte11 s11, int addend) {
- if (s11.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte11 s11.f1: got %d but expected %d\n", s11.f1, 1);
-- return 1;
- }
- if (s11.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte11 s11.f2: got %d but expected %d\n", s11.f2, 2);
-- return 1;
- }
- if (s11.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte11 s11.f3: got %d but expected %d\n", s11.f3, 3);
-- return 1;
- }
- if (s11.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte11 s11.f4: got %d but expected %d\n", s11.f4, 4);
-- return 1;
- }
- if (s11.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte11 s11.f5: got %d but expected %d\n", s11.f5, 5);
-- return 1;
- }
- if (s11.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte11 s11.f6: got %d but expected %d\n", s11.f6, 6);
-- return 1;
- }
- if (s11.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte11 s11.f7: got %d but expected %d\n", s11.f7, 7);
-- return 1;
- }
- if (s11.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte11 s11.f8: got %d but expected %d\n", s11.f8, 8);
-- return 1;
- }
- if (s11.f9 != 9) {
- fprintf(stderr, "mono_return_sbyte11 s11.f9: got %d but expected %d\n", s11.f9, 9);
-- return 1;
- }
- if (s11.f10 != 10) {
- fprintf(stderr, "mono_return_sbyte11 s11.f10: got %d but expected %d\n", s11.f10, 10);
-- return 1;
- }
- if (s11.f11 != 11) {
- fprintf(stderr, "mono_return_sbyte11 s11.f11: got %d but expected %d\n", s11.f11, 11);
-- return 1;
- }
-- return 2*addend;
-+ s11.f1+=addend; s11.f2+=addend; s11.f3+=addend; s11.f4+=addend; s11.f5+=addend; s11.f6+=addend; s11.f7+=addend; s11.f8+=addend; s11.f9+=addend; s11.f10+=addend; s11.f11+=addend;
-+ return s11;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12;
- } sbyte12;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte12 STDCALL
- mono_return_sbyte12 (sbyte12 s12, int addend) {
- if (s12.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte12 s12.f1: got %d but expected %d\n", s12.f1, 1);
-- return 1;
- }
- if (s12.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte12 s12.f2: got %d but expected %d\n", s12.f2, 2);
-- return 1;
- }
- if (s12.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte12 s12.f3: got %d but expected %d\n", s12.f3, 3);
-- return 1;
- }
- if (s12.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte12 s12.f4: got %d but expected %d\n", s12.f4, 4);
-- return 1;
- }
- if (s12.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte12 s12.f5: got %d but expected %d\n", s12.f5, 5);
-- return 1;
- }
- if (s12.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte12 s12.f6: got %d but expected %d\n", s12.f6, 6);
-- return 1;
- }
- if (s12.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte12 s12.f7: got %d but expected %d\n", s12.f7, 7);
-- return 1;
- }
- if (s12.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte12 s12.f8: got %d but expected %d\n", s12.f8, 8);
-- return 1;
- }
- if (s12.f9 != 9) {
- fprintf(stderr, "mono_return_sbyte12 s12.f9: got %d but expected %d\n", s12.f9, 9);
-- return 1;
- }
- if (s12.f10 != 10) {
- fprintf(stderr, "mono_return_sbyte12 s12.f10: got %d but expected %d\n", s12.f10, 10);
-- return 1;
- }
- if (s12.f11 != 11) {
- fprintf(stderr, "mono_return_sbyte12 s12.f11: got %d but expected %d\n", s12.f11, 11);
-- return 1;
- }
- if (s12.f12 != 12) {
- fprintf(stderr, "mono_return_sbyte12 s12.f12: got %d but expected %d\n", s12.f12, 12);
-- return 1;
- }
-- return 2*addend;
-+ s12.f1+=addend; s12.f2+=addend; s12.f3+=addend; s12.f4+=addend; s12.f5+=addend; s12.f6+=addend; s12.f7+=addend; s12.f8+=addend; s12.f9+=addend; s12.f10+=addend; s12.f11+=addend; s12.f12+=addend;
-+ return s12;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13;
- } sbyte13;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte13 STDCALL
- mono_return_sbyte13 (sbyte13 s13, int addend) {
- if (s13.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte13 s13.f1: got %d but expected %d\n", s13.f1, 1);
-- return 1;
- }
- if (s13.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte13 s13.f2: got %d but expected %d\n", s13.f2, 2);
-- return 1;
- }
- if (s13.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte13 s13.f3: got %d but expected %d\n", s13.f3, 3);
-- return 1;
- }
- if (s13.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte13 s13.f4: got %d but expected %d\n", s13.f4, 4);
-- return 1;
- }
- if (s13.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte13 s13.f5: got %d but expected %d\n", s13.f5, 5);
-- return 1;
- }
- if (s13.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte13 s13.f6: got %d but expected %d\n", s13.f6, 6);
-- return 1;
- }
- if (s13.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte13 s13.f7: got %d but expected %d\n", s13.f7, 7);
-- return 1;
- }
- if (s13.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte13 s13.f8: got %d but expected %d\n", s13.f8, 8);
-- return 1;
- }
- if (s13.f9 != 9) {
- fprintf(stderr, "mono_return_sbyte13 s13.f9: got %d but expected %d\n", s13.f9, 9);
-- return 1;
- }
- if (s13.f10 != 10) {
- fprintf(stderr, "mono_return_sbyte13 s13.f10: got %d but expected %d\n", s13.f10, 10);
-- return 1;
- }
- if (s13.f11 != 11) {
- fprintf(stderr, "mono_return_sbyte13 s13.f11: got %d but expected %d\n", s13.f11, 11);
-- return 1;
- }
- if (s13.f12 != 12) {
- fprintf(stderr, "mono_return_sbyte13 s13.f12: got %d but expected %d\n", s13.f12, 12);
-- return 1;
- }
- if (s13.f13 != 13) {
- fprintf(stderr, "mono_return_sbyte13 s13.f13: got %d but expected %d\n", s13.f13, 13);
-- return 1;
- }
-- return 2*addend;
-+ s13.f1+=addend; s13.f2+=addend; s13.f3+=addend; s13.f4+=addend; s13.f5+=addend; s13.f6+=addend; s13.f7+=addend; s13.f8+=addend; s13.f9+=addend; s13.f10+=addend; s13.f11+=addend; s13.f12+=addend; s13.f13+=addend;
-+ return s13;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14;
- } sbyte14;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte14 STDCALL
- mono_return_sbyte14 (sbyte14 s14, int addend) {
- if (s14.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte14 s14.f1: got %d but expected %d\n", s14.f1, 1);
-- return 1;
- }
- if (s14.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte14 s14.f2: got %d but expected %d\n", s14.f2, 2);
-- return 1;
- }
- if (s14.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte14 s14.f3: got %d but expected %d\n", s14.f3, 3);
-- return 1;
- }
- if (s14.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte14 s14.f4: got %d but expected %d\n", s14.f4, 4);
-- return 1;
- }
- if (s14.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte14 s14.f5: got %d but expected %d\n", s14.f5, 5);
-- return 1;
- }
- if (s14.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte14 s14.f6: got %d but expected %d\n", s14.f6, 6);
-- return 1;
- }
- if (s14.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte14 s14.f7: got %d but expected %d\n", s14.f7, 7);
-- return 1;
- }
- if (s14.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte14 s14.f8: got %d but expected %d\n", s14.f8, 8);
-- return 1;
- }
- if (s14.f9 != 9) {
- fprintf(stderr, "mono_return_sbyte14 s14.f9: got %d but expected %d\n", s14.f9, 9);
-- return 1;
- }
- if (s14.f10 != 10) {
- fprintf(stderr, "mono_return_sbyte14 s14.f10: got %d but expected %d\n", s14.f10, 10);
-- return 1;
- }
- if (s14.f11 != 11) {
- fprintf(stderr, "mono_return_sbyte14 s14.f11: got %d but expected %d\n", s14.f11, 11);
-- return 1;
- }
- if (s14.f12 != 12) {
- fprintf(stderr, "mono_return_sbyte14 s14.f12: got %d but expected %d\n", s14.f12, 12);
-- return 1;
- }
- if (s14.f13 != 13) {
- fprintf(stderr, "mono_return_sbyte14 s14.f13: got %d but expected %d\n", s14.f13, 13);
-- return 1;
- }
- if (s14.f14 != 14) {
- fprintf(stderr, "mono_return_sbyte14 s14.f14: got %d but expected %d\n", s14.f14, 14);
-- return 1;
- }
-- return 2*addend;
-+ s14.f1+=addend; s14.f2+=addend; s14.f3+=addend; s14.f4+=addend; s14.f5+=addend; s14.f6+=addend; s14.f7+=addend; s14.f8+=addend; s14.f9+=addend; s14.f10+=addend; s14.f11+=addend; s14.f12+=addend; s14.f13+=addend; s14.f14+=addend;
-+ return s14;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15;
- } sbyte15;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte15 STDCALL
- mono_return_sbyte15 (sbyte15 s15, int addend) {
- if (s15.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte15 s15.f1: got %d but expected %d\n", s15.f1, 1);
-- return 1;
- }
- if (s15.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte15 s15.f2: got %d but expected %d\n", s15.f2, 2);
-- return 1;
- }
- if (s15.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte15 s15.f3: got %d but expected %d\n", s15.f3, 3);
-- return 1;
- }
- if (s15.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte15 s15.f4: got %d but expected %d\n", s15.f4, 4);
-- return 1;
- }
- if (s15.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte15 s15.f5: got %d but expected %d\n", s15.f5, 5);
-- return 1;
- }
- if (s15.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte15 s15.f6: got %d but expected %d\n", s15.f6, 6);
-- return 1;
- }
- if (s15.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte15 s15.f7: got %d but expected %d\n", s15.f7, 7);
-- return 1;
- }
- if (s15.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte15 s15.f8: got %d but expected %d\n", s15.f8, 8);
-- return 1;
- }
- if (s15.f9 != 9) {
- fprintf(stderr, "mono_return_sbyte15 s15.f9: got %d but expected %d\n", s15.f9, 9);
-- return 1;
- }
- if (s15.f10 != 10) {
- fprintf(stderr, "mono_return_sbyte15 s15.f10: got %d but expected %d\n", s15.f10, 10);
-- return 1;
- }
- if (s15.f11 != 11) {
- fprintf(stderr, "mono_return_sbyte15 s15.f11: got %d but expected %d\n", s15.f11, 11);
-- return 1;
- }
- if (s15.f12 != 12) {
- fprintf(stderr, "mono_return_sbyte15 s15.f12: got %d but expected %d\n", s15.f12, 12);
-- return 1;
- }
- if (s15.f13 != 13) {
- fprintf(stderr, "mono_return_sbyte15 s15.f13: got %d but expected %d\n", s15.f13, 13);
-- return 1;
- }
- if (s15.f14 != 14) {
- fprintf(stderr, "mono_return_sbyte15 s15.f14: got %d but expected %d\n", s15.f14, 14);
-- return 1;
- }
- if (s15.f15 != 15) {
- fprintf(stderr, "mono_return_sbyte15 s15.f15: got %d but expected %d\n", s15.f15, 15);
-- return 1;
- }
-- return 2*addend;
-+ s15.f1+=addend; s15.f2+=addend; s15.f3+=addend; s15.f4+=addend; s15.f5+=addend; s15.f6+=addend; s15.f7+=addend; s15.f8+=addend; s15.f9+=addend; s15.f10+=addend; s15.f11+=addend; s15.f12+=addend; s15.f13+=addend; s15.f14+=addend; s15.f15+=addend;
-+ return s15;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16;
- } sbyte16;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte16 STDCALL
- mono_return_sbyte16 (sbyte16 s16, int addend) {
- if (s16.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte16 s16.f1: got %d but expected %d\n", s16.f1, 1);
-- return 1;
- }
- if (s16.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte16 s16.f2: got %d but expected %d\n", s16.f2, 2);
-- return 1;
- }
- if (s16.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte16 s16.f3: got %d but expected %d\n", s16.f3, 3);
-- return 1;
- }
- if (s16.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte16 s16.f4: got %d but expected %d\n", s16.f4, 4);
-- return 1;
- }
- if (s16.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte16 s16.f5: got %d but expected %d\n", s16.f5, 5);
-- return 1;
- }
- if (s16.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte16 s16.f6: got %d but expected %d\n", s16.f6, 6);
-- return 1;
- }
- if (s16.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte16 s16.f7: got %d but expected %d\n", s16.f7, 7);
-- return 1;
- }
- if (s16.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte16 s16.f8: got %d but expected %d\n", s16.f8, 8);
-- return 1;
- }
- if (s16.f9 != 9) {
- fprintf(stderr, "mono_return_sbyte16 s16.f9: got %d but expected %d\n", s16.f9, 9);
-- return 1;
- }
- if (s16.f10 != 10) {
- fprintf(stderr, "mono_return_sbyte16 s16.f10: got %d but expected %d\n", s16.f10, 10);
-- return 1;
- }
- if (s16.f11 != 11) {
- fprintf(stderr, "mono_return_sbyte16 s16.f11: got %d but expected %d\n", s16.f11, 11);
-- return 1;
- }
- if (s16.f12 != 12) {
- fprintf(stderr, "mono_return_sbyte16 s16.f12: got %d but expected %d\n", s16.f12, 12);
-- return 1;
- }
- if (s16.f13 != 13) {
- fprintf(stderr, "mono_return_sbyte16 s16.f13: got %d but expected %d\n", s16.f13, 13);
-- return 1;
- }
- if (s16.f14 != 14) {
- fprintf(stderr, "mono_return_sbyte16 s16.f14: got %d but expected %d\n", s16.f14, 14);
-- return 1;
- }
- if (s16.f15 != 15) {
- fprintf(stderr, "mono_return_sbyte16 s16.f15: got %d but expected %d\n", s16.f15, 15);
-- return 1;
- }
- if (s16.f16 != 16) {
- fprintf(stderr, "mono_return_sbyte16 s16.f16: got %d but expected %d\n", s16.f16, 16);
-- return 1;
- }
-- return 2*addend;
-+ s16.f1+=addend; s16.f2+=addend; s16.f3+=addend; s16.f4+=addend; s16.f5+=addend; s16.f6+=addend; s16.f7+=addend; s16.f8+=addend; s16.f9+=addend; s16.f10+=addend; s16.f11+=addend; s16.f12+=addend; s16.f13+=addend; s16.f14+=addend; s16.f15+=addend; s16.f16+=addend;
-+ return s16;
- }
-
- typedef struct {
- char f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17;
- } sbyte17;
-
--LIBTEST_API char STDCALL
-+LIBTEST_API sbyte17 STDCALL
- mono_return_sbyte17 (sbyte17 s17, int addend) {
- if (s17.f1 != 1) {
- fprintf(stderr, "mono_return_sbyte17 s17.f1: got %d but expected %d\n", s17.f1, 1);
-- return 1;
- }
- if (s17.f2 != 2) {
- fprintf(stderr, "mono_return_sbyte17 s17.f2: got %d but expected %d\n", s17.f2, 2);
-- return 1;
- }
- if (s17.f3 != 3) {
- fprintf(stderr, "mono_return_sbyte17 s17.f3: got %d but expected %d\n", s17.f3, 3);
-- return 1;
- }
- if (s17.f4 != 4) {
- fprintf(stderr, "mono_return_sbyte17 s17.f4: got %d but expected %d\n", s17.f4, 4);
-- return 1;
- }
- if (s17.f5 != 5) {
- fprintf(stderr, "mono_return_sbyte17 s17.f5: got %d but expected %d\n", s17.f5, 5);
-- return 1;
- }
- if (s17.f6 != 6) {
- fprintf(stderr, "mono_return_sbyte17 s17.f6: got %d but expected %d\n", s17.f6, 6);
-- return 1;
- }
- if (s17.f7 != 7) {
- fprintf(stderr, "mono_return_sbyte17 s17.f7: got %d but expected %d\n", s17.f7, 7);
-- return 1;
- }
- if (s17.f8 != 8) {
- fprintf(stderr, "mono_return_sbyte17 s17.f8: got %d but expected %d\n", s17.f8, 8);
-- return 1;
- }
- if (s17.f9 != 9) {
- fprintf(stderr, "mono_return_sbyte17 s17.f9: got %d but expected %d\n", s17.f9, 9);
-- return 1;
- }
- if (s17.f10 != 10) {
- fprintf(stderr, "mono_return_sbyte17 s17.f10: got %d but expected %d\n", s17.f10, 10);
-- return 1;
- }
- if (s17.f11 != 11) {
- fprintf(stderr, "mono_return_sbyte17 s17.f11: got %d but expected %d\n", s17.f11, 11);
-- return 1;
- }
- if (s17.f12 != 12) {
- fprintf(stderr, "mono_return_sbyte17 s17.f12: got %d but expected %d\n", s17.f12, 12);
-- return 1;
- }
- if (s17.f13 != 13) {
- fprintf(stderr, "mono_return_sbyte17 s17.f13: got %d but expected %d\n", s17.f13, 13);
-- return 1;
- }
- if (s17.f14 != 14) {
- fprintf(stderr, "mono_return_sbyte17 s17.f14: got %d but expected %d\n", s17.f14, 14);
-- return 1;
- }
- if (s17.f15 != 15) {
- fprintf(stderr, "mono_return_sbyte17 s17.f15: got %d but expected %d\n", s17.f15, 15);
-- return 1;
- }
- if (s17.f16 != 16) {
- fprintf(stderr, "mono_return_sbyte17 s17.f16: got %d but expected %d\n", s17.f16, 16);
-- return 1;
- }
- if (s17.f17 != 17) {
- fprintf(stderr, "mono_return_sbyte17 s17.f17: got %d but expected %d\n", s17.f17, 17);
-- return 1;
- }
-- return 2*addend;
-+ s17.f1+=addend; s17.f2+=addend; s17.f3+=addend; s17.f4+=addend; s17.f5+=addend; s17.f6+=addend; s17.f7+=addend; s17.f8+=addend; s17.f9+=addend; s17.f10+=addend; s17.f11+=addend; s17.f12+=addend; s17.f13+=addend; s17.f14+=addend; s17.f15+=addend; s17.f16+=addend; s17.f17+=addend;
-+ return s17;
- }
-
- typedef struct {
-+ struct {
-+ char f1;
-+ } nested1;
-+ char f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15;
-+ struct {
-+ char f16;
-+ } nested2;
-+} sbyte16_nested;
-+
-+LIBTEST_API sbyte16_nested STDCALL
-+mono_return_sbyte16_nested (sbyte16_nested sn16, int addend) {
-+ if (sn16.nested1.f1 != 1) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.nested1.f1: got %d but expected %d\n", sn16.nested1.f1, 1);
-+ }
-+ if (sn16.f2 != 2) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f2: got %d but expected %d\n", sn16.f2, 2);
-+ }
-+ if (sn16.f3 != 3) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f3: got %d but expected %d\n", sn16.f3, 3);
-+ }
-+ if (sn16.f4 != 4) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f4: got %d but expected %d\n", sn16.f4, 4);
-+ }
-+ if (sn16.f5 != 5) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f5: got %d but expected %d\n", sn16.f5, 5);
-+ }
-+ if (sn16.f6 != 6) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f6: got %d but expected %d\n", sn16.f6, 6);
-+ }
-+ if (sn16.f7 != 7) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f7: got %d but expected %d\n", sn16.f7, 7);
-+ }
-+ if (sn16.f8 != 8) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f8: got %d but expected %d\n", sn16.f8, 8);
-+ }
-+ if (sn16.f9 != 9) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f9: got %d but expected %d\n", sn16.f9, 9);
-+ }
-+ if (sn16.f10 != 10) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f10: got %d but expected %d\n", sn16.f10, 10);
-+ }
-+ if (sn16.f11 != 11) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f11: got %d but expected %d\n", sn16.f11, 11);
-+ }
-+ if (sn16.f12 != 12) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f12: got %d but expected %d\n", sn16.f12, 12);
-+ }
-+ if (sn16.f13 != 13) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f13: got %d but expected %d\n", sn16.f13, 13);
-+ }
-+ if (sn16.f14 != 14) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f14: got %d but expected %d\n", sn16.f14, 14);
-+ }
-+ if (sn16.f15 != 15) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.f15: got %d but expected %d\n", sn16.f15, 15);
-+ }
-+ if (sn16.nested2.f16 != 16) {
-+ fprintf(stderr, "mono_return_sbyte16_nested sn16.nested2.f16: got %d but expected %d\n", sn16.nested2.f16, 16);
-+ }
-+ sn16.nested1.f1+=addend; sn16.f2+=addend; sn16.f3+=addend; sn16.f4+=addend; sn16.f5+=addend; sn16.f6+=addend; sn16.f7+=addend; sn16.f8+=addend; sn16.f9+=addend; sn16.f10+=addend; sn16.f11+=addend; sn16.f12+=addend; sn16.f13+=addend; sn16.f14+=addend; sn16.f15+=addend; sn16.nested2.f16+=addend;
-+ return sn16;
-+}
-+
-+
-+typedef struct {
- short f1;
- } short1;
-
--LIBTEST_API short STDCALL
-+LIBTEST_API short1 STDCALL
- mono_return_short1 (short1 s1, int addend) {
- if (s1.f1 != 1) {
- fprintf(stderr, "mono_return_short1 s1.f1: got %d but expected %d\n", s1.f1, 1);
-- return 1;
- }
-- return 2*addend;
-+ s1.f1+=addend;
-+ return s1;
- }
-
- typedef struct {
- short f1,f2;
- } short2;
-
--LIBTEST_API short STDCALL
-+LIBTEST_API short2 STDCALL
- mono_return_short2 (short2 s2, int addend) {
- if (s2.f1 != 1) {
- fprintf(stderr, "mono_return_short2 s2.f1: got %d but expected %d\n", s2.f1, 1);
-- return 1;
- }
- if (s2.f2 != 2) {
- fprintf(stderr, "mono_return_short2 s2.f2: got %d but expected %d\n", s2.f2, 2);
-- return 1;
- }
-- return 2*addend;
-+ s2.f1+=addend; s2.f2+=addend;
-+ return s2;
- }
-
- typedef struct {
- short f1,f2,f3;
- } short3;
-
--LIBTEST_API short STDCALL
-+LIBTEST_API short3 STDCALL
- mono_return_short3 (short3 s3, int addend) {
- if (s3.f1 != 1) {
- fprintf(stderr, "mono_return_short3 s3.f1: got %d but expected %d\n", s3.f1, 1);
-- return 1;
- }
- if (s3.f2 != 2) {
- fprintf(stderr, "mono_return_short3 s3.f2: got %d but expected %d\n", s3.f2, 2);
-- return 1;
- }
- if (s3.f3 != 3) {
- fprintf(stderr, "mono_return_short3 s3.f3: got %d but expected %d\n", s3.f3, 3);
-- return 1;
- }
-- return 2*addend;
-+ s3.f1+=addend; s3.f2+=addend; s3.f3+=addend;
-+ return s3;
- }
-
- typedef struct {
- short f1,f2,f3,f4;
- } short4;
-
--LIBTEST_API short STDCALL
-+LIBTEST_API short4 STDCALL
- mono_return_short4 (short4 s4, int addend) {
- if (s4.f1 != 1) {
- fprintf(stderr, "mono_return_short4 s4.f1: got %d but expected %d\n", s4.f1, 1);
-- return 1;
- }
- if (s4.f2 != 2) {
- fprintf(stderr, "mono_return_short4 s4.f2: got %d but expected %d\n", s4.f2, 2);
-- return 1;
- }
- if (s4.f3 != 3) {
- fprintf(stderr, "mono_return_short4 s4.f3: got %d but expected %d\n", s4.f3, 3);
-- return 1;
- }
- if (s4.f4 != 4) {
- fprintf(stderr, "mono_return_short4 s4.f4: got %d but expected %d\n", s4.f4, 4);
-- return 1;
- }
-- return 2*addend;
-+ s4.f1+=addend; s4.f2+=addend; s4.f3+=addend; s4.f4+=addend;
-+ return s4;
- }
-
- typedef struct {
- short f1,f2,f3,f4,f5;
- } short5;
-
--LIBTEST_API short STDCALL
-+LIBTEST_API short5 STDCALL
- mono_return_short5 (short5 s5, int addend) {
- if (s5.f1 != 1) {
- fprintf(stderr, "mono_return_short5 s5.f1: got %d but expected %d\n", s5.f1, 1);
-- return 1;
- }
- if (s5.f2 != 2) {
- fprintf(stderr, "mono_return_short5 s5.f2: got %d but expected %d\n", s5.f2, 2);
-- return 1;
- }
- if (s5.f3 != 3) {
- fprintf(stderr, "mono_return_short5 s5.f3: got %d but expected %d\n", s5.f3, 3);
-- return 1;
- }
- if (s5.f4 != 4) {
- fprintf(stderr, "mono_return_short5 s5.f4: got %d but expected %d\n", s5.f4, 4);
-- return 1;
- }
- if (s5.f5 != 5) {
- fprintf(stderr, "mono_return_short5 s5.f5: got %d but expected %d\n", s5.f5, 5);
-- return 1;
- }
-- return 2*addend;
-+ s5.f1+=addend; s5.f2+=addend; s5.f3+=addend; s5.f4+=addend; s5.f5+=addend;
-+ return s5;
- }
-
- typedef struct {
- short f1,f2,f3,f4,f5,f6;
- } short6;
-
--LIBTEST_API short STDCALL
-+LIBTEST_API short6 STDCALL
- mono_return_short6 (short6 s6, int addend) {
- if (s6.f1 != 1) {
- fprintf(stderr, "mono_return_short6 s6.f1: got %d but expected %d\n", s6.f1, 1);
-- return 1;
- }
- if (s6.f2 != 2) {
- fprintf(stderr, "mono_return_short6 s6.f2: got %d but expected %d\n", s6.f2, 2);
-- return 1;
- }
- if (s6.f3 != 3) {
- fprintf(stderr, "mono_return_short6 s6.f3: got %d but expected %d\n", s6.f3, 3);
-- return 1;
- }
- if (s6.f4 != 4) {
- fprintf(stderr, "mono_return_short6 s6.f4: got %d but expected %d\n", s6.f4, 4);
-- return 1;
- }
- if (s6.f5 != 5) {
- fprintf(stderr, "mono_return_short6 s6.f5: got %d but expected %d\n", s6.f5, 5);
-- return 1;
- }
- if (s6.f6 != 6) {
- fprintf(stderr, "mono_return_short6 s6.f6: got %d but expected %d\n", s6.f6, 6);
-- return 1;
- }
-- return 2*addend;
-+ s6.f1+=addend; s6.f2+=addend; s6.f3+=addend; s6.f4+=addend; s6.f5+=addend; s6.f6+=addend;
-+ return s6;
- }
-
- typedef struct {
- short f1,f2,f3,f4,f5,f6,f7;
- } short7;
-
--LIBTEST_API short STDCALL
-+LIBTEST_API short7 STDCALL
- mono_return_short7 (short7 s7, int addend) {
- if (s7.f1 != 1) {
- fprintf(stderr, "mono_return_short7 s7.f1: got %d but expected %d\n", s7.f1, 1);
-- return 1;
- }
- if (s7.f2 != 2) {
- fprintf(stderr, "mono_return_short7 s7.f2: got %d but expected %d\n", s7.f2, 2);
-- return 1;
- }
- if (s7.f3 != 3) {
- fprintf(stderr, "mono_return_short7 s7.f3: got %d but expected %d\n", s7.f3, 3);
-- return 1;
- }
- if (s7.f4 != 4) {
- fprintf(stderr, "mono_return_short7 s7.f4: got %d but expected %d\n", s7.f4, 4);
-- return 1;
- }
- if (s7.f5 != 5) {
- fprintf(stderr, "mono_return_short7 s7.f5: got %d but expected %d\n", s7.f5, 5);
-- return 1;
- }
- if (s7.f6 != 6) {
- fprintf(stderr, "mono_return_short7 s7.f6: got %d but expected %d\n", s7.f6, 6);
-- return 1;
- }
- if (s7.f7 != 7) {
- fprintf(stderr, "mono_return_short7 s7.f7: got %d but expected %d\n", s7.f7, 7);
-- return 1;
- }
-- return 2*addend;
-+ s7.f1+=addend; s7.f2+=addend; s7.f3+=addend; s7.f4+=addend; s7.f5+=addend; s7.f6+=addend; s7.f7+=addend;
-+ return s7;
- }
-
- typedef struct {
- short f1,f2,f3,f4,f5,f6,f7,f8;
- } short8;
-
--LIBTEST_API short STDCALL
-+LIBTEST_API short8 STDCALL
- mono_return_short8 (short8 s8, int addend) {
- if (s8.f1 != 1) {
- fprintf(stderr, "mono_return_short8 s8.f1: got %d but expected %d\n", s8.f1, 1);
-- return 1;
- }
- if (s8.f2 != 2) {
- fprintf(stderr, "mono_return_short8 s8.f2: got %d but expected %d\n", s8.f2, 2);
-- return 1;
- }
- if (s8.f3 != 3) {
- fprintf(stderr, "mono_return_short8 s8.f3: got %d but expected %d\n", s8.f3, 3);
-- return 1;
- }
- if (s8.f4 != 4) {
- fprintf(stderr, "mono_return_short8 s8.f4: got %d but expected %d\n", s8.f4, 4);
-- return 1;
- }
- if (s8.f5 != 5) {
- fprintf(stderr, "mono_return_short8 s8.f5: got %d but expected %d\n", s8.f5, 5);
-- return 1;
- }
- if (s8.f6 != 6) {
- fprintf(stderr, "mono_return_short8 s8.f6: got %d but expected %d\n", s8.f6, 6);
-- return 1;
- }
- if (s8.f7 != 7) {
- fprintf(stderr, "mono_return_short8 s8.f7: got %d but expected %d\n", s8.f7, 7);
-- return 1;
- }
- if (s8.f8 != 8) {
- fprintf(stderr, "mono_return_short8 s8.f8: got %d but expected %d\n", s8.f8, 8);
-- return 1;
- }
-- return 2*addend;
-+ s8.f1+=addend; s8.f2+=addend; s8.f3+=addend; s8.f4+=addend; s8.f5+=addend; s8.f6+=addend; s8.f7+=addend; s8.f8+=addend;
-+ return s8;
- }
-
- typedef struct {
- short f1,f2,f3,f4,f5,f6,f7,f8,f9;
- } short9;
-
--LIBTEST_API short STDCALL
-+LIBTEST_API short9 STDCALL
- mono_return_short9 (short9 s9, int addend) {
- if (s9.f1 != 1) {
- fprintf(stderr, "mono_return_short9 s9.f1: got %d but expected %d\n", s9.f1, 1);
-- return 1;
- }
- if (s9.f2 != 2) {
- fprintf(stderr, "mono_return_short9 s9.f2: got %d but expected %d\n", s9.f2, 2);
-- return 1;
- }
- if (s9.f3 != 3) {
- fprintf(stderr, "mono_return_short9 s9.f3: got %d but expected %d\n", s9.f3, 3);
-- return 1;
- }
- if (s9.f4 != 4) {
- fprintf(stderr, "mono_return_short9 s9.f4: got %d but expected %d\n", s9.f4, 4);
-- return 1;
- }
- if (s9.f5 != 5) {
- fprintf(stderr, "mono_return_short9 s9.f5: got %d but expected %d\n", s9.f5, 5);
-- return 1;
- }
- if (s9.f6 != 6) {
- fprintf(stderr, "mono_return_short9 s9.f6: got %d but expected %d\n", s9.f6, 6);
-- return 1;
- }
- if (s9.f7 != 7) {
- fprintf(stderr, "mono_return_short9 s9.f7: got %d but expected %d\n", s9.f7, 7);
-- return 1;
- }
- if (s9.f8 != 8) {
- fprintf(stderr, "mono_return_short9 s9.f8: got %d but expected %d\n", s9.f8, 8);
-- return 1;
- }
- if (s9.f9 != 9) {
- fprintf(stderr, "mono_return_short9 s9.f9: got %d but expected %d\n", s9.f9, 9);
-- return 1;
- }
-- return 2*addend;
-+ s9.f1+=addend; s9.f2+=addend; s9.f3+=addend; s9.f4+=addend; s9.f5+=addend; s9.f6+=addend; s9.f7+=addend; s9.f8+=addend; s9.f9+=addend;
-+ return s9;
-+}
-+
-+typedef struct {
-+ struct {
-+ short f1;
-+ } nested1;
-+ short f2,f3,f4,f5,f6,f7;
-+ struct {
-+ short f8;
-+ } nested2;
-+} short8_nested;
-+
-+LIBTEST_API short8_nested STDCALL
-+mono_return_short8_nested (short8_nested sn8, int addend) {
-+ if (sn8.nested1.f1 != 1) {
-+ fprintf(stderr, "mono_return_short8_nested sn8.nested1.f1: got %d but expected %d\n", sn8.nested1.f1, 1);
-+ }
-+ if (sn8.f2 != 2) {
-+ fprintf(stderr, "mono_return_short8_nested sn8.f2: got %d but expected %d\n", sn8.f2, 2);
-+ }
-+ if (sn8.f3 != 3) {
-+ fprintf(stderr, "mono_return_short8_nested sn8.f3: got %d but expected %d\n", sn8.f3, 3);
-+ }
-+ if (sn8.f4 != 4) {
-+ fprintf(stderr, "mono_return_short8_nested sn8.f4: got %d but expected %d\n", sn8.f4, 4);
-+ }
-+ if (sn8.f5 != 5) {
-+ fprintf(stderr, "mono_return_short8_nested sn8.f5: got %d but expected %d\n", sn8.f5, 5);
-+ }
-+ if (sn8.f6 != 6) {
-+ fprintf(stderr, "mono_return_short8_nested sn8.f6: got %d but expected %d\n", sn8.f6, 6);
-+ }
-+ if (sn8.f7 != 7) {
-+ fprintf(stderr, "mono_return_short8_nested sn8.f7: got %d but expected %d\n", sn8.f7, 7);
-+ }
-+ if (sn8.nested2.f8 != 8) {
-+ fprintf(stderr, "mono_return_short8_nested sn8.nested2.f8: got %d but expected %d\n", sn8.nested2.f8, 8);
-+ }
-+ sn8.nested1.f1+=addend; sn8.f2+=addend; sn8.f3+=addend; sn8.f4+=addend; sn8.f5+=addend; sn8.f6+=addend; sn8.f7+=addend; sn8.nested2.f8+=addend;
-+ return sn8;
- }
-
-+
- typedef struct {
- int f1;
- } int1;
-
--LIBTEST_API int STDCALL
-+LIBTEST_API int1 STDCALL
- mono_return_int1 (int1 s1, int addend) {
- if (s1.f1 != 1) {
- fprintf(stderr, "mono_return_int1 s1.f1: got %d but expected %d\n", s1.f1, 1);
-- return 1;
- }
-- return 2*addend;
-+ s1.f1+=addend;
-+ return s1;
- }
-
- typedef struct {
- int f1,f2;
- } int2;
-
--LIBTEST_API int STDCALL
-+LIBTEST_API int2 STDCALL
- mono_return_int2 (int2 s2, int addend) {
- if (s2.f1 != 1) {
- fprintf(stderr, "mono_return_int2 s2.f1: got %d but expected %d\n", s2.f1, 1);
-- return 1;
- }
- if (s2.f2 != 2) {
- fprintf(stderr, "mono_return_int2 s2.f2: got %d but expected %d\n", s2.f2, 2);
-- return 1;
- }
-- return 2*addend;
-+ s2.f1+=addend; s2.f2+=addend;
-+ return s2;
- }
-
- typedef struct {
- int f1,f2,f3;
- } int3;
-
--LIBTEST_API int STDCALL
-+LIBTEST_API int3 STDCALL
- mono_return_int3 (int3 s3, int addend) {
- if (s3.f1 != 1) {
- fprintf(stderr, "mono_return_int3 s3.f1: got %d but expected %d\n", s3.f1, 1);
-- return 1;
- }
- if (s3.f2 != 2) {
- fprintf(stderr, "mono_return_int3 s3.f2: got %d but expected %d\n", s3.f2, 2);
-- return 1;
- }
- if (s3.f3 != 3) {
- fprintf(stderr, "mono_return_int3 s3.f3: got %d but expected %d\n", s3.f3, 3);
-- return 1;
- }
-- return 2*addend;
-+ s3.f1+=addend; s3.f2+=addend; s3.f3+=addend;
-+ return s3;
- }
-
- typedef struct {
- int f1,f2,f3,f4;
- } int4;
-
--LIBTEST_API int STDCALL
-+LIBTEST_API int4 STDCALL
- mono_return_int4 (int4 s4, int addend) {
- if (s4.f1 != 1) {
- fprintf(stderr, "mono_return_int4 s4.f1: got %d but expected %d\n", s4.f1, 1);
-- return 1;
- }
- if (s4.f2 != 2) {
- fprintf(stderr, "mono_return_int4 s4.f2: got %d but expected %d\n", s4.f2, 2);
-- return 1;
- }
- if (s4.f3 != 3) {
- fprintf(stderr, "mono_return_int4 s4.f3: got %d but expected %d\n", s4.f3, 3);
-- return 1;
- }
- if (s4.f4 != 4) {
- fprintf(stderr, "mono_return_int4 s4.f4: got %d but expected %d\n", s4.f4, 4);
-- return 1;
- }
-- return 2*addend;
-+ s4.f1+=addend; s4.f2+=addend; s4.f3+=addend; s4.f4+=addend;
-+ return s4;
- }
-
- typedef struct {
- int f1,f2,f3,f4,f5;
- } int5;
-
--LIBTEST_API int STDCALL
-+LIBTEST_API int5 STDCALL
- mono_return_int5 (int5 s5, int addend) {
- if (s5.f1 != 1) {
- fprintf(stderr, "mono_return_int5 s5.f1: got %d but expected %d\n", s5.f1, 1);
-- return 1;
- }
- if (s5.f2 != 2) {
- fprintf(stderr, "mono_return_int5 s5.f2: got %d but expected %d\n", s5.f2, 2);
-- return 1;
- }
- if (s5.f3 != 3) {
- fprintf(stderr, "mono_return_int5 s5.f3: got %d but expected %d\n", s5.f3, 3);
-- return 1;
- }
- if (s5.f4 != 4) {
- fprintf(stderr, "mono_return_int5 s5.f4: got %d but expected %d\n", s5.f4, 4);
-- return 1;
- }
- if (s5.f5 != 5) {
- fprintf(stderr, "mono_return_int5 s5.f5: got %d but expected %d\n", s5.f5, 5);
-- return 1;
- }
-- return 2*addend;
-+ s5.f1+=addend; s5.f2+=addend; s5.f3+=addend; s5.f4+=addend; s5.f5+=addend;
-+ return s5;
-+}
-+
-+typedef struct {
-+ struct {
-+ int f1;
-+ } nested1;
-+ int f2,f3;
-+ struct {
-+ int f4;
-+ } nested2;
-+} int4_nested;
-+
-+LIBTEST_API int4_nested STDCALL
-+mono_return_int4_nested (int4_nested sn4, int addend) {
-+ if (sn4.nested1.f1 != 1) {
-+ fprintf(stderr, "mono_return_int4_nested sn4.nested1.f1: got %d but expected %d\n", sn4.nested1.f1, 1);
-+ }
-+ if (sn4.f2 != 2) {
-+ fprintf(stderr, "mono_return_int4_nested sn4.f2: got %d but expected %d\n", sn4.f2, 2);
-+ }
-+ if (sn4.f3 != 3) {
-+ fprintf(stderr, "mono_return_int4_nested sn4.f3: got %d but expected %d\n", sn4.f3, 3);
-+ }
-+ if (sn4.nested2.f4 != 4) {
-+ fprintf(stderr, "mono_return_int4_nested sn4.nested2.f4: got %d but expected %d\n", sn4.nested2.f4, 4);
-+ }
-+ sn4.nested1.f1+=addend; sn4.f2+=addend; sn4.f3+=addend; sn4.nested2.f4+=addend;
-+ return sn4;
- }
-
- typedef struct {
- float f1;
- } float1;
-
--LIBTEST_API float STDCALL
-+LIBTEST_API float1 STDCALL
- mono_return_float1 (float1 s1, int addend) {
- if (s1.f1 != 1) {
- fprintf(stderr, "mono_return_float1 s1.f1: got %f but expected %d\n", s1.f1, 1);
-- return 1;
- }
-- return 2*addend;
-+ s1.f1+=addend;
-+ return s1;
- }
-
- typedef struct {
- float f1,f2;
- } float2;
-
--LIBTEST_API float STDCALL
-+LIBTEST_API float2 STDCALL
- mono_return_float2 (float2 s2, int addend) {
- if (s2.f1 != 1) {
- fprintf(stderr, "mono_return_float2 s2.f1: got %f but expected %d\n", s2.f1, 1);
-- return 1;
- }
- if (s2.f2 != 2) {
- fprintf(stderr, "mono_return_float2 s2.f2: got %f but expected %d\n", s2.f2, 2);
-- return 1;
- }
-- return 2*addend;
-+ s2.f1+=addend; s2.f2+=addend;
-+ return s2;
- }
-
- typedef struct {
- float f1,f2,f3;
- } float3;
-
--LIBTEST_API float STDCALL
-+LIBTEST_API float3 STDCALL
- mono_return_float3 (float3 s3, int addend) {
- if (s3.f1 != 1) {
- fprintf(stderr, "mono_return_float3 s3.f1: got %f but expected %d\n", s3.f1, 1);
-- return 1;
- }
- if (s3.f2 != 2) {
- fprintf(stderr, "mono_return_float3 s3.f2: got %f but expected %d\n", s3.f2, 2);
-- return 1;
- }
- if (s3.f3 != 3) {
- fprintf(stderr, "mono_return_float3 s3.f3: got %f but expected %d\n", s3.f3, 3);
-- return 1;
- }
-- return 2*addend;
-+ s3.f1+=addend; s3.f2+=addend; s3.f3+=addend;
-+ return s3;
- }
-
- typedef struct {
- float f1,f2,f3,f4;
- } float4;
-
--LIBTEST_API float STDCALL
-+LIBTEST_API float4 STDCALL
- mono_return_float4 (float4 s4, int addend) {
- if (s4.f1 != 1) {
- fprintf(stderr, "mono_return_float4 s4.f1: got %f but expected %d\n", s4.f1, 1);
-- return 1;
- }
- if (s4.f2 != 2) {
- fprintf(stderr, "mono_return_float4 s4.f2: got %f but expected %d\n", s4.f2, 2);
-- return 1;
- }
- if (s4.f3 != 3) {
- fprintf(stderr, "mono_return_float4 s4.f3: got %f but expected %d\n", s4.f3, 3);
-- return 1;
- }
- if (s4.f4 != 4) {
- fprintf(stderr, "mono_return_float4 s4.f4: got %f but expected %d\n", s4.f4, 4);
-- return 1;
- }
-- return 2*addend;
-+ s4.f1+=addend; s4.f2+=addend; s4.f3+=addend; s4.f4+=addend;
-+ return s4;
- }
-
- typedef struct {
- float f1,f2,f3,f4,f5;
- } float5;
-
--LIBTEST_API float STDCALL
-+LIBTEST_API float5 STDCALL
- mono_return_float5 (float5 s5, int addend) {
- if (s5.f1 != 1) {
- fprintf(stderr, "mono_return_float5 s5.f1: got %f but expected %d\n", s5.f1, 1);
-- return 1;
- }
- if (s5.f2 != 2) {
- fprintf(stderr, "mono_return_float5 s5.f2: got %f but expected %d\n", s5.f2, 2);
-- return 1;
- }
- if (s5.f3 != 3) {
- fprintf(stderr, "mono_return_float5 s5.f3: got %f but expected %d\n", s5.f3, 3);
-- return 1;
- }
- if (s5.f4 != 4) {
- fprintf(stderr, "mono_return_float5 s5.f4: got %f but expected %d\n", s5.f4, 4);
-- return 1;
- }
- if (s5.f5 != 5) {
- fprintf(stderr, "mono_return_float5 s5.f5: got %f but expected %d\n", s5.f5, 5);
-- return 1;
- }
-- return 2*addend;
-+ s5.f1+=addend; s5.f2+=addend; s5.f3+=addend; s5.f4+=addend; s5.f5+=addend;
-+ return s5;
- }
-
- typedef struct {
- float f1,f2,f3,f4,f5,f6;
- } float6;
-
--LIBTEST_API float STDCALL
-+LIBTEST_API float6 STDCALL
- mono_return_float6 (float6 s6, int addend) {
- if (s6.f1 != 1) {
- fprintf(stderr, "mono_return_float6 s6.f1: got %f but expected %d\n", s6.f1, 1);
-- return 1;
- }
- if (s6.f2 != 2) {
- fprintf(stderr, "mono_return_float6 s6.f2: got %f but expected %d\n", s6.f2, 2);
-- return 1;
- }
- if (s6.f3 != 3) {
- fprintf(stderr, "mono_return_float6 s6.f3: got %f but expected %d\n", s6.f3, 3);
-- return 1;
- }
- if (s6.f4 != 4) {
- fprintf(stderr, "mono_return_float6 s6.f4: got %f but expected %d\n", s6.f4, 4);
-- return 1;
- }
- if (s6.f5 != 5) {
- fprintf(stderr, "mono_return_float6 s6.f5: got %f but expected %d\n", s6.f5, 5);
-- return 1;
- }
- if (s6.f6 != 6) {
- fprintf(stderr, "mono_return_float6 s6.f6: got %f but expected %d\n", s6.f6, 6);
-- return 1;
- }
-- return 2*addend;
-+ s6.f1+=addend; s6.f2+=addend; s6.f3+=addend; s6.f4+=addend; s6.f5+=addend; s6.f6+=addend;
-+ return s6;
- }
-
- typedef struct {
- float f1,f2,f3,f4,f5,f6,f7;
- } float7;
-
--LIBTEST_API float STDCALL
-+LIBTEST_API float7 STDCALL
- mono_return_float7 (float7 s7, int addend) {
- if (s7.f1 != 1) {
- fprintf(stderr, "mono_return_float7 s7.f1: got %f but expected %d\n", s7.f1, 1);
-- return 1;
- }
- if (s7.f2 != 2) {
- fprintf(stderr, "mono_return_float7 s7.f2: got %f but expected %d\n", s7.f2, 2);
-- return 1;
- }
- if (s7.f3 != 3) {
- fprintf(stderr, "mono_return_float7 s7.f3: got %f but expected %d\n", s7.f3, 3);
-- return 1;
- }
- if (s7.f4 != 4) {
- fprintf(stderr, "mono_return_float7 s7.f4: got %f but expected %d\n", s7.f4, 4);
-- return 1;
- }
- if (s7.f5 != 5) {
- fprintf(stderr, "mono_return_float7 s7.f5: got %f but expected %d\n", s7.f5, 5);
-- return 1;
- }
- if (s7.f6 != 6) {
- fprintf(stderr, "mono_return_float7 s7.f6: got %f but expected %d\n", s7.f6, 6);
-- return 1;
- }
- if (s7.f7 != 7) {
- fprintf(stderr, "mono_return_float7 s7.f7: got %f but expected %d\n", s7.f7, 7);
-- return 1;
- }
-- return 2*addend;
-+ s7.f1+=addend; s7.f2+=addend; s7.f3+=addend; s7.f4+=addend; s7.f5+=addend; s7.f6+=addend; s7.f7+=addend;
-+ return s7;
- }
-
- typedef struct {
- float f1,f2,f3,f4,f5,f6,f7,f8;
- } float8;
-
--LIBTEST_API float STDCALL
-+LIBTEST_API float8 STDCALL
- mono_return_float8 (float8 s8, int addend) {
- if (s8.f1 != 1) {
- fprintf(stderr, "mono_return_float8 s8.f1: got %f but expected %d\n", s8.f1, 1);
-- return 1;
- }
- if (s8.f2 != 2) {
- fprintf(stderr, "mono_return_float8 s8.f2: got %f but expected %d\n", s8.f2, 2);
-- return 1;
- }
- if (s8.f3 != 3) {
- fprintf(stderr, "mono_return_float8 s8.f3: got %f but expected %d\n", s8.f3, 3);
-- return 1;
- }
- if (s8.f4 != 4) {
- fprintf(stderr, "mono_return_float8 s8.f4: got %f but expected %d\n", s8.f4, 4);
-- return 1;
- }
- if (s8.f5 != 5) {
- fprintf(stderr, "mono_return_float8 s8.f5: got %f but expected %d\n", s8.f5, 5);
-- return 1;
- }
- if (s8.f6 != 6) {
- fprintf(stderr, "mono_return_float8 s8.f6: got %f but expected %d\n", s8.f6, 6);
-- return 1;
- }
- if (s8.f7 != 7) {
- fprintf(stderr, "mono_return_float8 s8.f7: got %f but expected %d\n", s8.f7, 7);
-- return 1;
- }
- if (s8.f8 != 8) {
- fprintf(stderr, "mono_return_float8 s8.f8: got %f but expected %d\n", s8.f8, 8);
-- return 1;
- }
-- return 2*addend;
-+ s8.f1+=addend; s8.f2+=addend; s8.f3+=addend; s8.f4+=addend; s8.f5+=addend; s8.f6+=addend; s8.f7+=addend; s8.f8+=addend;
-+ return s8;
- }
-
- typedef struct {
- float f1,f2,f3,f4,f5,f6,f7,f8,f9;
- } float9;
-
--LIBTEST_API float STDCALL
-+LIBTEST_API float9 STDCALL
- mono_return_float9 (float9 s9, int addend) {
- if (s9.f1 != 1) {
- fprintf(stderr, "mono_return_float9 s9.f1: got %f but expected %d\n", s9.f1, 1);
-- return 1;
- }
- if (s9.f2 != 2) {
- fprintf(stderr, "mono_return_float9 s9.f2: got %f but expected %d\n", s9.f2, 2);
-- return 1;
- }
- if (s9.f3 != 3) {
- fprintf(stderr, "mono_return_float9 s9.f3: got %f but expected %d\n", s9.f3, 3);
-- return 1;
- }
- if (s9.f4 != 4) {
- fprintf(stderr, "mono_return_float9 s9.f4: got %f but expected %d\n", s9.f4, 4);
-- return 1;
- }
- if (s9.f5 != 5) {
- fprintf(stderr, "mono_return_float9 s9.f5: got %f but expected %d\n", s9.f5, 5);
-- return 1;
- }
- if (s9.f6 != 6) {
- fprintf(stderr, "mono_return_float9 s9.f6: got %f but expected %d\n", s9.f6, 6);
-- return 1;
- }
- if (s9.f7 != 7) {
- fprintf(stderr, "mono_return_float9 s9.f7: got %f but expected %d\n", s9.f7, 7);
-- return 1;
- }
- if (s9.f8 != 8) {
- fprintf(stderr, "mono_return_float9 s9.f8: got %f but expected %d\n", s9.f8, 8);
-- return 1;
- }
- if (s9.f9 != 9) {
- fprintf(stderr, "mono_return_float9 s9.f9: got %f but expected %d\n", s9.f9, 9);
-- return 1;
- }
-- return 2*addend;
-+ s9.f1+=addend; s9.f2+=addend; s9.f3+=addend; s9.f4+=addend; s9.f5+=addend; s9.f6+=addend; s9.f7+=addend; s9.f8+=addend; s9.f9+=addend;
-+ return s9;
-+}
-+
-+typedef struct {
-+ struct {
-+ float f1;
-+ } nested1;
-+ float f2,f3;
-+ struct {
-+ float f4;
-+ } nested2;
-+} float4_nested;
-+
-+LIBTEST_API float4_nested STDCALL
-+mono_return_float4_nested (float4_nested sn4, int addend) {
-+ if (sn4.nested1.f1 != 1) {
-+ fprintf(stderr, "mono_return_float4_nested sn4.nested1.f1: got %f but expected %d\n", sn4.nested1.f1, 1);
-+ }
-+ if (sn4.f2 != 2) {
-+ fprintf(stderr, "mono_return_float4_nested sn4.f2: got %f but expected %d\n", sn4.f2, 2);
-+ }
-+ if (sn4.f3 != 3) {
-+ fprintf(stderr, "mono_return_float4_nested sn4.f3: got %f but expected %d\n", sn4.f3, 3);
-+ }
-+ if (sn4.nested2.f4 != 4) {
-+ fprintf(stderr, "mono_return_float4_nested sn4.nested2.f4: got %f but expected %d\n", sn4.nested2.f4, 4);
-+ }
-+ sn4.nested1.f1+=addend; sn4.f2+=addend; sn4.f3+=addend; sn4.nested2.f4+=addend;
-+ return sn4;
- }
-
- typedef struct {
- double f1;
- } double1;
-
--LIBTEST_API double STDCALL
-+LIBTEST_API double1 STDCALL
- mono_return_double1 (double1 s1, int addend) {
- if (s1.f1 != 1) {
- fprintf(stderr, "mono_return_double1 s1.f1: got %f but expected %d\n", s1.f1, 1);
-- return 1;
- }
-- return 2*addend;
-+ s1.f1+=addend;
-+ return s1;
- }
-
- typedef struct {
- double f1,f2;
- } double2;
-
--LIBTEST_API double STDCALL
-+LIBTEST_API double2 STDCALL
- mono_return_double2 (double2 s2, int addend) {
- if (s2.f1 != 1) {
- fprintf(stderr, "mono_return_double2 s2.f1: got %f but expected %d\n", s2.f1, 1);
-- return 1;
- }
- if (s2.f2 != 2) {
- fprintf(stderr, "mono_return_double2 s2.f2: got %f but expected %d\n", s2.f2, 2);
-- return 1;
- }
-- return 2*addend;
-+ s2.f1+=addend; s2.f2+=addend;
-+ return s2;
- }
-
- typedef struct {
- double f1,f2,f3;
- } double3;
-
--LIBTEST_API double STDCALL
-+LIBTEST_API double3 STDCALL
- mono_return_double3 (double3 s3, int addend) {
- if (s3.f1 != 1) {
- fprintf(stderr, "mono_return_double3 s3.f1: got %f but expected %d\n", s3.f1, 1);
-- return 1;
- }
- if (s3.f2 != 2) {
- fprintf(stderr, "mono_return_double3 s3.f2: got %f but expected %d\n", s3.f2, 2);
-- return 1;
- }
- if (s3.f3 != 3) {
- fprintf(stderr, "mono_return_double3 s3.f3: got %f but expected %d\n", s3.f3, 3);
-- return 1;
- }
-- return 2*addend;
-+ s3.f1+=addend; s3.f2+=addend; s3.f3+=addend;
-+ return s3;
- }
-
- typedef struct {
- double f1,f2,f3,f4;
- } double4;
-
--LIBTEST_API double STDCALL
-+LIBTEST_API double4 STDCALL
- mono_return_double4 (double4 s4, int addend) {
- if (s4.f1 != 1) {
- fprintf(stderr, "mono_return_double4 s4.f1: got %f but expected %d\n", s4.f1, 1);
-- return 1;
- }
- if (s4.f2 != 2) {
- fprintf(stderr, "mono_return_double4 s4.f2: got %f but expected %d\n", s4.f2, 2);
-- return 1;
- }
- if (s4.f3 != 3) {
- fprintf(stderr, "mono_return_double4 s4.f3: got %f but expected %d\n", s4.f3, 3);
-- return 1;
- }
- if (s4.f4 != 4) {
- fprintf(stderr, "mono_return_double4 s4.f4: got %f but expected %d\n", s4.f4, 4);
-- return 1;
- }
-- return 2*addend;
-+ s4.f1+=addend; s4.f2+=addend; s4.f3+=addend; s4.f4+=addend;
-+ return s4;
- }
-
- typedef struct {
- double f1,f2,f3,f4,f5;
- } double5;
-
--LIBTEST_API double STDCALL
-+LIBTEST_API double5 STDCALL
- mono_return_double5 (double5 s5, int addend) {
- if (s5.f1 != 1) {
- fprintf(stderr, "mono_return_double5 s5.f1: got %f but expected %d\n", s5.f1, 1);
-- return 1;
- }
- if (s5.f2 != 2) {
- fprintf(stderr, "mono_return_double5 s5.f2: got %f but expected %d\n", s5.f2, 2);
-- return 1;
- }
- if (s5.f3 != 3) {
- fprintf(stderr, "mono_return_double5 s5.f3: got %f but expected %d\n", s5.f3, 3);
-- return 1;
- }
- if (s5.f4 != 4) {
- fprintf(stderr, "mono_return_double5 s5.f4: got %f but expected %d\n", s5.f4, 4);
-- return 1;
- }
- if (s5.f5 != 5) {
- fprintf(stderr, "mono_return_double5 s5.f5: got %f but expected %d\n", s5.f5, 5);
-- return 1;
- }
-- return 2*addend;
-+ s5.f1+=addend; s5.f2+=addend; s5.f3+=addend; s5.f4+=addend; s5.f5+=addend;
-+ return s5;
- }
-
- typedef struct {
- double f1,f2,f3,f4,f5,f6;
- } double6;
-
--LIBTEST_API double STDCALL
-+LIBTEST_API double6 STDCALL
- mono_return_double6 (double6 s6, int addend) {
- if (s6.f1 != 1) {
- fprintf(stderr, "mono_return_double6 s6.f1: got %f but expected %d\n", s6.f1, 1);
-- return 1;
- }
- if (s6.f2 != 2) {
- fprintf(stderr, "mono_return_double6 s6.f2: got %f but expected %d\n", s6.f2, 2);
-- return 1;
- }
- if (s6.f3 != 3) {
- fprintf(stderr, "mono_return_double6 s6.f3: got %f but expected %d\n", s6.f3, 3);
-- return 1;
- }
- if (s6.f4 != 4) {
- fprintf(stderr, "mono_return_double6 s6.f4: got %f but expected %d\n", s6.f4, 4);
-- return 1;
- }
- if (s6.f5 != 5) {
- fprintf(stderr, "mono_return_double6 s6.f5: got %f but expected %d\n", s6.f5, 5);
-- return 1;
- }
- if (s6.f6 != 6) {
- fprintf(stderr, "mono_return_double6 s6.f6: got %f but expected %d\n", s6.f6, 6);
-- return 1;
- }
-- return 2*addend;
-+ s6.f1+=addend; s6.f2+=addend; s6.f3+=addend; s6.f4+=addend; s6.f5+=addend; s6.f6+=addend;
-+ return s6;
- }
-
- typedef struct {
- double f1,f2,f3,f4,f5,f6,f7;
- } double7;
-
--LIBTEST_API double STDCALL
-+LIBTEST_API double7 STDCALL
- mono_return_double7 (double7 s7, int addend) {
- if (s7.f1 != 1) {
- fprintf(stderr, "mono_return_double7 s7.f1: got %f but expected %d\n", s7.f1, 1);
-- return 1;
- }
- if (s7.f2 != 2) {
- fprintf(stderr, "mono_return_double7 s7.f2: got %f but expected %d\n", s7.f2, 2);
-- return 1;
- }
- if (s7.f3 != 3) {
- fprintf(stderr, "mono_return_double7 s7.f3: got %f but expected %d\n", s7.f3, 3);
-- return 1;
- }
- if (s7.f4 != 4) {
- fprintf(stderr, "mono_return_double7 s7.f4: got %f but expected %d\n", s7.f4, 4);
-- return 1;
- }
- if (s7.f5 != 5) {
- fprintf(stderr, "mono_return_double7 s7.f5: got %f but expected %d\n", s7.f5, 5);
-- return 1;
- }
- if (s7.f6 != 6) {
- fprintf(stderr, "mono_return_double7 s7.f6: got %f but expected %d\n", s7.f6, 6);
-- return 1;
- }
- if (s7.f7 != 7) {
- fprintf(stderr, "mono_return_double7 s7.f7: got %f but expected %d\n", s7.f7, 7);
-- return 1;
- }
-- return 2*addend;
-+ s7.f1+=addend; s7.f2+=addend; s7.f3+=addend; s7.f4+=addend; s7.f5+=addend; s7.f6+=addend; s7.f7+=addend;
-+ return s7;
- }
-
- typedef struct {
- double f1,f2,f3,f4,f5,f6,f7,f8;
- } double8;
-
--LIBTEST_API double STDCALL
-+LIBTEST_API double8 STDCALL
- mono_return_double8 (double8 s8, int addend) {
- if (s8.f1 != 1) {
- fprintf(stderr, "mono_return_double8 s8.f1: got %f but expected %d\n", s8.f1, 1);
-- return 1;
- }
- if (s8.f2 != 2) {
- fprintf(stderr, "mono_return_double8 s8.f2: got %f but expected %d\n", s8.f2, 2);
-- return 1;
- }
- if (s8.f3 != 3) {
- fprintf(stderr, "mono_return_double8 s8.f3: got %f but expected %d\n", s8.f3, 3);
-- return 1;
- }
- if (s8.f4 != 4) {
- fprintf(stderr, "mono_return_double8 s8.f4: got %f but expected %d\n", s8.f4, 4);
-- return 1;
- }
- if (s8.f5 != 5) {
- fprintf(stderr, "mono_return_double8 s8.f5: got %f but expected %d\n", s8.f5, 5);
-- return 1;
- }
- if (s8.f6 != 6) {
- fprintf(stderr, "mono_return_double8 s8.f6: got %f but expected %d\n", s8.f6, 6);
-- return 1;
- }
- if (s8.f7 != 7) {
- fprintf(stderr, "mono_return_double8 s8.f7: got %f but expected %d\n", s8.f7, 7);
-- return 1;
- }
- if (s8.f8 != 8) {
- fprintf(stderr, "mono_return_double8 s8.f8: got %f but expected %d\n", s8.f8, 8);
-- return 1;
- }
-- return 2*addend;
-+ s8.f1+=addend; s8.f2+=addend; s8.f3+=addend; s8.f4+=addend; s8.f5+=addend; s8.f6+=addend; s8.f7+=addend; s8.f8+=addend;
-+ return s8;
- }
-
- typedef struct {
- double f1,f2,f3,f4,f5,f6,f7,f8,f9;
- } double9;
-
--LIBTEST_API double STDCALL
-+LIBTEST_API double9 STDCALL
- mono_return_double9 (double9 s9, int addend) {
- if (s9.f1 != 1) {
- fprintf(stderr, "mono_return_double9 s9.f1: got %f but expected %d\n", s9.f1, 1);
-- return 1;
- }
- if (s9.f2 != 2) {
- fprintf(stderr, "mono_return_double9 s9.f2: got %f but expected %d\n", s9.f2, 2);
-- return 1;
- }
- if (s9.f3 != 3) {
- fprintf(stderr, "mono_return_double9 s9.f3: got %f but expected %d\n", s9.f3, 3);
-- return 1;
- }
- if (s9.f4 != 4) {
- fprintf(stderr, "mono_return_double9 s9.f4: got %f but expected %d\n", s9.f4, 4);
-- return 1;
- }
- if (s9.f5 != 5) {
- fprintf(stderr, "mono_return_double9 s9.f5: got %f but expected %d\n", s9.f5, 5);
-- return 1;
- }
- if (s9.f6 != 6) {
- fprintf(stderr, "mono_return_double9 s9.f6: got %f but expected %d\n", s9.f6, 6);
-- return 1;
- }
- if (s9.f7 != 7) {
- fprintf(stderr, "mono_return_double9 s9.f7: got %f but expected %d\n", s9.f7, 7);
-- return 1;
- }
- if (s9.f8 != 8) {
- fprintf(stderr, "mono_return_double9 s9.f8: got %f but expected %d\n", s9.f8, 8);
-- return 1;
- }
- if (s9.f9 != 9) {
- fprintf(stderr, "mono_return_double9 s9.f9: got %f but expected %d\n", s9.f9, 9);
-- return 1;
- }
-- return 2*addend;
-+ s9.f1+=addend; s9.f2+=addend; s9.f3+=addend; s9.f4+=addend; s9.f5+=addend; s9.f6+=addend; s9.f7+=addend; s9.f8+=addend; s9.f9+=addend;
-+ return s9;
- }
-
-+typedef struct {
-+ struct {
-+ double f1;
-+ } nested1;
-+ struct {
-+ double f2;
-+ } nested2;
-+} double2_nested;
-+
-+LIBTEST_API double2_nested STDCALL
-+mono_return_double2_nested (double2_nested sn2, int addend) {
-+ if (sn2.nested1.f1 != 1) {
-+ fprintf(stderr, "mono_return_double2_nested sn2.nested1.f1: got %f but expected %d\n", sn2.nested1.f1, 1);
-+ }
-+ if (sn2.nested2.f2 != 2) {
-+ fprintf(stderr, "mono_return_double2_nested sn2.nested2.f2: got %f but expected %d\n", sn2.nested2.f2, 2);
-+ }
-+ sn2.nested1.f1+=addend; sn2.nested2.f2+=addend;
-+ return sn2;
-+}
-
-
--// WDS debug
--// To use add:
--// [DllImport ("libtest", EntryPoint="ppc_dbg")]
--// public static extern void ppc_dbg ();
--// Then just call:
--// ppc_dbg();
--LIBTEST_API void STDCALL
--ppc_dbg(void)
--{
-- static int cnt=0;
-- ++cnt;
-- printf("@#@#@# ppc_dbg call#%d\n", cnt);
-- return;
-+
-+typedef struct {
-+ double f1[4];
-+} double_array4;
-+
-+LIBTEST_API double_array4 STDCALL
-+mono_return_double_array4 (double_array4 sa4, int addend) {
-+ if (sa4.f1[0] != 1) {
-+ fprintf(stderr, "mono_return_double_array4 sa4.f1[0]: got %f but expected %d\n", sa4.f1[0], 1);
-+ }
-+ if (sa4.f1[1] != 2) {
-+ fprintf(stderr, "mono_return_double_array4 sa4.f1[1]: got %f but expected %d\n", sa4.f1[1], 2);
-+ }
-+ if (sa4.f1[2] != 3) {
-+ fprintf(stderr, "mono_return_double_array4 sa4.f1[2]: got %f but expected %d\n", sa4.f1[2], 3);
-+ }
-+ if (sa4.f1[3] != 4) {
-+ fprintf(stderr, "mono_return_double_array4 sa4.f1[3]: got %f but expected %d\n", sa4.f1[3], 4);
-+ }
-+ sa4.f1[0]+=addend; sa4.f1[1]+=addend; sa4.f1[2]+=addend; sa4.f1[3]+=addend;
-+ return sa4;
- }
--// WDS debug
-
-Index: mono-4.2.1/mono/tests/pinvoke_ppcc.cs
-===================================================================
---- mono-4.2.1.orig/mono/tests/pinvoke_ppcc.cs
-+++ mono-4.2.1/mono/tests/pinvoke_ppcc.cs
-@@ -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
-
--
--
--
--
-Index: mono-4.2.1/mono/tests/pinvoke_ppcd.cs
-===================================================================
---- mono-4.2.1.orig/mono/tests/pinvoke_ppcd.cs
-+++ mono-4.2.1/mono/tests/pinvoke_ppcd.cs
-@@ -20,13 +20,13 @@ using System.Runtime.InteropServices;
- public class Test_double {
-
- [DllImport ("libtest", EntryPoint="mono_return_double1")]
-- public static extern double mono_return_double1 (double1 s, int addend);
-+ public static extern double1 mono_return_double1 (double1 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct double1 {
- public double f1;
- }
- [DllImport ("libtest", EntryPoint="mono_return_double2")]
-- public static extern double mono_return_double2 (double2 s, int addend);
-+ public static extern double2 mono_return_double2 (double2 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct double2 {
- public double f1,f2;
-@@ -34,37 +34,37 @@ public class Test_double {
- // This structure is 1 element too large to use the special return
- // rules.
- [DllImport ("libtest", EntryPoint="mono_return_double3")]
-- public static extern double mono_return_double3 (double3 s, int addend);
-+ public static extern double3 mono_return_double3 (double3 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct double3 {
- public double f1,f2,f3;
- }
- [DllImport ("libtest", EntryPoint="mono_return_double4")]
-- public static extern double mono_return_double4 (double4 s, int addend);
-+ public static extern double4 mono_return_double4 (double4 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct double4 {
- public double f1,f2,f3,f4;
- }
- [DllImport ("libtest", EntryPoint="mono_return_double5")]
-- public static extern double mono_return_double5 (double5 s, int addend);
-+ public static extern double5 mono_return_double5 (double5 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct double5 {
- public double f1,f2,f3,f4,f5;
- }
- [DllImport ("libtest", EntryPoint="mono_return_double6")]
-- public static extern double mono_return_double6 (double6 s, int addend);
-+ public static extern double6 mono_return_double6 (double6 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct double6 {
- public double f1,f2,f3,f4,f5,f6;
- }
- [DllImport ("libtest", EntryPoint="mono_return_double7")]
-- public static extern double mono_return_double7 (double7 s, int addend);
-+ public static extern double7 mono_return_double7 (double7 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct double7 {
- public double f1,f2,f3,f4,f5,f6,f7;
- }
- [DllImport ("libtest", EntryPoint="mono_return_double8")]
-- public static extern double mono_return_double8 (double8 s, int addend);
-+ public static extern double8 mono_return_double8 (double8 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct double8 {
- public double f1,f2,f3,f4,f5,f6,f7,f8;
-@@ -72,7 +72,7 @@ public class Test_double {
- // This structure is 1 element too large to use the special parameter
- // passing rules.
- [DllImport ("libtest", EntryPoint="mono_return_double9")]
-- public static extern double mono_return_double9 (double9 s, int addend);
-+ public static extern double9 mono_return_double9 (double9 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct double9 {
- public double f1,f2,f3,f4,f5,f6,f7,f8,f9;
-@@ -94,45 +94,76 @@ public class Test_double {
- public double2_nested2 nested2;
- }
-
-- public static int Main (string[] args) {
-+ [DllImport ("libtest", EntryPoint="mono_return_double_array4")]
-+ public static extern double_array4 mono_return_double_array4 (double_array4 s, int addend);
-+ [StructLayout(LayoutKind.Sequential)]
-+ public unsafe struct double_array4 {
-+ public fixed double f1[4];
-+ }
-+
-
-+ public static int Main (string[] args) {
- double1 s1;
- s1.f1 = 1;
-- double retval1 = mono_return_double1(s1, 9);
-- if (retval1 != 2*9) {
-- Console.WriteLine(" double1 retval1: got {0} but expected {1}", retval1, 2*9);
-+ s1 = mono_return_double1(s1, 9);
-+ if (s1.f1 != 1+9) {
-+ Console.WriteLine(" double1 s1.f1: got {0} but expected {1}", s1.f1, 1+9);
- return 1;
- }
-
- double2 s2;
- s2.f1 = 1;
- s2.f2 = 2;
-- double retval2 = mono_return_double2(s2, 9);
-- if (retval2 != 2*9) {
-- Console.WriteLine(" double2 retval2: got {0} but expected {1}", retval2, 2*9);
-+ s2 = mono_return_double2(s2, 9);
-+ if (s2.f1 != 1+9) {
-+ Console.WriteLine(" double2 s2.f1: got {0} but expected {1}", s2.f1, 1+9);
- return 1;
- }
-+ if (s2.f2 != 2+9) {
-+ Console.WriteLine(" double2 s2.f2: got {0} but expected {1}", s2.f2, 2+9);
-+ return 2;
-+ }
-
- double3 s3;
- s3.f1 = 1;
- s3.f2 = 2;
- s3.f3 = 3;
-- double retval3 = mono_return_double3(s3, 9);
-- if (retval3 != 2*9) {
-- Console.WriteLine(" double3 retval3: got {0} but expected {1}", retval3, 2*9);
-+ s3 = mono_return_double3(s3, 9);
-+ if (s3.f1 != 1+9) {
-+ Console.WriteLine(" double3 s3.f1: got {0} but expected {1}", s3.f1, 1+9);
- return 1;
- }
-+ if (s3.f2 != 2+9) {
-+ Console.WriteLine(" double3 s3.f2: got {0} but expected {1}", s3.f2, 2+9);
-+ return 2;
-+ }
-+ if (s3.f3 != 3+9) {
-+ Console.WriteLine(" double3 s3.f3: got {0} but expected {1}", s3.f3, 3+9);
-+ return 3;
-+ }
-
- double4 s4;
- s4.f1 = 1;
- s4.f2 = 2;
- s4.f3 = 3;
- s4.f4 = 4;
-- double retval4 = mono_return_double4(s4, 9);
-- if (retval4 != 2*9) {
-- Console.WriteLine(" double4 retval4: got {0} but expected {1}", retval4, 2*9);
-+ s4 = mono_return_double4(s4, 9);
-+ if (s4.f1 != 1+9) {
-+ Console.WriteLine(" double4 s4.f1: got {0} but expected {1}", s4.f1, 1+9);
- return 1;
- }
-+ if (s4.f2 != 2+9) {
-+ Console.WriteLine(" double4 s4.f2: got {0} but expected {1}", s4.f2, 2+9);
-+ return 2;
-+ }
-+ if (s4.f3 != 3+9) {
-+ Console.WriteLine(" double4 s4.f3: got {0} but expected {1}", s4.f3, 3+9);
-+ return 3;
-+ }
-+ if (s4.f4 != 4+9) {
-+ Console.WriteLine(" double4 s4.f4: got {0} but expected {1}", s4.f4, 4+9);
-+ return 4;
-+ }
-
- double5 s5;
- s5.f1 = 1;
-@@ -140,11 +171,27 @@ public class Test_double {
- s5.f3 = 3;
- s5.f4 = 4;
- s5.f5 = 5;
-- double retval5 = mono_return_double5(s5, 9);
-- if (retval5 != 2*9) {
-- Console.WriteLine(" double5 retval5: got {0} but expected {1}", retval5, 2*9);
-+ s5 = mono_return_double5(s5, 9);
-+ if (s5.f1 != 1+9) {
-+ Console.WriteLine(" double5 s5.f1: got {0} but expected {1}", s5.f1, 1+9);
- return 1;
- }
-+ if (s5.f2 != 2+9) {
-+ Console.WriteLine(" double5 s5.f2: got {0} but expected {1}", s5.f2, 2+9);
-+ return 2;
-+ }
-+ if (s5.f3 != 3+9) {
-+ Console.WriteLine(" double5 s5.f3: got {0} but expected {1}", s5.f3, 3+9);
-+ return 3;
-+ }
-+ if (s5.f4 != 4+9) {
-+ Console.WriteLine(" double5 s5.f4: got {0} but expected {1}", s5.f4, 4+9);
-+ return 4;
-+ }
-+ if (s5.f5 != 5+9) {
-+ Console.WriteLine(" double5 s5.f5: got {0} but expected {1}", s5.f5, 5+9);
-+ return 5;
-+ }
-
- double6 s6;
- s6.f1 = 1;
-@@ -153,11 +200,31 @@ public class Test_double {
- s6.f4 = 4;
- s6.f5 = 5;
- s6.f6 = 6;
-- double retval6 = mono_return_double6(s6, 9);
-- if (retval6 != 2*9) {
-- Console.WriteLine(" double6 retval6: got {0} but expected {1}", retval6, 2*9);
-+ s6 = mono_return_double6(s6, 9);
-+ if (s6.f1 != 1+9) {
-+ Console.WriteLine(" double6 s6.f1: got {0} but expected {1}", s6.f1, 1+9);
- return 1;
- }
-+ if (s6.f2 != 2+9) {
-+ Console.WriteLine(" double6 s6.f2: got {0} but expected {1}", s6.f2, 2+9);
-+ return 2;
-+ }
-+ if (s6.f3 != 3+9) {
-+ Console.WriteLine(" double6 s6.f3: got {0} but expected {1}", s6.f3, 3+9);
-+ return 3;
-+ }
-+ if (s6.f4 != 4+9) {
-+ Console.WriteLine(" double6 s6.f4: got {0} but expected {1}", s6.f4, 4+9);
-+ return 4;
-+ }
-+ if (s6.f5 != 5+9) {
-+ Console.WriteLine(" double6 s6.f5: got {0} but expected {1}", s6.f5, 5+9);
-+ return 5;
-+ }
-+ if (s6.f6 != 6+9) {
-+ Console.WriteLine(" double6 s6.f6: got {0} but expected {1}", s6.f6, 6+9);
-+ return 6;
-+ }
-
- double7 s7;
- s7.f1 = 1;
-@@ -167,11 +234,35 @@ public class Test_double {
- s7.f5 = 5;
- s7.f6 = 6;
- s7.f7 = 7;
-- double retval7 = mono_return_double7(s7, 9);
-- if (retval7 != 2*9) {
-- Console.WriteLine(" double7 retval7: got {0} but expected {1}", retval7, 2*9);
-+ s7 = mono_return_double7(s7, 9);
-+ if (s7.f1 != 1+9) {
-+ Console.WriteLine(" double7 s7.f1: got {0} but expected {1}", s7.f1, 1+9);
- return 1;
- }
-+ if (s7.f2 != 2+9) {
-+ Console.WriteLine(" double7 s7.f2: got {0} but expected {1}", s7.f2, 2+9);
-+ return 2;
-+ }
-+ if (s7.f3 != 3+9) {
-+ Console.WriteLine(" double7 s7.f3: got {0} but expected {1}", s7.f3, 3+9);
-+ return 3;
-+ }
-+ if (s7.f4 != 4+9) {
-+ Console.WriteLine(" double7 s7.f4: got {0} but expected {1}", s7.f4, 4+9);
-+ return 4;
-+ }
-+ if (s7.f5 != 5+9) {
-+ Console.WriteLine(" double7 s7.f5: got {0} but expected {1}", s7.f5, 5+9);
-+ return 5;
-+ }
-+ if (s7.f6 != 6+9) {
-+ Console.WriteLine(" double7 s7.f6: got {0} but expected {1}", s7.f6, 6+9);
-+ return 6;
-+ }
-+ if (s7.f7 != 7+9) {
-+ Console.WriteLine(" double7 s7.f7: got {0} but expected {1}", s7.f7, 7+9);
-+ return 7;
-+ }
-
- double8 s8;
- s8.f1 = 1;
-@@ -182,11 +273,39 @@ public class Test_double {
- s8.f6 = 6;
- s8.f7 = 7;
- s8.f8 = 8;
-- double retval8 = mono_return_double8(s8, 9);
-- if (retval8 != 2*9) {
-- Console.WriteLine(" double8 retval8: got {0} but expected {1}", retval8, 2*9);
-+ s8 = mono_return_double8(s8, 9);
-+ if (s8.f1 != 1+9) {
-+ Console.WriteLine(" double8 s8.f1: got {0} but expected {1}", s8.f1, 1+9);
- return 1;
- }
-+ if (s8.f2 != 2+9) {
-+ Console.WriteLine(" double8 s8.f2: got {0} but expected {1}", s8.f2, 2+9);
-+ return 2;
-+ }
-+ if (s8.f3 != 3+9) {
-+ Console.WriteLine(" double8 s8.f3: got {0} but expected {1}", s8.f3, 3+9);
-+ return 3;
-+ }
-+ if (s8.f4 != 4+9) {
-+ Console.WriteLine(" double8 s8.f4: got {0} but expected {1}", s8.f4, 4+9);
-+ return 4;
-+ }
-+ if (s8.f5 != 5+9) {
-+ Console.WriteLine(" double8 s8.f5: got {0} but expected {1}", s8.f5, 5+9);
-+ return 5;
-+ }
-+ if (s8.f6 != 6+9) {
-+ Console.WriteLine(" double8 s8.f6: got {0} but expected {1}", s8.f6, 6+9);
-+ return 6;
-+ }
-+ if (s8.f7 != 7+9) {
-+ Console.WriteLine(" double8 s8.f7: got {0} but expected {1}", s8.f7, 7+9);
-+ return 7;
-+ }
-+ if (s8.f8 != 8+9) {
-+ Console.WriteLine(" double8 s8.f8: got {0} but expected {1}", s8.f8, 8+9);
-+ return 8;
-+ }
-
- double9 s9;
- s9.f1 = 1;
-@@ -198,18 +317,86 @@ public class Test_double {
- s9.f7 = 7;
- s9.f8 = 8;
- s9.f9 = 9;
-- double retval9 = mono_return_double9(s9, 9);
-- if (retval9 != 2*9) {
-- Console.WriteLine(" double9 retval9: got {0} but expected {1}", retval9, 2*9);
-+ s9 = mono_return_double9(s9, 9);
-+ if (s9.f1 != 1+9) {
-+ Console.WriteLine(" double9 s9.f1: got {0} but expected {1}", s9.f1, 1+9);
-+ return 1;
-+ }
-+ if (s9.f2 != 2+9) {
-+ Console.WriteLine(" double9 s9.f2: got {0} but expected {1}", s9.f2, 2+9);
-+ return 2;
-+ }
-+ if (s9.f3 != 3+9) {
-+ Console.WriteLine(" double9 s9.f3: got {0} but expected {1}", s9.f3, 3+9);
-+ return 3;
-+ }
-+ if (s9.f4 != 4+9) {
-+ Console.WriteLine(" double9 s9.f4: got {0} but expected {1}", s9.f4, 4+9);
-+ return 4;
-+ }
-+ if (s9.f5 != 5+9) {
-+ Console.WriteLine(" double9 s9.f5: got {0} but expected {1}", s9.f5, 5+9);
-+ return 5;
-+ }
-+ if (s9.f6 != 6+9) {
-+ Console.WriteLine(" double9 s9.f6: got {0} but expected {1}", s9.f6, 6+9);
-+ return 6;
-+ }
-+ if (s9.f7 != 7+9) {
-+ Console.WriteLine(" double9 s9.f7: got {0} but expected {1}", s9.f7, 7+9);
-+ return 7;
-+ }
-+ if (s9.f8 != 8+9) {
-+ Console.WriteLine(" double9 s9.f8: got {0} but expected {1}", s9.f8, 8+9);
-+ return 8;
-+ }
-+ if (s9.f9 != 9+9) {
-+ Console.WriteLine(" double9 s9.f9: got {0} but expected {1}", s9.f9, 9+9);
-+ return 9;
-+ }
-+
-+
-+ double2_nested sn2;
-+ sn2.nested1.f1 = 1;
-+ sn2.nested2.f2 = 2;
-+ sn2 = mono_return_double2_nested(sn2, 9);
-+ if (sn2.nested1.f1 != 1+9) {
-+ Console.WriteLine(" double2_nested sn2.nested1.f1: got {0} but expected {1}", sn2.nested1.f1, 1+9);
- return 1;
- }
-+ if (sn2.nested2.f2 != 2+9) {
-+ Console.WriteLine(" double2_nested sn2.nested2.f2: got {0} but expected {1}", sn2.nested2.f2, 2+9);
-+ return 2;
-+ }
-
-+/*
-+// NOTE: this test does not work properly because mini_type_is_hfa in mini-codegen.c does not handle arrays.
-+// Uncomment this when mini_type_is_hfa is fixed.
-+ unsafe {
-+ double_array4 sa4;
-+ sa4.f1[0] = 1;
-+ sa4.f1[1] = 2;
-+ sa4 = mono_return_double_array4(sa4, 9);
-+ if (sa4.f1[0] != 1+9) {
-+ Console.WriteLine(" double_array4 sa4.f1[0]: got {0} but expected {1}", sa4.f1[0], 1+9);
-+ return 1;
-+ }
-+ if (sa4.f1[1] != 2+9) {
-+ Console.WriteLine(" double_array4 sa4.f1[1]: got {0} but expected {1}", sa4.f1[1], 2+9);
-+ return 2;
-+ }
-+ if (sa4.f1[2] != 3+9) {
-+ Console.WriteLine(" double_array4 sa4.f1[2]: got {0} but expected {1}", sa4.f1[2], 3+9);
-+ return 3;
-+ }
-+ if (sa4.f1[3] != 4+9) {
-+ Console.WriteLine(" double_array4 sa4.f1[3]: got {0} but expected {1}", sa4.f1[3], 4+9);
-+ return 4;
-+ }
-+ }
-+*/
-
- return 0;
- } // end Main
- } // end class Test_double
-
--
--
--
--
-Index: mono-4.2.1/mono/tests/pinvoke_ppcf.cs
-===================================================================
---- mono-4.2.1.orig/mono/tests/pinvoke_ppcf.cs
-+++ mono-4.2.1/mono/tests/pinvoke_ppcf.cs
-@@ -20,25 +20,25 @@ using System.Runtime.InteropServices;
- public class Test_float {
-
- [DllImport ("libtest", EntryPoint="mono_return_float1")]
-- public static extern float mono_return_float1 (float1 s, int addend);
-+ public static extern float1 mono_return_float1 (float1 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct float1 {
- public float f1;
- }
- [DllImport ("libtest", EntryPoint="mono_return_float2")]
-- public static extern float mono_return_float2 (float2 s, int addend);
-+ public static extern float2 mono_return_float2 (float2 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct float2 {
- public float f1,f2;
- }
- [DllImport ("libtest", EntryPoint="mono_return_float3")]
-- public static extern float mono_return_float3 (float3 s, int addend);
-+ public static extern float3 mono_return_float3 (float3 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct float3 {
- public float f1,f2,f3;
- }
- [DllImport ("libtest", EntryPoint="mono_return_float4")]
-- public static extern float mono_return_float4 (float4 s, int addend);
-+ public static extern float4 mono_return_float4 (float4 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct float4 {
- public float f1,f2,f3,f4;
-@@ -46,25 +46,25 @@ public class Test_float {
- // This structure is 1 element too large to use the special return
- // rules.
- [DllImport ("libtest", EntryPoint="mono_return_float5")]
-- public static extern float mono_return_float5 (float5 s, int addend);
-+ public static extern float5 mono_return_float5 (float5 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct float5 {
- public float f1,f2,f3,f4,f5;
- }
- [DllImport ("libtest", EntryPoint="mono_return_float6")]
-- public static extern float mono_return_float6 (float6 s, int addend);
-+ public static extern float6 mono_return_float6 (float6 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct float6 {
- public float f1,f2,f3,f4,f5,f6;
- }
- [DllImport ("libtest", EntryPoint="mono_return_float7")]
-- public static extern float mono_return_float7 (float7 s, int addend);
-+ public static extern float7 mono_return_float7 (float7 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct float7 {
- public float f1,f2,f3,f4,f5,f6,f7;
- }
- [DllImport ("libtest", EntryPoint="mono_return_float8")]
-- public static extern float mono_return_float8 (float8 s, int addend);
-+ public static extern float8 mono_return_float8 (float8 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct float8 {
- public float f1,f2,f3,f4,f5,f6,f7,f8;
-@@ -72,7 +72,7 @@ public class Test_float {
- // This structure is 1 element too large to use the special parameter
- // passing rules.
- [DllImport ("libtest", EntryPoint="mono_return_float9")]
-- public static extern float mono_return_float9 (float9 s, int addend);
-+ public static extern float9 mono_return_float9 (float9 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct float9 {
- public float f1,f2,f3,f4,f5,f6,f7,f8,f9;
-@@ -99,41 +99,65 @@ public class Test_float {
-
- float1 s1;
- s1.f1 = 1;
-- float retval1 = mono_return_float1(s1, 906);
-- if (retval1 != 2*906) {
-- Console.WriteLine(" float1 retval1: got {0} but expected {1}", retval1, 2*906);
-+ s1 = mono_return_float1(s1, 906);
-+ if (s1.f1 != 1+906) {
-+ Console.WriteLine(" float1 s1.f1: got {0} but expected {1}", s1.f1, 1+906);
- return 1;
- }
-
- float2 s2;
- s2.f1 = 1;
- s2.f2 = 2;
-- float retval2 = mono_return_float2(s2, 906);
-- if (retval2 != 2*906) {
-- Console.WriteLine(" float2 retval2: got {0} but expected {1}", retval2, 2*906);
-+ s2 = mono_return_float2(s2, 906);
-+ if (s2.f1 != 1+906) {
-+ Console.WriteLine(" float2 s2.f1: got {0} but expected {1}", s2.f1, 1+906);
- return 1;
- }
-+ if (s2.f2 != 2+906) {
-+ Console.WriteLine(" float2 s2.f2: got {0} but expected {1}", s2.f2, 2+906);
-+ return 2;
-+ }
-
- float3 s3;
- s3.f1 = 1;
- s3.f2 = 2;
- s3.f3 = 3;
-- float retval3 = mono_return_float3(s3, 906);
-- if (retval3 != 2*906) {
-- Console.WriteLine(" float3 retval3: got {0} but expected {1}", retval3, 2*906);
-+ s3 = mono_return_float3(s3, 906);
-+ if (s3.f1 != 1+906) {
-+ Console.WriteLine(" float3 s3.f1: got {0} but expected {1}", s3.f1, 1+906);
- return 1;
- }
-+ if (s3.f2 != 2+906) {
-+ Console.WriteLine(" float3 s3.f2: got {0} but expected {1}", s3.f2, 2+906);
-+ return 2;
-+ }
-+ if (s3.f3 != 3+906) {
-+ Console.WriteLine(" float3 s3.f3: got {0} but expected {1}", s3.f3, 3+906);
-+ return 3;
-+ }
-
- float4 s4;
- s4.f1 = 1;
- s4.f2 = 2;
- s4.f3 = 3;
- s4.f4 = 4;
-- float retval4 = mono_return_float4(s4, 906);
-- if (retval4 != 2*906) {
-- Console.WriteLine(" float4 retval4: got {0} but expected {1}", retval4, 2*906);
-+ s4 = mono_return_float4(s4, 906);
-+ if (s4.f1 != 1+906) {
-+ Console.WriteLine(" float4 s4.f1: got {0} but expected {1}", s4.f1, 1+906);
- return 1;
- }
-+ if (s4.f2 != 2+906) {
-+ Console.WriteLine(" float4 s4.f2: got {0} but expected {1}", s4.f2, 2+906);
-+ return 2;
-+ }
-+ if (s4.f3 != 3+906) {
-+ Console.WriteLine(" float4 s4.f3: got {0} but expected {1}", s4.f3, 3+906);
-+ return 3;
-+ }
-+ if (s4.f4 != 4+906) {
-+ Console.WriteLine(" float4 s4.f4: got {0} but expected {1}", s4.f4, 4+906);
-+ return 4;
-+ }
-
- float5 s5;
- s5.f1 = 1;
-@@ -141,11 +165,27 @@ public class Test_float {
- s5.f3 = 3;
- s5.f4 = 4;
- s5.f5 = 5;
-- float retval5 = mono_return_float5(s5, 906);
-- if (retval5 != 2*906) {
-- Console.WriteLine(" float5 retval5: got {0} but expected {1}", retval5, 2*906);
-+ s5 = mono_return_float5(s5, 906);
-+ if (s5.f1 != 1+906) {
-+ Console.WriteLine(" float5 s5.f1: got {0} but expected {1}", s5.f1, 1+906);
- return 1;
- }
-+ if (s5.f2 != 2+906) {
-+ Console.WriteLine(" float5 s5.f2: got {0} but expected {1}", s5.f2, 2+906);
-+ return 2;
-+ }
-+ if (s5.f3 != 3+906) {
-+ Console.WriteLine(" float5 s5.f3: got {0} but expected {1}", s5.f3, 3+906);
-+ return 3;
-+ }
-+ if (s5.f4 != 4+906) {
-+ Console.WriteLine(" float5 s5.f4: got {0} but expected {1}", s5.f4, 4+906);
-+ return 4;
-+ }
-+ if (s5.f5 != 5+906) {
-+ Console.WriteLine(" float5 s5.f5: got {0} but expected {1}", s5.f5, 5+906);
-+ return 5;
-+ }
-
- float6 s6;
- s6.f1 = 1;
-@@ -154,11 +194,31 @@ public class Test_float {
- s6.f4 = 4;
- s6.f5 = 5;
- s6.f6 = 6;
-- float retval6 = mono_return_float6(s6, 906);
-- if (retval6 != 2*906) {
-- Console.WriteLine(" float6 retval6: got {0} but expected {1}", retval6, 2*906);
-+ s6 = mono_return_float6(s6, 906);
-+ if (s6.f1 != 1+906) {
-+ Console.WriteLine(" float6 s6.f1: got {0} but expected {1}", s6.f1, 1+906);
- return 1;
- }
-+ if (s6.f2 != 2+906) {
-+ Console.WriteLine(" float6 s6.f2: got {0} but expected {1}", s6.f2, 2+906);
-+ return 2;
-+ }
-+ if (s6.f3 != 3+906) {
-+ Console.WriteLine(" float6 s6.f3: got {0} but expected {1}", s6.f3, 3+906);
-+ return 3;
-+ }
-+ if (s6.f4 != 4+906) {
-+ Console.WriteLine(" float6 s6.f4: got {0} but expected {1}", s6.f4, 4+906);
-+ return 4;
-+ }
-+ if (s6.f5 != 5+906) {
-+ Console.WriteLine(" float6 s6.f5: got {0} but expected {1}", s6.f5, 5+906);
-+ return 5;
-+ }
-+ if (s6.f6 != 6+906) {
-+ Console.WriteLine(" float6 s6.f6: got {0} but expected {1}", s6.f6, 6+906);
-+ return 6;
-+ }
-
- float7 s7;
- s7.f1 = 1;
-@@ -168,11 +228,35 @@ public class Test_float {
- s7.f5 = 5;
- s7.f6 = 6;
- s7.f7 = 7;
-- float retval7 = mono_return_float7(s7, 906);
-- if (retval7 != 2*906) {
-- Console.WriteLine(" float7 retval7: got {0} but expected {1}", retval7, 2*906);
-+ s7 = mono_return_float7(s7, 906);
-+ if (s7.f1 != 1+906) {
-+ Console.WriteLine(" float7 s7.f1: got {0} but expected {1}", s7.f1, 1+906);
- return 1;
- }
-+ if (s7.f2 != 2+906) {
-+ Console.WriteLine(" float7 s7.f2: got {0} but expected {1}", s7.f2, 2+906);
-+ return 2;
-+ }
-+ if (s7.f3 != 3+906) {
-+ Console.WriteLine(" float7 s7.f3: got {0} but expected {1}", s7.f3, 3+906);
-+ return 3;
-+ }
-+ if (s7.f4 != 4+906) {
-+ Console.WriteLine(" float7 s7.f4: got {0} but expected {1}", s7.f4, 4+906);
-+ return 4;
-+ }
-+ if (s7.f5 != 5+906) {
-+ Console.WriteLine(" float7 s7.f5: got {0} but expected {1}", s7.f5, 5+906);
-+ return 5;
-+ }
-+ if (s7.f6 != 6+906) {
-+ Console.WriteLine(" float7 s7.f6: got {0} but expected {1}", s7.f6, 6+906);
-+ return 6;
-+ }
-+ if (s7.f7 != 7+906) {
-+ Console.WriteLine(" float7 s7.f7: got {0} but expected {1}", s7.f7, 7+906);
-+ return 7;
-+ }
-
- float8 s8;
- s8.f1 = 1;
-@@ -183,11 +267,39 @@ public class Test_float {
- s8.f6 = 6;
- s8.f7 = 7;
- s8.f8 = 8;
-- float retval8 = mono_return_float8(s8, 906);
-- if (retval8 != 2*906) {
-- Console.WriteLine(" float8 retval8: got {0} but expected {1}", retval8, 2*906);
-+ s8 = mono_return_float8(s8, 906);
-+ if (s8.f1 != 1+906) {
-+ Console.WriteLine(" float8 s8.f1: got {0} but expected {1}", s8.f1, 1+906);
- return 1;
- }
-+ if (s8.f2 != 2+906) {
-+ Console.WriteLine(" float8 s8.f2: got {0} but expected {1}", s8.f2, 2+906);
-+ return 2;
-+ }
-+ if (s8.f3 != 3+906) {
-+ Console.WriteLine(" float8 s8.f3: got {0} but expected {1}", s8.f3, 3+906);
-+ return 3;
-+ }
-+ if (s8.f4 != 4+906) {
-+ Console.WriteLine(" float8 s8.f4: got {0} but expected {1}", s8.f4, 4+906);
-+ return 4;
-+ }
-+ if (s8.f5 != 5+906) {
-+ Console.WriteLine(" float8 s8.f5: got {0} but expected {1}", s8.f5, 5+906);
-+ return 5;
-+ }
-+ if (s8.f6 != 6+906) {
-+ Console.WriteLine(" float8 s8.f6: got {0} but expected {1}", s8.f6, 6+906);
-+ return 6;
-+ }
-+ if (s8.f7 != 7+906) {
-+ Console.WriteLine(" float8 s8.f7: got {0} but expected {1}", s8.f7, 7+906);
-+ return 7;
-+ }
-+ if (s8.f8 != 8+906) {
-+ Console.WriteLine(" float8 s8.f8: got {0} but expected {1}", s8.f8, 8+906);
-+ return 8;
-+ }
-
- float9 s9;
- s9.f1 = 1;
-@@ -199,18 +311,69 @@ public class Test_float {
- s9.f7 = 7;
- s9.f8 = 8;
- s9.f9 = 9;
-- float retval9 = mono_return_float9(s9, 906);
-- if (retval9 != 2*906) {
-- Console.WriteLine(" float9 retval9: got {0} but expected {1}", retval9, 2*906);
-+ s9 = mono_return_float9(s9, 906);
-+ if (s9.f1 != 1+906) {
-+ Console.WriteLine(" float9 s9.f1: got {0} but expected {1}", s9.f1, 1+906);
- return 1;
- }
-+ if (s9.f2 != 2+906) {
-+ Console.WriteLine(" float9 s9.f2: got {0} but expected {1}", s9.f2, 2+906);
-+ return 2;
-+ }
-+ if (s9.f3 != 3+906) {
-+ Console.WriteLine(" float9 s9.f3: got {0} but expected {1}", s9.f3, 3+906);
-+ return 3;
-+ }
-+ if (s9.f4 != 4+906) {
-+ Console.WriteLine(" float9 s9.f4: got {0} but expected {1}", s9.f4, 4+906);
-+ return 4;
-+ }
-+ if (s9.f5 != 5+906) {
-+ Console.WriteLine(" float9 s9.f5: got {0} but expected {1}", s9.f5, 5+906);
-+ return 5;
-+ }
-+ if (s9.f6 != 6+906) {
-+ Console.WriteLine(" float9 s9.f6: got {0} but expected {1}", s9.f6, 6+906);
-+ return 6;
-+ }
-+ if (s9.f7 != 7+906) {
-+ Console.WriteLine(" float9 s9.f7: got {0} but expected {1}", s9.f7, 7+906);
-+ return 7;
-+ }
-+ if (s9.f8 != 8+906) {
-+ Console.WriteLine(" float9 s9.f8: got {0} but expected {1}", s9.f8, 8+906);
-+ return 8;
-+ }
-+ if (s9.f9 != 9+906) {
-+ Console.WriteLine(" float9 s9.f9: got {0} but expected {1}", s9.f9, 9+906);
-+ return 9;
-+ }
-
-
-+ float4_nested sn4;
-+ sn4.nested1.f1 = 1;
-+ sn4.f2 = 2;
-+ sn4.f3 = 3;
-+ sn4.nested2.f4 = 4;
-+ sn4 = mono_return_float4_nested(sn4, 906);
-+ if (sn4.nested1.f1 != 1+906) {
-+ Console.WriteLine(" float4_nested sn4.nested1.f1: got {0} but expected {1}", sn4.nested1.f1, 1+906);
-+ return 1;
-+ }
-+ if (sn4.f2 != 2+906) {
-+ Console.WriteLine(" float4_nested sn4.f2: got {0} but expected {1}", sn4.f2, 2+906);
-+ return 2;
-+ }
-+ if (sn4.f3 != 3+906) {
-+ Console.WriteLine(" float4_nested sn4.f3: got {0} but expected {1}", sn4.f3, 3+906);
-+ return 3;
-+ }
-+ if (sn4.nested2.f4 != 4+906) {
-+ Console.WriteLine(" float4_nested sn4.nested2.f4: got {0} but expected {1}", sn4.nested2.f4, 4+906);
-+ return 4;
-+ }
-+
- return 0;
- } // end Main
- } // end class Test_float
-
--
--
--
--
-Index: mono-4.2.1/mono/tests/pinvoke_ppci.cs
-===================================================================
---- mono-4.2.1.orig/mono/tests/pinvoke_ppci.cs
-+++ mono-4.2.1/mono/tests/pinvoke_ppci.cs
-@@ -20,25 +20,25 @@ using System.Runtime.InteropServices;
- public class Test_int {
-
- [DllImport ("libtest", EntryPoint="mono_return_int1")]
-- public static extern int mono_return_int1 (int1 s, int addend);
-+ public static extern int1 mono_return_int1 (int1 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct int1 {
- public int f1;
- }
- [DllImport ("libtest", EntryPoint="mono_return_int2")]
-- public static extern int mono_return_int2 (int2 s, int addend);
-+ public static extern int2 mono_return_int2 (int2 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct int2 {
- public int f1,f2;
- }
- [DllImport ("libtest", EntryPoint="mono_return_int3")]
-- public static extern int mono_return_int3 (int3 s, int addend);
-+ public static extern int3 mono_return_int3 (int3 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct int3 {
- public int f1,f2,f3;
- }
- [DllImport ("libtest", EntryPoint="mono_return_int4")]
-- public static extern int mono_return_int4 (int4 s, int addend);
-+ public static extern int4 mono_return_int4 (int4 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct int4 {
- public int f1,f2,f3,f4;
-@@ -46,7 +46,7 @@ public class Test_int {
- // This structure is 1 element too large to use the special return
- // rules.
- [DllImport ("libtest", EntryPoint="mono_return_int5")]
-- public static extern int mono_return_int5 (int5 s, int addend);
-+ public static extern int5 mono_return_int5 (int5 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct int5 {
- public int f1,f2,f3,f4,f5;
-@@ -73,41 +73,65 @@ public class Test_int {
-
- int1 s1;
- s1.f1 = 1;
-- int retval1 = mono_return_int1(s1, 906);
-- if (retval1 != 2*906) {
-- Console.WriteLine(" int1 retval1: got {0} but expected {1}", retval1, 2*906);
-+ s1 = mono_return_int1(s1, 906);
-+ if (s1.f1 != 1+906) {
-+ Console.WriteLine(" int1 s1.f1: got {0} but expected {1}", s1.f1, 1+906);
- return 1;
- }
-
- int2 s2;
- s2.f1 = 1;
- s2.f2 = 2;
-- int retval2 = mono_return_int2(s2, 906);
-- if (retval2 != 2*906) {
-- Console.WriteLine(" int2 retval2: got {0} but expected {1}", retval2, 2*906);
-+ s2 = mono_return_int2(s2, 906);
-+ if (s2.f1 != 1+906) {
-+ Console.WriteLine(" int2 s2.f1: got {0} but expected {1}", s2.f1, 1+906);
- return 1;
- }
-+ if (s2.f2 != 2+906) {
-+ Console.WriteLine(" int2 s2.f2: got {0} but expected {1}", s2.f2, 2+906);
-+ return 2;
-+ }
-
- int3 s3;
- s3.f1 = 1;
- s3.f2 = 2;
- s3.f3 = 3;
-- int retval3 = mono_return_int3(s3, 906);
-- if (retval3 != 2*906) {
-- Console.WriteLine(" int3 retval3: got {0} but expected {1}", retval3, 2*906);
-+ s3 = mono_return_int3(s3, 906);
-+ if (s3.f1 != 1+906) {
-+ Console.WriteLine(" int3 s3.f1: got {0} but expected {1}", s3.f1, 1+906);
- return 1;
- }
-+ if (s3.f2 != 2+906) {
-+ Console.WriteLine(" int3 s3.f2: got {0} but expected {1}", s3.f2, 2+906);
-+ return 2;
-+ }
-+ if (s3.f3 != 3+906) {
-+ Console.WriteLine(" int3 s3.f3: got {0} but expected {1}", s3.f3, 3+906);
-+ return 3;
-+ }
-
- int4 s4;
- s4.f1 = 1;
- s4.f2 = 2;
- s4.f3 = 3;
- s4.f4 = 4;
-- int retval4 = mono_return_int4(s4, 906);
-- if (retval4 != 2*906) {
-- Console.WriteLine(" int4 retval4: got {0} but expected {1}", retval4, 2*906);
-+ s4 = mono_return_int4(s4, 906);
-+ if (s4.f1 != 1+906) {
-+ Console.WriteLine(" int4 s4.f1: got {0} but expected {1}", s4.f1, 1+906);
- return 1;
- }
-+ if (s4.f2 != 2+906) {
-+ Console.WriteLine(" int4 s4.f2: got {0} but expected {1}", s4.f2, 2+906);
-+ return 2;
-+ }
-+ if (s4.f3 != 3+906) {
-+ Console.WriteLine(" int4 s4.f3: got {0} but expected {1}", s4.f3, 3+906);
-+ return 3;
-+ }
-+ if (s4.f4 != 4+906) {
-+ Console.WriteLine(" int4 s4.f4: got {0} but expected {1}", s4.f4, 4+906);
-+ return 4;
-+ }
-
- int5 s5;
- s5.f1 = 1;
-@@ -115,18 +139,53 @@ public class Test_int {
- s5.f3 = 3;
- s5.f4 = 4;
- s5.f5 = 5;
-- int retval5 = mono_return_int5(s5, 906);
-- if (retval5 != 2*906) {
-- Console.WriteLine(" int5 retval5: got {0} but expected {1}", retval5, 2*906);
-+ s5 = mono_return_int5(s5, 906);
-+ if (s5.f1 != 1+906) {
-+ Console.WriteLine(" int5 s5.f1: got {0} but expected {1}", s5.f1, 1+906);
- return 1;
- }
-+ if (s5.f2 != 2+906) {
-+ Console.WriteLine(" int5 s5.f2: got {0} but expected {1}", s5.f2, 2+906);
-+ return 2;
-+ }
-+ if (s5.f3 != 3+906) {
-+ Console.WriteLine(" int5 s5.f3: got {0} but expected {1}", s5.f3, 3+906);
-+ return 3;
-+ }
-+ if (s5.f4 != 4+906) {
-+ Console.WriteLine(" int5 s5.f4: got {0} but expected {1}", s5.f4, 4+906);
-+ return 4;
-+ }
-+ if (s5.f5 != 5+906) {
-+ Console.WriteLine(" int5 s5.f5: got {0} but expected {1}", s5.f5, 5+906);
-+ return 5;
-+ }
-
-
-+ int4_nested sn4;
-+ sn4.nested1.f1 = 1;
-+ sn4.f2 = 2;
-+ sn4.f3 = 3;
-+ sn4.nested2.f4 = 4;
-+ sn4 = mono_return_int4_nested(sn4, 906);
-+ if (sn4.nested1.f1 != 1+906) {
-+ Console.WriteLine(" int4_nested sn4.nested1.f1: got {0} but expected {1}", sn4.nested1.f1, 1+906);
-+ return 1;
-+ }
-+ if (sn4.f2 != 2+906) {
-+ Console.WriteLine(" int4_nested sn4.f2: got {0} but expected {1}", sn4.f2, 2+906);
-+ return 2;
-+ }
-+ if (sn4.f3 != 3+906) {
-+ Console.WriteLine(" int4_nested sn4.f3: got {0} but expected {1}", sn4.f3, 3+906);
-+ return 3;
-+ }
-+ if (sn4.nested2.f4 != 4+906) {
-+ Console.WriteLine(" int4_nested sn4.nested2.f4: got {0} but expected {1}", sn4.nested2.f4, 4+906);
-+ return 4;
-+ }
-+
- return 0;
- } // end Main
- } // end class Test_int
-
--
--
--
--
-Index: mono-4.2.1/mono/tests/pinvoke_ppcs.cs
-===================================================================
---- mono-4.2.1.orig/mono/tests/pinvoke_ppcs.cs
-+++ mono-4.2.1/mono/tests/pinvoke_ppcs.cs
-@@ -20,49 +20,49 @@ using System.Runtime.InteropServices;
- public class Test_short {
-
- [DllImport ("libtest", EntryPoint="mono_return_short1")]
-- public static extern short mono_return_short1 (short1 s, int addend);
-+ public static extern short1 mono_return_short1 (short1 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct short1 {
- public short f1;
- }
- [DllImport ("libtest", EntryPoint="mono_return_short2")]
-- public static extern short mono_return_short2 (short2 s, int addend);
-+ public static extern short2 mono_return_short2 (short2 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct short2 {
- public short f1,f2;
- }
- [DllImport ("libtest", EntryPoint="mono_return_short3")]
-- public static extern short mono_return_short3 (short3 s, int addend);
-+ public static extern short3 mono_return_short3 (short3 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct short3 {
- public short f1,f2,f3;
- }
- [DllImport ("libtest", EntryPoint="mono_return_short4")]
-- public static extern short mono_return_short4 (short4 s, int addend);
-+ public static extern short4 mono_return_short4 (short4 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct short4 {
- public short f1,f2,f3,f4;
- }
- [DllImport ("libtest", EntryPoint="mono_return_short5")]
-- public static extern short mono_return_short5 (short5 s, int addend);
-+ public static extern short5 mono_return_short5 (short5 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct short5 {
- public short f1,f2,f3,f4,f5;
- }
- [DllImport ("libtest", EntryPoint="mono_return_short6")]
-- public static extern short mono_return_short6 (short6 s, int addend);
-+ public static extern short6 mono_return_short6 (short6 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct short6 {
- public short f1,f2,f3,f4,f5,f6;
- }
- [DllImport ("libtest", EntryPoint="mono_return_short7")]
-- public static extern short mono_return_short7 (short7 s, int addend);
-+ public static extern short7 mono_return_short7 (short7 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct short7 {
- public short f1,f2,f3,f4,f5,f6,f7;
- }
- [DllImport ("libtest", EntryPoint="mono_return_short8")]
-- public static extern short mono_return_short8 (short8 s, int addend);
-+ public static extern short8 mono_return_short8 (short8 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct short8 {
- public short f1,f2,f3,f4,f5,f6,f7,f8;
-@@ -70,7 +70,7 @@ public class Test_short {
- // This structure is 1 element too large to use the special return
- // rules.
- [DllImport ("libtest", EntryPoint="mono_return_short9")]
-- public static extern short mono_return_short9 (short9 s, int addend);
-+ public static extern short9 mono_return_short9 (short9 s, int addend);
- [StructLayout(LayoutKind.Sequential)]
- public struct short9 {
- public short f1,f2,f3,f4,f5,f6,f7,f8,f9;
-@@ -97,41 +97,65 @@ public class Test_short {
-
- short1 s1;
- s1.f1 = 1;
-- short retval1 = mono_return_short1(s1, 90);
-- if (retval1 != 2*90) {
-- Console.WriteLine(" short1 retval1: got {0} but expected {1}", retval1, 2*90);
-+ s1 = mono_return_short1(s1, 90);
-+ if (s1.f1 != 1+90) {
-+ Console.WriteLine(" short1 s1.f1: got {0} but expected {1}", s1.f1, 1+90);
- return 1;
- }
-
- short2 s2;
- s2.f1 = 1;
- s2.f2 = 2;
-- short retval2 = mono_return_short2(s2, 90);
-- if (retval2 != 2*90) {
-- Console.WriteLine(" short2 retval2: got {0} but expected {1}", retval2, 2*90);
-+ s2 = mono_return_short2(s2, 90);
-+ if (s2.f1 != 1+90) {
-+ Console.WriteLine(" short2 s2.f1: got {0} but expected {1}", s2.f1, 1+90);
- return 1;
- }
-+ if (s2.f2 != 2+90) {
-+ Console.WriteLine(" short2 s2.f2: got {0} but expected {1}", s2.f2, 2+90);
-+ return 2;
-+ }
-
- short3 s3;
- s3.f1 = 1;
- s3.f2 = 2;
- s3.f3 = 3;
-- short retval3 = mono_return_short3(s3, 90);
-- if (retval3 != 2*90) {
-- Console.WriteLine(" short3 retval3: got {0} but expected {1}", retval3, 2*90);
-+ s3 = mono_return_short3(s3, 90);
-+ if (s3.f1 != 1+90) {
-+ Console.WriteLine(" short3 s3.f1: got {0} but expected {1}", s3.f1, 1+90);
- return 1;
- }
-+ if (s3.f2 != 2+90) {
-+ Console.WriteLine(" short3 s3.f2: got {0} but expected {1}", s3.f2, 2+90);
-+ return 2;
-+ }
-+ if (s3.f3 != 3+90) {
-+ Console.WriteLine(" short3 s3.f3: got {0} but expected {1}", s3.f3, 3+90);
-+ return 3;
-+ }
-
- short4 s4;
- s4.f1 = 1;
- s4.f2 = 2;
- s4.f3 = 3;
- s4.f4 = 4;
-- short retval4 = mono_return_short4(s4, 90);
-- if (retval4 != 2*90) {
-- Console.WriteLine(" short4 retval4: got {0} but expected {1}", retval4, 2*90);
-+ s4 = mono_return_short4(s4, 90);
-+ if (s4.f1 != 1+90) {
-+ Console.WriteLine(" short4 s4.f1: got {0} but expected {1}", s4.f1, 1+90);
- return 1;
- }
-+ if (s4.f2 != 2+90) {
-+ Console.WriteLine(" short4 s4.f2: got {0} but expected {1}", s4.f2, 2+90);
-+ return 2;
-+ }
-+ if (s4.f3 != 3+90) {
-+ Console.WriteLine(" short4 s4.f3: got {0} but expected {1}", s4.f3, 3+90);
-+ return 3;
-+ }
-+ if (s4.f4 != 4+90) {
-+ Console.WriteLine(" short4 s4.f4: got {0} but expected {1}", s4.f4, 4+90);
-+ return 4;
-+ }
-
- short5 s5;
- s5.f1 = 1;
-@@ -139,11 +163,27 @@ public class Test_short {
- s5.f3 = 3;
- s5.f4 = 4;
- s5.f5 = 5;
-- short retval5 = mono_return_short5(s5, 90);
-- if (retval5 != 2*90) {
-- Console.WriteLine(" short5 retval5: got {0} but expected {1}", retval5, 2*90);
-+ s5 = mono_return_short5(s5, 90);
-+ if (s5.f1 != 1+90) {
-+ Console.WriteLine(" short5 s5.f1: got {0} but expected {1}", s5.f1, 1+90);
- return 1;
- }
-+ if (s5.f2 != 2+90) {
-+ Console.WriteLine(" short5 s5.f2: got {0} but expected {1}", s5.f2, 2+90);
-+ return 2;
-+ }
-+ if (s5.f3 != 3+90) {
-+ Console.WriteLine(" short5 s5.f3: got {0} but expected {1}", s5.f3, 3+90);
-+ return 3;
-+ }
-+ if (s5.f4 != 4+90) {
-+ Console.WriteLine(" short5 s5.f4: got {0} but expected {1}", s5.f4, 4+90);
-+ return 4;
-+ }
-+ if (s5.f5 != 5+90) {
-+ Console.WriteLine(" short5 s5.f5: got {0} but expected {1}", s5.f5, 5+90);
-+ return 5;
-+ }
-
- short6 s6;
- s6.f1 = 1;
-@@ -152,11 +192,31 @@ public class Test_short {
- s6.f4 = 4;
- s6.f5 = 5;
- s6.f6 = 6;
-- short retval6 = mono_return_short6(s6, 90);
-- if (retval6 != 2*90) {
-- Console.WriteLine(" short6 retval6: got {0} but expected {1}", retval6, 2*90);
-+ s6 = mono_return_short6(s6, 90);
-+ if (s6.f1 != 1+90) {
-+ Console.WriteLine(" short6 s6.f1: got {0} but expected {1}", s6.f1, 1+90);
- return 1;
- }
-+ if (s6.f2 != 2+90) {
-+ Console.WriteLine(" short6 s6.f2: got {0} but expected {1}", s6.f2, 2+90);
-+ return 2;
-+ }
-+ if (s6.f3 != 3+90) {
-+ Console.WriteLine(" short6 s6.f3: got {0} but expected {1}", s6.f3, 3+90);
-+ return 3;
-+ }
-+ if (s6.f4 != 4+90) {
-+ Console.WriteLine(" short6 s6.f4: got {0} but expected {1}", s6.f4, 4+90);
-+ return 4;
-+ }
-+ if (s6.f5 != 5+90) {
-+ Console.WriteLine(" short6 s6.f5: got {0} but expected {1}", s6.f5, 5+90);
-+ return 5;
-+ }
-+ if (s6.f6 != 6+90) {
-+ Console.WriteLine(" short6 s6.f6: got {0} but expected {1}", s6.f6, 6+90);
-+ return 6;
-+ }
-
- short7 s7;
- s7.f1 = 1;
-@@ -166,11 +226,35 @@ public class Test_short {
- s7.f5 = 5;
- s7.f6 = 6;
- s7.f7 = 7;
-- short retval7 = mono_return_short7(s7, 90);
-- if (retval7 != 2*90) {
-- Console.WriteLine(" short7 retval7: got {0} but expected {1}", retval7, 2*90);
-+ s7 = mono_return_short7(s7, 90);
-+ if (s7.f1 != 1+90) {
-+ Console.WriteLine(" short7 s7.f1: got {0} but expected {1}", s7.f1, 1+90);
- return 1;
- }
-+ if (s7.f2 != 2+90) {
-+ Console.WriteLine(" short7 s7.f2: got {0} but expected {1}", s7.f2, 2+90);
-+ return 2;
-+ }
-+ if (s7.f3 != 3+90) {
-+ Console.WriteLine(" short7 s7.f3: got {0} but expected {1}", s7.f3, 3+90);
-+ return 3;
-+ }
-+ if (s7.f4 != 4+90) {
-+ Console.WriteLine(" short7 s7.f4: got {0} but expected {1}", s7.f4, 4+90);
-+ return 4;
-+ }
-+ if (s7.f5 != 5+90) {
-+ Console.WriteLine(" short7 s7.f5: got {0} but expected {1}", s7.f5, 5+90);
-+ return 5;
-+ }
-+ if (s7.f6 != 6+90) {
-+ Console.WriteLine(" short7 s7.f6: got {0} but expected {1}", s7.f6, 6+90);
-+ return 6;
-+ }
-+ if (s7.f7 != 7+90) {
-+ Console.WriteLine(" short7 s7.f7: got {0} but expected {1}", s7.f7, 7+90);
-+ return 7;
-+ }
-
- short8 s8;
- s8.f1 = 1;
-@@ -181,11 +265,39 @@ public class Test_short {
- s8.f6 = 6;
- s8.f7 = 7;
- s8.f8 = 8;
-- short retval8 = mono_return_short8(s8, 90);
-- if (retval8 != 2*90) {
-- Console.WriteLine(" short8 retval8: got {0} but expected {1}", retval8, 2*90);
-+ s8 = mono_return_short8(s8, 90);
-+ if (s8.f1 != 1+90) {
-+ Console.WriteLine(" short8 s8.f1: got {0} but expected {1}", s8.f1, 1+90);
- return 1;
- }
-+ if (s8.f2 != 2+90) {
-+ Console.WriteLine(" short8 s8.f2: got {0} but expected {1}", s8.f2, 2+90);
-+ return 2;
-+ }
-+ if (s8.f3 != 3+90) {
-+ Console.WriteLine(" short8 s8.f3: got {0} but expected {1}", s8.f3, 3+90);
-+ return 3;
-+ }
-+ if (s8.f4 != 4+90) {
-+ Console.WriteLine(" short8 s8.f4: got {0} but expected {1}", s8.f4, 4+90);
-+ return 4;
-+ }
-+ if (s8.f5 != 5+90) {
-+ Console.WriteLine(" short8 s8.f5: got {0} but expected {1}", s8.f5, 5+90);
-+ return 5;
-+ }
-+ if (s8.f6 != 6+90) {
-+ Console.WriteLine(" short8 s8.f6: got {0} but expected {1}", s8.f6, 6+90);
-+ return 6;
-+ }
-+ if (s8.f7 != 7+90) {
-+ Console.WriteLine(" short8 s8.f7: got {0} but expected {1}", s8.f7, 7+90);
-+ return 7;
-+ }
-+ if (s8.f8 != 8+90) {
-+ Console.WriteLine(" short8 s8.f8: got {0} but expected {1}", s8.f8, 8+90);
-+ return 8;
-+ }
-
- short9 s9;
- s9.f1 = 1;
-@@ -197,18 +309,89 @@ public class Test_short {
- s9.f7 = 7;
- s9.f8 = 8;
- s9.f9 = 9;
-- short retval9 = mono_return_short9(s9, 90);
-- if (retval9 != 2*90) {
-- Console.WriteLine(" short9 retval9: got {0} but expected {1}", retval9, 2*90);
-+ s9 = mono_return_short9(s9, 90);
-+ if (s9.f1 != 1+90) {
-+ Console.WriteLine(" short9 s9.f1: got {0} but expected {1}", s9.f1, 1+90);
- return 1;
- }
-+ if (s9.f2 != 2+90) {
-+ Console.WriteLine(" short9 s9.f2: got {0} but expected {1}", s9.f2, 2+90);
-+ return 2;
-+ }
-+ if (s9.f3 != 3+90) {
-+ Console.WriteLine(" short9 s9.f3: got {0} but expected {1}", s9.f3, 3+90);
-+ return 3;
-+ }
-+ if (s9.f4 != 4+90) {
-+ Console.WriteLine(" short9 s9.f4: got {0} but expected {1}", s9.f4, 4+90);
-+ return 4;
-+ }
-+ if (s9.f5 != 5+90) {
-+ Console.WriteLine(" short9 s9.f5: got {0} but expected {1}", s9.f5, 5+90);
-+ return 5;
-+ }
-+ if (s9.f6 != 6+90) {
-+ Console.WriteLine(" short9 s9.f6: got {0} but expected {1}", s9.f6, 6+90);
-+ return 6;
-+ }
-+ if (s9.f7 != 7+90) {
-+ Console.WriteLine(" short9 s9.f7: got {0} but expected {1}", s9.f7, 7+90);
-+ return 7;
-+ }
-+ if (s9.f8 != 8+90) {
-+ Console.WriteLine(" short9 s9.f8: got {0} but expected {1}", s9.f8, 8+90);
-+ return 8;
-+ }
-+ if (s9.f9 != 9+90) {
-+ Console.WriteLine(" short9 s9.f9: got {0} but expected {1}", s9.f9, 9+90);
-+ return 9;
-+ }
-
-
-+ short8_nested sn8;
-+ sn8.nested1.f1 = 1;
-+ sn8.f2 = 2;
-+ sn8.f3 = 3;
-+ sn8.f4 = 4;
-+ sn8.f5 = 5;
-+ sn8.f6 = 6;
-+ sn8.f7 = 7;
-+ sn8.nested2.f8 = 8;
-+ sn8 = mono_return_short8_nested(sn8, 90);
-+ if (sn8.nested1.f1 != 1+90) {
-+ Console.WriteLine(" short8_nested sn8.nested1.f1: got {0} but expected {1}", sn8.nested1.f1, 1+90);
-+ return 1;
-+ }
-+ if (sn8.f2 != 2+90) {
-+ Console.WriteLine(" short8_nested sn8.f2: got {0} but expected {1}", sn8.f2, 2+90);
-+ return 2;
-+ }
-+ if (sn8.f3 != 3+90) {
-+ Console.WriteLine(" short8_nested sn8.f3: got {0} but expected {1}", sn8.f3, 3+90);
-+ return 3;
-+ }
-+ if (sn8.f4 != 4+90) {
-+ Console.WriteLine(" short8_nested sn8.f4: got {0} but expected {1}", sn8.f4, 4+90);
-+ return 4;
-+ }
-+ if (sn8.f5 != 5+90) {
-+ Console.WriteLine(" short8_nested sn8.f5: got {0} but expected {1}", sn8.f5, 5+90);
-+ return 5;
-+ }
-+ if (sn8.f6 != 6+90) {
-+ Console.WriteLine(" short8_nested sn8.f6: got {0} but expected {1}", sn8.f6, 6+90);
-+ return 6;
-+ }
-+ if (sn8.f7 != 7+90) {
-+ Console.WriteLine(" short8_nested sn8.f7: got {0} but expected {1}", sn8.f7, 7+90);
-+ return 7;
-+ }
-+ if (sn8.nested2.f8 != 8+90) {
-+ Console.WriteLine(" short8_nested sn8.nested2.f8: got {0} but expected {1}", sn8.nested2.f8, 8+90);
-+ return 8;
-+ }
-+
- return 0;
- } // end Main
- } // end class Test_short
-
--
--
--
--