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 - -- -- -- --