- Refresh patches
- Update to 3.4.0 * Revamped HttpWebRequest/ServicePoint stack - Should properly reuse connections. - Uses the specified idle times - NTLM support has been improved. - SSL/TLS operations on via async APIs are now implemented using async patterns internally to greatly alleviate Thread Pool abuse. * Network stack - Now allows developers to control which cipher suites to use with TLS/SSL. * ARM - Emit shorter floating point operations when possible - Hard float support: Mono now should work on Linux distributions which uses a hard float (armhf) ABI, like the Raspberry PI. Notes: Homogeneous floating point aggregates are not yet supported on armhf. * Documentation - Updated documentation stubs to the 4.5 .NET API. * mono-api-html - Now supports regular expressions when specifying members to ignore (e.g. mono-api-html -i 'INSCopying$') OBS-URL: https://build.opensuse.org/package/show/Mono:Factory/mono-core?expand=0&rev=129
This commit is contained in:
parent
a12cde823f
commit
d089493623
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fdb48cad26149288dcb99a3d9b4ec89735706000242c50bdc21ce657af201a40
|
||||
size 77515552
|
3
mono-3.4.0.tar.bz2
Normal file
3
mono-3.4.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c9d509d82a9d340f216a7172d4884a772b22b16555386873b874f92e2d38fe37
|
||||
size 83010187
|
@ -1,6 +1,8 @@
|
||||
--- a/mcs/Makefile
|
||||
+++ b/mcs/Makefile
|
||||
@@ -82,7 +82,7 @@
|
||||
Index: mono-3.4.0/mcs/Makefile
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mcs/Makefile
|
||||
+++ mono-3.4.0/mcs/Makefile
|
||||
@@ -83,7 +83,7 @@ all-local $(STD_TARGETS:=-local):
|
||||
@:
|
||||
|
||||
dir-check:
|
||||
|
@ -10,10 +10,11 @@ with one destination register we also need to make some additional
|
||||
calls use r12. We probably should convert all calls that currently
|
||||
use r0 to use r12 if no other conflicts arise but this is enough to build.
|
||||
|
||||
diff -u mono-3.2.3/mono/mini/exceptions-ppc.c mono-3.2.3/mono/mini/exceptions-ppc.c
|
||||
--- mono-3.2.3/mono/mini/exceptions-ppc.c 2014-01-04 19:04:35.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/exceptions-ppc.c 2014-01-04 19:32:51.000000000 +0000
|
||||
@@ -395,8 +395,8 @@
|
||||
Index: mono-3.4.0/mono/mini/exceptions-ppc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/exceptions-ppc.c
|
||||
+++ mono-3.4.0/mono/mini/exceptions-ppc.c
|
||||
@@ -391,8 +391,8 @@ mono_arch_get_throw_exception_generic (i
|
||||
ppc_bcctrl (code, PPC_BR_ALWAYS, 0);
|
||||
} else {
|
||||
ppc_load (code, ppc_r3, (gulong)mono_defaults.corlib);
|
||||
@ -24,7 +25,7 @@ diff -u mono-3.2.3/mono/mini/exceptions-ppc.c mono-3.2.3/mono/mini/exceptions-pp
|
||||
ppc_bcctrl (code, PPC_BR_ALWAYS, 0);
|
||||
}
|
||||
}
|
||||
@@ -430,8 +430,8 @@
|
||||
@@ -426,8 +426,8 @@ mono_arch_get_throw_exception_generic (i
|
||||
ppc_mtctr (code, ppc_r12);
|
||||
ppc_bcctrl (code, PPC_BR_ALWAYS, 0);
|
||||
} else {
|
||||
@ -35,10 +36,11 @@ diff -u mono-3.2.3/mono/mini/exceptions-ppc.c mono-3.2.3/mono/mini/exceptions-pp
|
||||
ppc_bcctrl (code, PPC_BR_ALWAYS, 0);
|
||||
}
|
||||
/* we should never reach this breakpoint */
|
||||
diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
--- mono-3.2.3/mono/mini/mini-ppc.c 2014-01-04 19:16:23.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/mini-ppc.c 2014-01-04 19:58:06.000000000 +0000
|
||||
@@ -1783,8 +1783,8 @@
|
||||
Index: mono-3.4.0/mono/mini/mini-ppc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-ppc.c
|
||||
+++ mono-3.4.0/mono/mini/mini-ppc.c
|
||||
@@ -1782,8 +1782,8 @@ mono_arch_instrument_prolog (MonoCompile
|
||||
|
||||
ppc_load_ptr (code, ppc_r3, cfg->method);
|
||||
ppc_li (code, ppc_r4, 0); /* NULL ebp for now */
|
||||
@ -49,7 +51,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
ppc_blrl (code);
|
||||
return code;
|
||||
}
|
||||
@@ -1881,8 +1881,8 @@
|
||||
@@ -1880,8 +1880,8 @@ mono_arch_instrument_epilog_full (MonoCo
|
||||
}
|
||||
|
||||
ppc_load_ptr (code, ppc_r3, cfg->method);
|
||||
@ -60,7 +62,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
ppc_blrl (code);
|
||||
|
||||
switch (save_mode) {
|
||||
@@ -2923,7 +2923,7 @@
|
||||
@@ -2922,7 +2922,7 @@ ppc_patch_full (guchar *code, const guch
|
||||
|
||||
if (!is_fd) {
|
||||
guint8 *buf = (guint8*)&seq [5];
|
||||
@ -69,7 +71,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
ppc_nop (buf);
|
||||
}
|
||||
} else {
|
||||
@@ -2936,7 +2936,7 @@
|
||||
@@ -2935,7 +2935,7 @@ ppc_patch_full (guchar *code, const guch
|
||||
/* FIXME: we're assuming we're using r12 here */
|
||||
ppc_load_ptr_sequence (code, ppc_r12, target);
|
||||
#else
|
||||
@ -78,7 +80,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
#endif
|
||||
mono_arch_flush_icache ((guint8*)seq, 28);
|
||||
#else
|
||||
@@ -2952,8 +2952,8 @@
|
||||
@@ -2951,8 +2951,8 @@ ppc_patch_full (guchar *code, const guch
|
||||
g_assert ((seq [2] >> 26) == 31);
|
||||
g_assert (seq [3] == 0x4e800021 || seq [3] == 0x4e800020 || seq [3] == 0x4e800420);
|
||||
/* FIXME: make this thread safe */
|
||||
@ -89,7 +91,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
mono_arch_flush_icache (code - 8, 8);
|
||||
#endif
|
||||
} else {
|
||||
@@ -3371,8 +3371,8 @@
|
||||
@@ -3370,8 +3370,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_INTERNAL_METHOD,
|
||||
(gpointer)"mono_break");
|
||||
if ((FORCE_INDIR_CALL || cfg->method->dynamic) && !cfg->compile_aot) {
|
||||
@ -100,7 +102,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
ppc_blrl (code);
|
||||
} else {
|
||||
ppc_bl (code, 0);
|
||||
@@ -3819,8 +3819,8 @@
|
||||
@@ -3818,8 +3818,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
else
|
||||
mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_ABS, call->fptr);
|
||||
if ((FORCE_INDIR_CALL || cfg->method->dynamic) && !cfg->compile_aot) {
|
||||
@ -111,7 +113,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
ppc_blrl (code);
|
||||
} else {
|
||||
ppc_bl (code, 0);
|
||||
@@ -3913,8 +3913,8 @@
|
||||
@@ -3912,8 +3912,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_INTERNAL_METHOD,
|
||||
(gpointer)"mono_arch_throw_exception");
|
||||
if ((FORCE_INDIR_CALL || cfg->method->dynamic) && !cfg->compile_aot) {
|
||||
@ -122,7 +124,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
ppc_blrl (code);
|
||||
} else {
|
||||
ppc_bl (code, 0);
|
||||
@@ -3927,8 +3927,8 @@
|
||||
@@ -3926,8 +3926,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_INTERNAL_METHOD,
|
||||
(gpointer)"mono_arch_rethrow_exception");
|
||||
if ((FORCE_INDIR_CALL || cfg->method->dynamic) && !cfg->compile_aot) {
|
||||
@ -133,7 +135,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
ppc_blrl (code);
|
||||
} else {
|
||||
ppc_bl (code, 0);
|
||||
@@ -5070,8 +5070,8 @@
|
||||
@@ -5070,8 +5070,8 @@ mono_arch_emit_prolog (MonoCompile *cfg)
|
||||
mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_INTERNAL_METHOD,
|
||||
(gpointer)"mono_get_lmf_addr");
|
||||
if ((FORCE_INDIR_CALL || cfg->method->dynamic) && !cfg->compile_aot) {
|
||||
@ -144,7 +146,7 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
ppc_blrl (code);
|
||||
} else {
|
||||
ppc_bl (code, 0);
|
||||
@@ -5380,8 +5380,8 @@
|
||||
@@ -5380,8 +5380,8 @@ mono_arch_emit_exceptions (MonoCompile *
|
||||
patch_info->data.name = "mono_arch_throw_corlib_exception";
|
||||
patch_info->ip.i = code - cfg->native_code;
|
||||
if (FORCE_INDIR_CALL || cfg->method->dynamic) {
|
||||
@ -155,10 +157,11 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
ppc_bcctr (code, PPC_BR_ALWAYS, 0);
|
||||
} else {
|
||||
ppc_bl (code, 0);
|
||||
diff -u mono-3.2.3/mono/mini/mini-ppc.h mono-3.2.3/mono/mini/mini-ppc.h
|
||||
--- mono-3.2.3/mono/mini/mini-ppc.h 2014-01-04 19:04:36.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/mini-ppc.h 2014-01-04 19:27:07.000000000 +0000
|
||||
@@ -172,6 +172,8 @@
|
||||
Index: mono-3.4.0/mono/mini/mini-ppc.h
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-ppc.h
|
||||
+++ mono-3.4.0/mono/mini/mini-ppc.h
|
||||
@@ -172,6 +172,8 @@ typedef struct MonoCompileArch {
|
||||
#define PPC_FIRST_FPARG_REG ppc_f1
|
||||
#endif
|
||||
|
||||
@ -167,10 +170,11 @@ diff -u mono-3.2.3/mono/mini/mini-ppc.h mono-3.2.3/mono/mini/mini-ppc.h
|
||||
#if defined(HAVE_WORKING_SIGALTSTACK) && !defined(__APPLE__)
|
||||
#define MONO_ARCH_SIGSEGV_ON_ALTSTACK 1
|
||||
#define MONO_ARCH_SIGNAL_STACK_SIZE (12 * 1024)
|
||||
diff -u mono-3.2.3/mono/mini/tramp-ppc.c mono-3.2.3/mono/mini/tramp-ppc.c
|
||||
--- mono-3.2.3/mono/mini/tramp-ppc.c 2014-01-04 19:16:53.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/tramp-ppc.c 2014-01-04 19:35:16.000000000 +0000
|
||||
@@ -309,8 +309,8 @@
|
||||
Index: mono-3.4.0/mono/mini/tramp-ppc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/tramp-ppc.c
|
||||
+++ mono-3.4.0/mono/mini/tramp-ppc.c
|
||||
@@ -306,8 +306,8 @@ mono_arch_create_generic_trampoline (Mon
|
||||
ppc_mtlr (code, ppc_r12);
|
||||
ppc_blrl (code);
|
||||
} else {
|
||||
@ -181,7 +185,7 @@ diff -u mono-3.2.3/mono/mini/tramp-ppc.c mono-3.2.3/mono/mini/tramp-ppc.c
|
||||
ppc_blrl (code);
|
||||
}
|
||||
/* we build the MonoLMF structure on the stack - see mini-ppc.h
|
||||
@@ -371,8 +371,8 @@
|
||||
@@ -368,8 +368,8 @@ mono_arch_create_generic_trampoline (Mon
|
||||
ppc_blrl (code);
|
||||
} else {
|
||||
tramp_handler = mono_get_trampoline_func (tramp_type);
|
||||
|
@ -7,9 +7,10 @@ to pass around values to functions outside the normal argument registers
|
||||
(ugh!), so there's a conflict. This mechanical (by sed) patch simply switches
|
||||
ppc_r11 and ppc_r12 everywhere, r11 doesn't have any special use in the ABI.
|
||||
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/arch/ppc/ppc-codegen.h mono-3.2.3/mono/arch/ppc/ppc-codegen.h
|
||||
--- mono-3.2.3.orig/mono/arch/ppc/ppc-codegen.h 2014-01-04 04:16:29.000000000 +0000
|
||||
+++ mono-3.2.3/mono/arch/ppc/ppc-codegen.h 2014-01-04 19:04:29.000000000 +0000
|
||||
Index: mono-3.4.0/mono/arch/ppc/ppc-codegen.h
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/arch/ppc/ppc-codegen.h
|
||||
+++ mono-3.4.0/mono/arch/ppc/ppc-codegen.h
|
||||
@@ -810,9 +810,9 @@ my and Ximian's copyright to this code.
|
||||
#define ppc_load_func(c,D,V) ppc_load_sequence ((c), (D), (V))
|
||||
#else
|
||||
@ -23,10 +24,11 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/arch/ppc/pp
|
||||
} G_STMT_END
|
||||
#endif
|
||||
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/aot-compiler.c mono-3.2.3/mono/mini/aot-compiler.c
|
||||
--- mono-3.2.3.orig/mono/mini/aot-compiler.c 2013-09-13 22:38:21.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/aot-compiler.c 2014-01-04 19:17:32.000000000 +0000
|
||||
@@ -1830,14 +1830,14 @@ arch_emit_imt_thunk (MonoAotCompile *acf
|
||||
Index: mono-3.4.0/mono/mini/aot-compiler.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/aot-compiler.c
|
||||
+++ mono-3.4.0/mono/mini/aot-compiler.c
|
||||
@@ -1842,14 +1842,14 @@ arch_emit_imt_thunk (MonoAotCompile *acf
|
||||
code = buf;
|
||||
|
||||
/* Load the mscorlib got address */
|
||||
@ -44,7 +46,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/aot-co
|
||||
ppc_cmp (code, 0, sizeof (gpointer) == 8 ? 1 : 0, ppc_r0, MONO_ARCH_IMT_REG);
|
||||
labels [2] = code;
|
||||
ppc_bc (code, PPC_BR_TRUE, PPC_BR_EQ, 0);
|
||||
@@ -1848,18 +1848,18 @@ arch_emit_imt_thunk (MonoAotCompile *acf
|
||||
@@ -1860,18 +1860,18 @@ arch_emit_imt_thunk (MonoAotCompile *acf
|
||||
ppc_bc (code, PPC_BR_TRUE, PPC_BR_EQ, 0);
|
||||
|
||||
/* Loop footer */
|
||||
@ -68,10 +70,11 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/aot-co
|
||||
ppc_bcctr (code, PPC_BR_ALWAYS, 0);
|
||||
|
||||
/* Fail */
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/exceptions-ppc.c mono-3.2.3/mono/mini/exceptions-ppc.c
|
||||
--- mono-3.2.3.orig/mono/mini/exceptions-ppc.c 2013-09-13 22:22:23.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/exceptions-ppc.c 2014-01-04 19:04:35.000000000 +0000
|
||||
@@ -385,13 +385,13 @@ mono_arch_get_throw_exception_generic (i
|
||||
Index: mono-3.4.0/mono/mini/exceptions-ppc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/exceptions-ppc.c
|
||||
+++ mono-3.4.0/mono/mini/exceptions-ppc.c
|
||||
@@ -381,13 +381,13 @@ mono_arch_get_throw_exception_generic (i
|
||||
|
||||
if (aot) {
|
||||
code = mono_arch_emit_load_aotconst (start, code, &ji, MONO_PATCH_INFO_IMAGE, mono_defaults.corlib);
|
||||
@ -89,7 +92,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/except
|
||||
ppc_bcctrl (code, PPC_BR_ALWAYS, 0);
|
||||
} else {
|
||||
ppc_load (code, ppc_r3, (gulong)mono_defaults.corlib);
|
||||
@@ -424,10 +424,10 @@ mono_arch_get_throw_exception_generic (i
|
||||
@@ -420,10 +420,10 @@ mono_arch_get_throw_exception_generic (i
|
||||
code = mono_arch_emit_load_got_addr (start, code, NULL, &ji);
|
||||
code = mono_arch_emit_load_aotconst (start, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "mono_ppc_throw_exception");
|
||||
#ifdef PPC_USES_FUNCTION_DESCRIPTOR
|
||||
@ -103,10 +106,11 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/except
|
||||
ppc_bcctrl (code, PPC_BR_ALWAYS, 0);
|
||||
} else {
|
||||
ppc_load_func (code, ppc_r0, mono_ppc_throw_exception);
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-mips.c mono-3.2.3/mono/mini/mini-mips.c
|
||||
--- mono-3.2.3.orig/mono/mini/mini-mips.c 2013-09-13 22:22:14.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/mini-mips.c 2014-01-04 19:04:36.000000000 +0000
|
||||
@@ -3299,8 +3299,8 @@ emit_reserve_param_area (MonoCompile *cf
|
||||
Index: mono-3.4.0/mono/mini/mini-mips.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-mips.c
|
||||
+++ mono-3.4.0/mono/mini/mini-mips.c
|
||||
@@ -3298,8 +3298,8 @@ emit_reserve_param_area (MonoCompile *cf
|
||||
if (ppc_is_imm16 (-size)) {
|
||||
ppc_stwu (code, ppc_r0, -size, ppc_sp);
|
||||
} else {
|
||||
@ -117,7 +121,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-m
|
||||
}
|
||||
#endif
|
||||
return code;
|
||||
@@ -3321,8 +3321,8 @@ emit_unreserve_param_area (MonoCompile *
|
||||
@@ -3320,8 +3320,8 @@ emit_unreserve_param_area (MonoCompile *
|
||||
if (ppc_is_imm16 (size)) {
|
||||
ppc_stwu (code, ppc_r0, size, ppc_sp);
|
||||
} else {
|
||||
@ -128,7 +132,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-m
|
||||
}
|
||||
#endif
|
||||
return code;
|
||||
@@ -3713,8 +3713,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3712,8 +3712,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
case OP_DIV_IMM:
|
||||
g_assert_not_reached ();
|
||||
#if 0
|
||||
@ -139,10 +143,11 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-m
|
||||
ppc_mfspr (code, ppc_r0, ppc_xer);
|
||||
ppc_andisd (code, ppc_r0, ppc_r0, (1<<14));
|
||||
/* FIXME: use OverflowException for 0x80000000/-1 */
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
--- mono-3.2.3.orig/mono/mini/mini-ppc.c 2014-01-04 04:16:29.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/mini-ppc.c 2014-01-04 19:16:23.000000000 +0000
|
||||
@@ -104,11 +104,11 @@ offsets_from_pthread_key (guint32 key, i
|
||||
Index: mono-3.4.0/mono/mini/mini-ppc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-ppc.c
|
||||
+++ mono-3.4.0/mono/mini/mini-ppc.c
|
||||
@@ -103,11 +103,11 @@ offsets_from_pthread_key (guint32 key, i
|
||||
/* FIXME: ensure the sc call preserves all but r3 */
|
||||
#define emit_darwing4_tls(code,dreg,key) do {\
|
||||
int off1 = 0x48 + key * sizeof (gpointer); \
|
||||
@ -156,7 +161,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
} while (0);
|
||||
|
||||
#ifdef PPC_THREAD_PTR_REG
|
||||
@@ -119,8 +119,8 @@ offsets_from_pthread_key (guint32 key, i
|
||||
@@ -118,8 +118,8 @@ offsets_from_pthread_key (guint32 key, i
|
||||
ppc_ldptr ((code), (dreg), off1, PPC_THREAD_PTR_REG); \
|
||||
} else { \
|
||||
int off3 = (off2 + 1) > 1; \
|
||||
@ -167,7 +172,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
} \
|
||||
} while (0);
|
||||
#else
|
||||
@@ -191,29 +191,29 @@ emit_memcpy (guint8 *code, int size, int
|
||||
@@ -190,29 +190,29 @@ emit_memcpy (guint8 *code, int size, int
|
||||
|
||||
ppc_load (code, ppc_r0, shifted);
|
||||
ppc_mtctr (code, ppc_r0);
|
||||
@ -206,7 +211,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
size -= 16;
|
||||
soffset += 16;
|
||||
doffset += 16;
|
||||
@@ -227,12 +227,12 @@ emit_memcpy (guint8 *code, int size, int
|
||||
@@ -226,12 +226,12 @@ emit_memcpy (guint8 *code, int size, int
|
||||
doffset += 8;
|
||||
}
|
||||
#else
|
||||
@ -222,7 +227,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
size -= 8;
|
||||
soffset += 8;
|
||||
doffset += 8;
|
||||
@@ -738,7 +738,7 @@ mono_arch_get_global_int_regs (MonoCompi
|
||||
@@ -737,7 +737,7 @@ mono_arch_get_global_int_regs (MonoCompi
|
||||
for (i = 14; i < top; ++i) {
|
||||
/*
|
||||
* Reserve r29 for holding the vtable address for virtual calls in AOT mode,
|
||||
@ -231,7 +236,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
*/
|
||||
if (!(cfg->compile_aot && i == 29))
|
||||
regs = g_list_prepend (regs, GUINT_TO_POINTER (i));
|
||||
@@ -2923,7 +2923,7 @@ ppc_patch_full (guchar *code, const guch
|
||||
@@ -2922,7 +2922,7 @@ ppc_patch_full (guchar *code, const guch
|
||||
|
||||
if (!is_fd) {
|
||||
guint8 *buf = (guint8*)&seq [5];
|
||||
@ -240,7 +245,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
ppc_nop (buf);
|
||||
}
|
||||
} else {
|
||||
@@ -2933,8 +2933,8 @@ ppc_patch_full (guchar *code, const guch
|
||||
@@ -2932,8 +2932,8 @@ ppc_patch_full (guchar *code, const guch
|
||||
|
||||
/* FIXME: make this thread safe */
|
||||
#ifdef PPC_USES_FUNCTION_DESCRIPTOR
|
||||
@ -251,7 +256,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
#else
|
||||
ppc_load_ptr_sequence (code, ppc_r0, target);
|
||||
#endif
|
||||
@@ -3010,8 +3010,8 @@ emit_reserve_param_area (MonoCompile *cf
|
||||
@@ -3009,8 +3009,8 @@ emit_reserve_param_area (MonoCompile *cf
|
||||
if (ppc_is_imm16 (-size)) {
|
||||
ppc_stptr_update (code, ppc_r0, -size, ppc_sp);
|
||||
} else {
|
||||
@ -262,7 +267,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
}
|
||||
|
||||
return code;
|
||||
@@ -3032,8 +3032,8 @@ emit_unreserve_param_area (MonoCompile *
|
||||
@@ -3031,8 +3031,8 @@ emit_unreserve_param_area (MonoCompile *
|
||||
if (ppc_is_imm16 (size)) {
|
||||
ppc_stptr_update (code, ppc_r0, size, ppc_sp);
|
||||
} else {
|
||||
@ -273,7 +278,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
}
|
||||
|
||||
return code;
|
||||
@@ -3107,8 +3107,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3106,8 +3106,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
* a breakpoint is hit will step to the next IL offset.
|
||||
*/
|
||||
if (ins->flags & MONO_INST_SINGLE_STEP_LOC) {
|
||||
@ -284,7 +289,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
}
|
||||
|
||||
mono_add_seq_point (cfg, bb, ins, code - cfg->native_code);
|
||||
@@ -3142,8 +3142,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3141,8 +3141,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
ppc_stb (code, ins->sreg1, ins->inst_offset, ins->inst_destbasereg);
|
||||
} else {
|
||||
if (ppc_is_imm32 (ins->inst_offset)) {
|
||||
@ -295,7 +300,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
} else {
|
||||
ppc_load (code, ppc_r0, ins->inst_offset);
|
||||
ppc_stbx (code, ins->sreg1, ins->inst_destbasereg, ppc_r0);
|
||||
@@ -3155,8 +3155,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3154,8 +3154,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
ppc_sth (code, ins->sreg1, ins->inst_offset, ins->inst_destbasereg);
|
||||
} else {
|
||||
if (ppc_is_imm32 (ins->inst_offset)) {
|
||||
@ -306,7 +311,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
} else {
|
||||
ppc_load (code, ppc_r0, ins->inst_offset);
|
||||
ppc_sthx (code, ins->sreg1, ins->inst_destbasereg, ppc_r0);
|
||||
@@ -3168,8 +3168,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3167,8 +3167,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
ppc_stptr (code, ins->sreg1, ins->inst_offset, ins->inst_destbasereg);
|
||||
} else {
|
||||
if (ppc_is_imm32 (ins->inst_offset)) {
|
||||
@ -317,7 +322,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
} else {
|
||||
ppc_load (code, ppc_r0, ins->inst_offset);
|
||||
ppc_stptr_indexed (code, ins->sreg1, ins->inst_destbasereg, ppc_r0);
|
||||
@@ -3725,7 +3725,7 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3724,7 +3724,7 @@ mono_arch_output_basic_block (MonoCompil
|
||||
*/
|
||||
g_assert (!cfg->method->save_lmf);
|
||||
/*
|
||||
@ -326,7 +331,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
* we're leaving the method.
|
||||
*/
|
||||
if (1 || cfg->flags & MONO_CFG_HAS_CALLS) {
|
||||
@@ -3733,26 +3733,26 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3732,26 +3732,26 @@ mono_arch_output_basic_block (MonoCompil
|
||||
if (ppc_is_imm16 (ret_offset)) {
|
||||
ppc_ldptr (code, ppc_r0, ret_offset, cfg->frame_reg);
|
||||
} else {
|
||||
@ -359,7 +364,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -3761,27 +3761,27 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3760,27 +3760,27 @@ mono_arch_output_basic_block (MonoCompil
|
||||
|
||||
/* Copy arguments on the stack to our argument area */
|
||||
if (call->stack_usage) {
|
||||
@ -395,7 +400,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
#else
|
||||
ppc_ldptr_indexed (code, ppc_r0, ppc_r30, ppc_r0);
|
||||
#endif
|
||||
@@ -3853,7 +3853,7 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3852,7 +3852,7 @@ mono_arch_output_basic_block (MonoCompil
|
||||
case OP_VCALL2_MEMBASE:
|
||||
case OP_VOIDCALL_MEMBASE:
|
||||
case OP_CALL_MEMBASE:
|
||||
@ -404,7 +409,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
/* The trampolines clobber this */
|
||||
ppc_mr (code, ppc_r29, ins->sreg1);
|
||||
ppc_ldptr (code, ppc_r0, ins->inst_offset, ppc_r29);
|
||||
@@ -3871,9 +3871,9 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3870,9 +3870,9 @@ mono_arch_output_basic_block (MonoCompil
|
||||
int alloca_waste = PPC_STACK_PARAM_OFFSET + cfg->param_area + 31;
|
||||
int area_offset = alloca_waste;
|
||||
area_offset &= ~31;
|
||||
@ -416,7 +421,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
/* use ctr to store the number of words to 0 if needed */
|
||||
if (ins->flags & MONO_INST_INIT) {
|
||||
/* we zero 4 bytes at a time:
|
||||
@@ -3886,8 +3886,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3885,8 +3885,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
ppc_mtctr (code, ppc_r0);
|
||||
}
|
||||
ppc_ldptr (code, ppc_r0, 0, ppc_sp);
|
||||
@ -427,7 +432,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
|
||||
/* FIXME: make this loop work in 8 byte
|
||||
increments on PPC64 */
|
||||
@@ -3897,9 +3897,9 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3896,9 +3896,9 @@ mono_arch_output_basic_block (MonoCompil
|
||||
* run at least once
|
||||
*/
|
||||
ppc_addi (code, ins->dreg, ppc_sp, (area_offset - 8));
|
||||
@ -439,7 +444,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
zero_loop_jump = code;
|
||||
ppc_bc (code, PPC_BR_DEC_CTR_NONZERO, 0, 0);
|
||||
ppc_patch (zero_loop_jump, zero_loop_start);
|
||||
@@ -3943,8 +3943,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3942,8 +3942,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
if (ppc_is_imm16 (spvar->inst_offset)) {
|
||||
ppc_stptr (code, ppc_r0, spvar->inst_offset, spvar->inst_basereg);
|
||||
} else {
|
||||
@ -450,7 +455,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -3957,8 +3957,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -3956,8 +3956,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
if (ppc_is_imm16 (spvar->inst_offset)) {
|
||||
ppc_ldptr (code, ppc_r0, spvar->inst_offset, spvar->inst_basereg);
|
||||
} else {
|
||||
@ -461,7 +466,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
}
|
||||
ppc_mtlr (code, ppc_r0);
|
||||
ppc_blr (code);
|
||||
@@ -4064,11 +4064,11 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -4063,11 +4063,11 @@ mono_arch_output_basic_block (MonoCompil
|
||||
|
||||
/* FIXME: Optimize this */
|
||||
ppc_bl (code, 1);
|
||||
@ -475,7 +480,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
break;
|
||||
case OP_R4CONST:
|
||||
g_assert_not_reached ();
|
||||
@@ -4078,8 +4078,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -4077,8 +4077,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
ppc_stfd (code, ins->sreg1, ins->inst_offset, ins->inst_destbasereg);
|
||||
} else {
|
||||
if (ppc_is_imm32 (ins->inst_offset)) {
|
||||
@ -486,7 +491,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
} else {
|
||||
ppc_load (code, ppc_r0, ins->inst_offset);
|
||||
ppc_stfdx (code, ins->sreg1, ins->inst_destbasereg, ppc_r0);
|
||||
@@ -4091,8 +4091,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -4090,8 +4090,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
ppc_lfd (code, ins->dreg, ins->inst_offset, ins->inst_basereg);
|
||||
} else {
|
||||
if (ppc_is_imm32 (ins->inst_offset)) {
|
||||
@ -497,7 +502,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
} else {
|
||||
ppc_load (code, ppc_r0, ins->inst_offset);
|
||||
ppc_lfdx (code, ins->dreg, ins->inst_destbasereg, ppc_r0);
|
||||
@@ -4105,8 +4105,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -4104,8 +4104,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
ppc_stfs (code, ins->sreg1, ins->inst_offset, ins->inst_destbasereg);
|
||||
} else {
|
||||
if (ppc_is_imm32 (ins->inst_offset)) {
|
||||
@ -508,7 +513,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
} else {
|
||||
ppc_load (code, ppc_r0, ins->inst_offset);
|
||||
ppc_stfsx (code, ins->sreg1, ins->inst_destbasereg, ppc_r0);
|
||||
@@ -4118,8 +4118,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
@@ -4117,8 +4117,8 @@ mono_arch_output_basic_block (MonoCompil
|
||||
ppc_lfs (code, ins->dreg, ins->inst_offset, ins->inst_basereg);
|
||||
} else {
|
||||
if (ppc_is_imm32 (ins->inst_offset)) {
|
||||
@ -924,7 +929,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5630,15 +5630,15 @@ mono_arch_build_imt_thunk (MonoVTable *v
|
||||
@@ -5618,15 +5618,15 @@ mono_arch_build_imt_thunk (MonoVTable *v
|
||||
start = code;
|
||||
|
||||
/*
|
||||
@ -944,7 +949,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
|
||||
for (i = 0; i < count; ++i) {
|
||||
MonoIMTCheckItem *item = imt_entries [i];
|
||||
@@ -5654,8 +5654,8 @@ mono_arch_build_imt_thunk (MonoVTable *v
|
||||
@@ -5642,8 +5642,8 @@ mono_arch_build_imt_thunk (MonoVTable *v
|
||||
if (item->has_target_code) {
|
||||
ppc_load_ptr (code, ppc_r0, item->value.target_code);
|
||||
} else {
|
||||
@ -955,7 +960,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
}
|
||||
ppc_mtctr (code, ppc_r0);
|
||||
ppc_bcctr (code, PPC_BR_ALWAYS, 0);
|
||||
@@ -5687,8 +5687,8 @@ mono_arch_build_imt_thunk (MonoVTable *v
|
||||
@@ -5675,8 +5675,8 @@ mono_arch_build_imt_thunk (MonoVTable *v
|
||||
item->jmp_code = code;
|
||||
ppc_bc (code, PPC_BR_FALSE, PPC_BR_EQ, 0);
|
||||
#endif
|
||||
@ -966,7 +971,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
ppc_mtctr (code, ppc_r0);
|
||||
ppc_bcctr (code, PPC_BR_ALWAYS, 0);
|
||||
#if ENABLE_WRONG_METHOD_CHECK
|
||||
@@ -5827,17 +5827,17 @@ mono_arch_emit_load_got_addr (guint8 *st
|
||||
@@ -5802,17 +5802,17 @@ mono_arch_emit_load_got_addr (guint8 *st
|
||||
* Emit code to load the contents of the GOT slot identified by TRAMP_TYPE and
|
||||
* TARGET from the mscorlib GOT in full-aot code.
|
||||
* On PPC, the GOT address is assumed to be in r30, and the result is placed into
|
||||
@ -987,7 +992,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
|
||||
return code;
|
||||
}
|
||||
@@ -5860,8 +5860,8 @@ mono_arch_set_breakpoint (MonoJitInfo *j
|
||||
@@ -5835,8 +5835,8 @@ mono_arch_set_breakpoint (MonoJitInfo *j
|
||||
guint8 *code = ip;
|
||||
guint8 *orig_code = code;
|
||||
|
||||
@ -998,9 +1003,10 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
|
||||
g_assert (code - orig_code == BREAKPOINT_SIZE);
|
||||
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-ppc.h mono-3.2.3/mono/mini/mini-ppc.h
|
||||
--- mono-3.2.3.orig/mono/mini/mini-ppc.h 2014-01-04 04:16:29.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/mini-ppc.h 2014-01-04 19:04:36.000000000 +0000
|
||||
Index: mono-3.4.0/mono/mini/mini-ppc.h
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-ppc.h
|
||||
+++ mono-3.4.0/mono/mini/mini-ppc.h
|
||||
@@ -105,7 +105,7 @@ typedef struct MonoCompileArch {
|
||||
#define MONO_ARCH_GC_MAPS_SUPPORTED 1
|
||||
|
||||
@ -1022,10 +1028,11 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
#define MONO_ARCH_RGCTX_REG MONO_ARCH_IMT_REG
|
||||
|
||||
#define MONO_ARCH_NO_IOV_CHECK 1
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/tramp-ppc.c mono-3.2.3/mono/mini/tramp-ppc.c
|
||||
--- mono-3.2.3.orig/mono/mini/tramp-ppc.c 2013-09-13 22:22:19.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/tramp-ppc.c 2014-01-04 19:16:53.000000000 +0000
|
||||
@@ -303,10 +303,10 @@ mono_arch_create_generic_trampoline (Mon
|
||||
Index: mono-3.4.0/mono/mini/tramp-ppc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/tramp-ppc.c
|
||||
+++ mono-3.4.0/mono/mini/tramp-ppc.c
|
||||
@@ -300,10 +300,10 @@ mono_arch_create_generic_trampoline (Mon
|
||||
if (aot) {
|
||||
code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "mono_get_lmf_addr");
|
||||
#ifdef PPC_USES_FUNCTION_DESCRIPTOR
|
||||
@ -1039,7 +1046,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/tramp-
|
||||
ppc_blrl (code);
|
||||
} else {
|
||||
ppc_load_func (code, ppc_r0, mono_get_lmf_addr);
|
||||
@@ -314,33 +314,33 @@ mono_arch_create_generic_trampoline (Mon
|
||||
@@ -311,33 +311,33 @@ mono_arch_create_generic_trampoline (Mon
|
||||
ppc_blrl (code);
|
||||
}
|
||||
/* we build the MonoLMF structure on the stack - see mini-ppc.h
|
||||
@ -1083,7 +1090,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/tramp-
|
||||
|
||||
/*
|
||||
* Now we're ready to call trampoline (mgreg_t *regs, guint8 *code, gpointer value, guint8 *tramp)
|
||||
@@ -364,10 +364,10 @@ mono_arch_create_generic_trampoline (Mon
|
||||
@@ -361,10 +361,10 @@ mono_arch_create_generic_trampoline (Mon
|
||||
if (aot) {
|
||||
code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, g_strdup_printf ("trampoline_func_%d", tramp_type));
|
||||
#ifdef PPC_USES_FUNCTION_DESCRIPTOR
|
||||
@ -1097,7 +1104,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/tramp-
|
||||
ppc_blrl (code);
|
||||
} else {
|
||||
tramp_handler = mono_get_trampoline_func (tramp_type);
|
||||
@@ -392,20 +392,20 @@ mono_arch_create_generic_trampoline (Mon
|
||||
@@ -389,20 +389,20 @@ mono_arch_create_generic_trampoline (Mon
|
||||
* Now we restore the MonoLMF (see emit_epilogue in mini-ppc.c)
|
||||
* and the rest of the registers, so the method called will see
|
||||
* the same state as before we executed.
|
||||
@ -1124,7 +1131,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/tramp-
|
||||
|
||||
/* restore the volatile registers, we skip r1, of course */
|
||||
offset = STACK - sizeof (MonoLMF) - (14 * sizeof (double));
|
||||
@@ -427,8 +427,8 @@ mono_arch_create_generic_trampoline (Mon
|
||||
@@ -424,8 +424,8 @@ mono_arch_create_generic_trampoline (Mon
|
||||
*/
|
||||
/* Restore stack pointer and LR and jump to the code */
|
||||
ppc_ldr (code, ppc_r1, 0, ppc_r1);
|
||||
@ -1135,7 +1142,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/tramp-
|
||||
if (MONO_TRAMPOLINE_TYPE_MUST_RETURN (tramp_type))
|
||||
ppc_blr (code);
|
||||
else
|
||||
@@ -604,9 +604,9 @@ mono_arch_create_rgctx_lazy_fetch_trampo
|
||||
@@ -596,9 +596,9 @@ mono_arch_create_rgctx_lazy_fetch_trampo
|
||||
code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, g_strdup_printf ("specific_trampoline_lazy_fetch_%u", slot));
|
||||
/* Branch to the trampoline */
|
||||
#ifdef PPC_USES_FUNCTION_DESCRIPTOR
|
||||
@ -1147,7 +1154,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/tramp-
|
||||
ppc_bcctr (code, PPC_BR_ALWAYS, 0);
|
||||
} else {
|
||||
tramp = mono_arch_create_specific_trampoline (GUINT_TO_POINTER (slot),
|
||||
@@ -666,9 +666,9 @@ mono_arch_create_generic_class_init_tram
|
||||
@@ -658,9 +658,9 @@ mono_arch_create_generic_class_init_tram
|
||||
code = mono_arch_emit_load_aotconst (buf, code, &ji, MONO_PATCH_INFO_JIT_ICALL_ADDR, "specific_trampoline_generic_class_init");
|
||||
/* Branch to the trampoline */
|
||||
#ifdef PPC_USES_FUNCTION_DESCRIPTOR
|
||||
|
@ -10,9 +10,10 @@ This adds initial support for ppc64le to the ppc64 port. That is:
|
||||
It also corrects the list of registers for the precise GC, but that isn't
|
||||
used in mini at all on any architecture currently.
|
||||
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/arch/ppc/ppc-codegen.h mono-3.2.3/mono/arch/ppc/ppc-codegen.h
|
||||
--- mono-3.2.3.orig/mono/arch/ppc/ppc-codegen.h 2013-09-13 22:21:32.000000000 +0000
|
||||
+++ mono-3.2.3/mono/arch/ppc/ppc-codegen.h 2014-01-03 18:39:09.000000000 +0000
|
||||
Index: mono-3.4.0/mono/arch/ppc/ppc-codegen.h
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/arch/ppc/ppc-codegen.h
|
||||
+++ mono-3.4.0/mono/arch/ppc/ppc-codegen.h
|
||||
@@ -123,7 +123,7 @@ enum {
|
||||
PPC_TRAP_GE_UN = 16 + PPC_TRAP_EQ
|
||||
};
|
||||
@ -38,9 +39,10 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/arch/ppc/pp
|
||||
|
||||
#define ppc_load_multiple_regs(c,D,d,A) G_STMT_START { \
|
||||
int __i, __o = (d); \
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/metadata/sgen-marksweep.c mono-3.2.3/mono/metadata/sgen-marksweep.c
|
||||
--- mono-3.2.3.orig/mono/metadata/sgen-marksweep.c 2013-09-13 22:21:52.000000000 +0000
|
||||
+++ mono-3.2.3/mono/metadata/sgen-marksweep.c 2014-01-03 19:13:37.000000000 +0000
|
||||
Index: mono-3.4.0/mono/metadata/sgen-marksweep.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/metadata/sgen-marksweep.c
|
||||
+++ mono-3.4.0/mono/metadata/sgen-marksweep.c
|
||||
@@ -45,8 +45,10 @@
|
||||
#define SGEN_HAVE_CONCURRENT_MARK
|
||||
#endif
|
||||
@ -54,9 +56,10 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/metadata/sg
|
||||
#define MAJOR_SECTION_SIZE MS_BLOCK_SIZE
|
||||
#define CARDS_PER_BLOCK (MS_BLOCK_SIZE / CARD_SIZE_IN_BYTES)
|
||||
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-gc.c mono-3.2.3/mono/mini/mini-gc.c
|
||||
--- mono-3.2.3.orig/mono/mini/mini-gc.c 2013-12-22 03:29:45.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/mini-gc.c 2014-01-03 18:44:54.000000000 +0000
|
||||
Index: mono-3.4.0/mono/mini/mini-gc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-gc.c
|
||||
+++ mono-3.4.0/mono/mini/mini-gc.c
|
||||
@@ -439,7 +439,12 @@ static int callee_saved_regs [] = { ARMR
|
||||
#elif defined(TARGET_S390X)
|
||||
static int callee_saved_regs [] = { s390_r6, s390_r7, s390_r8, s390_r9, s390_r10, s390_r11, s390_r12, s390_r13, s390_r14 };
|
||||
@ -71,10 +74,11 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-g
|
||||
#endif
|
||||
|
||||
static guint32
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-ppc.c mono-3.2.3/mono/mini/mini-ppc.c
|
||||
--- mono-3.2.3.orig/mono/mini/mini-ppc.c 2013-09-13 22:22:23.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/mini-ppc.c 2014-01-03 18:54:20.000000000 +0000
|
||||
@@ -2812,14 +2812,14 @@ handle_thunk (int absolute, guchar *code
|
||||
Index: mono-3.4.0/mono/mini/mini-ppc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-ppc.c
|
||||
+++ mono-3.4.0/mono/mini/mini-ppc.c
|
||||
@@ -2811,14 +2811,14 @@ handle_thunk (int absolute, guchar *code
|
||||
static void
|
||||
patch_ins (guint8 *code, guint32 ins)
|
||||
{
|
||||
@ -91,7 +95,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
guint32 prim = ins >> 26;
|
||||
guint32 ovf;
|
||||
|
||||
@@ -2902,7 +2902,13 @@ ppc_patch_full (guchar *code, const guch
|
||||
@@ -2901,7 +2901,13 @@ ppc_patch_full (guchar *code, const guch
|
||||
else
|
||||
code -= 24;
|
||||
} else {
|
||||
@ -106,7 +110,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
branch_ins = seq + 8;
|
||||
else
|
||||
branch_ins = seq + 6;
|
||||
@@ -2926,8 +2932,12 @@ ppc_patch_full (guchar *code, const guch
|
||||
@@ -2925,8 +2931,12 @@ ppc_patch_full (guchar *code, const guch
|
||||
}
|
||||
|
||||
/* FIXME: make this thread safe */
|
||||
@ -119,7 +123,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
mono_arch_flush_icache ((guint8*)seq, 28);
|
||||
#else
|
||||
guint32 *seq;
|
||||
@@ -4482,6 +4492,16 @@ mono_arch_register_lowlevel_calls (void)
|
||||
@@ -4481,6 +4491,16 @@ mono_arch_register_lowlevel_calls (void)
|
||||
}
|
||||
|
||||
#ifdef __mono_ppc64__
|
||||
@ -136,7 +140,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
#define patch_load_sequence(ip,val) do {\
|
||||
guint16 *__load = (guint16*)(ip); \
|
||||
g_assert (sizeof (val) == sizeof (gsize)); \
|
||||
@@ -4491,6 +4511,9 @@ mono_arch_register_lowlevel_calls (void)
|
||||
@@ -4490,6 +4510,9 @@ mono_arch_register_lowlevel_calls (void)
|
||||
__load [9] = ((guint64)(gsize)(val)) & 0xffff; \
|
||||
} while (0)
|
||||
#else
|
||||
@ -146,9 +150,10 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
#define patch_load_sequence(ip,val) do {\
|
||||
guint16 *__lis_ori = (guint16*)(ip); \
|
||||
__lis_ori [1] = (((gulong)(val)) >> 16) & 0xffff; \
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-ppc.h mono-3.2.3/mono/mini/mini-ppc.h
|
||||
--- mono-3.2.3.orig/mono/mini/mini-ppc.h 2013-12-22 03:29:45.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/mini-ppc.h 2014-01-03 18:17:41.000000000 +0000
|
||||
Index: mono-3.4.0/mono/mini/mini-ppc.h
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-ppc.h
|
||||
+++ mono-3.4.0/mono/mini/mini-ppc.h
|
||||
@@ -69,7 +69,13 @@ typedef struct MonoCompileArch {
|
||||
#define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS
|
||||
#define MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS
|
||||
@ -163,10 +168,11 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini-p
|
||||
|
||||
#ifndef __mono_ilp32__
|
||||
#define MONO_ARCH_HAVE_TLS_GET 1
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini.c mono-3.2.3/mono/mini/mini.c
|
||||
--- mono-3.2.3.orig/mono/mini/mini.c 2013-12-22 03:29:45.000000000 +0000
|
||||
+++ mono-3.2.3/mono/mini/mini.c 2014-01-03 19:06:17.000000000 +0000
|
||||
@@ -6752,10 +6752,9 @@ mini_get_debug_options (void)
|
||||
Index: mono-3.4.0/mono/mini/mini.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini.c
|
||||
+++ mono-3.4.0/mono/mini/mini.c
|
||||
@@ -7004,10 +7004,9 @@ mini_get_debug_options (void)
|
||||
static gpointer
|
||||
mini_create_ftnptr (MonoDomain *domain, gpointer addr)
|
||||
{
|
||||
@ -178,7 +184,7 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini.c
|
||||
gpointer* desc = NULL;
|
||||
|
||||
if ((desc = g_hash_table_lookup (domain->ftnptrs_hash, addr)))
|
||||
@@ -6782,7 +6781,7 @@ mini_create_ftnptr (MonoDomain *domain,
|
||||
@@ -7033,7 +7032,7 @@ mini_create_ftnptr (MonoDomain *domain,
|
||||
static gpointer
|
||||
mini_get_addr_from_ftnptr (gpointer descr)
|
||||
{
|
||||
@ -187,9 +193,10 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/mini/mini.c
|
||||
return *(gpointer*)descr;
|
||||
#else
|
||||
return descr;
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/utils/lock-free-alloc.c mono-3.2.3/mono/utils/lock-free-alloc.c
|
||||
--- mono-3.2.3.orig/mono/utils/lock-free-alloc.c 2013-09-13 22:21:38.000000000 +0000
|
||||
+++ mono-3.2.3/mono/utils/lock-free-alloc.c 2014-01-03 19:11:56.000000000 +0000
|
||||
Index: mono-3.4.0/mono/utils/lock-free-alloc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/utils/lock-free-alloc.c
|
||||
+++ mono-3.4.0/mono/utils/lock-free-alloc.c
|
||||
@@ -123,7 +123,9 @@ struct _MonoLockFreeAllocDescriptor {
|
||||
|
||||
#define NUM_DESC_BATCH 64
|
||||
@ -201,9 +208,10 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/utils/lock-
|
||||
#define SB_HEADER_SIZE 16
|
||||
#define SB_USABLE_SIZE (SB_SIZE - SB_HEADER_SIZE)
|
||||
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/utils/mono-mmap.c mono-3.2.3/mono/utils/mono-mmap.c
|
||||
--- mono-3.2.3.orig/mono/utils/mono-mmap.c 2013-09-13 22:21:38.000000000 +0000
|
||||
+++ mono-3.2.3/mono/utils/mono-mmap.c 2014-01-03 17:57:28.000000000 +0000
|
||||
Index: mono-3.4.0/mono/utils/mono-mmap.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/utils/mono-mmap.c
|
||||
+++ mono-3.4.0/mono/utils/mono-mmap.c
|
||||
@@ -332,6 +332,11 @@ mono_valloc (void *addr, size_t length,
|
||||
int
|
||||
mono_vfree (void *addr, size_t length)
|
||||
@ -216,9 +224,10 @@ diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/utils/mono-
|
||||
return munmap (addr, length);
|
||||
}
|
||||
|
||||
diff -x 'Makefile*' -x 'config*' -x '*.m4' -urp mono-3.2.3.orig/mono/utils/strtod.c mono-3.2.3/mono/utils/strtod.c
|
||||
--- mono-3.2.3.orig/mono/utils/strtod.c 2013-09-13 22:21:37.000000000 +0000
|
||||
+++ mono-3.2.3/mono/utils/strtod.c 2014-01-03 18:26:43.000000000 +0000
|
||||
Index: mono-3.4.0/mono/utils/strtod.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/utils/strtod.c
|
||||
+++ mono-3.4.0/mono/utils/strtod.c
|
||||
@@ -173,6 +173,12 @@
|
||||
* #define NO_ERRNO if strtod should not assign errno = ERANGE when
|
||||
* the result overflows to +-Infinity or underflows to 0.
|
||||
|
@ -1,17 +1,17 @@
|
||||
Index: mono-3.0.3/data/mono-nunit.pc.in
|
||||
Index: mono-3.4.0/data/mono-nunit.pc.in
|
||||
===================================================================
|
||||
--- mono-3.0.3.orig/data/mono-nunit.pc.in
|
||||
+++ mono-3.0.3/data/mono-nunit.pc.in
|
||||
--- mono-3.4.0.orig/data/mono-nunit.pc.in
|
||||
+++ mono-3.4.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.0/nunit.core.dll -r:${libdir}/mono/4.0/nunit.core.interfaces.dll -r:${libdir}/mono/4.0/nunit.core.extensions.dll -r:${libdir}/mono/4.0/nunit.framework.dll -r:${libdir}/mono/4.0/nunit.framework.extensions.dll -r:${libdir}/mono/4.0/nunit.mocks.dll -r:${libdir}/mono/4.0/nunit.util.dll -r:${libdir}/mono/4.0/nunit-console-runner.dll
|
||||
Index: mono-3.0.3/data/mono.web.pc.in
|
||||
Index: mono-3.4.0/data/mono.web.pc.in
|
||||
===================================================================
|
||||
--- mono-3.0.3.orig/data/mono.web.pc.in
|
||||
+++ mono-3.0.3/data/mono.web.pc.in
|
||||
--- mono-3.4.0.orig/data/mono.web.pc.in
|
||||
+++ mono-3.4.0/data/mono.web.pc.in
|
||||
@@ -1,4 +1,4 @@
|
||||
Name: Mono.Web
|
||||
Description: Mono ASP.NET extension classes
|
||||
|
@ -1,3 +1,31 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu May 29 05:49:24 UTC 2014 - sshaw@decriptor.com
|
||||
|
||||
- Refresh patches
|
||||
- Update to 3.4.0
|
||||
* Revamped HttpWebRequest/ServicePoint stack
|
||||
- Should properly reuse connections.
|
||||
- Uses the specified idle times
|
||||
- NTLM support has been improved.
|
||||
- SSL/TLS operations on via async APIs are now
|
||||
implemented using async patterns internally
|
||||
to greatly alleviate Thread Pool abuse.
|
||||
* Network stack
|
||||
- Now allows developers to control which cipher
|
||||
suites to use with TLS/SSL.
|
||||
* ARM
|
||||
- Emit shorter floating point operations when possible
|
||||
- Hard float support: Mono now should work on Linux
|
||||
distributions which uses a hard float (armhf) ABI,
|
||||
like the Raspberry PI.
|
||||
Notes: Homogeneous floating point aggregates are not
|
||||
yet supported on armhf.
|
||||
* Documentation
|
||||
- Updated documentation stubs to the 4.5 .NET API.
|
||||
* mono-api-html
|
||||
- Now supports regular expressions when specifying
|
||||
members to ignore (e.g. mono-api-html -i 'INSCopying$')
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 10 17:20:57 CET 2014 - ro@suse.de
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
%define sgen yes
|
||||
|
||||
Name: mono-core
|
||||
Version: 3.2.8
|
||||
Version: 3.4.0
|
||||
Release: 0
|
||||
Summary: Cross-platform, Open Source, .NET development framework
|
||||
License: LGPL-2.1 and MIT and MS-PL
|
||||
|
18
ppc.patch
18
ppc.patch
@ -1,8 +1,8 @@
|
||||
Index: mono-3.0.2/mono/mini/mini.c
|
||||
================================================================================
|
||||
--- mono-3.2.8/mono/mini/mini-gc.c
|
||||
+++ mono-3.2.8/mono/mini/mini-gc.c
|
||||
@@ -438,6 +438,8 @@
|
||||
Index: mono-3.4.0/mono/mini/mini-gc.c
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-gc.c
|
||||
+++ mono-3.4.0/mono/mini/mini-gc.c
|
||||
@@ -438,6 +438,8 @@ static int callee_saved_regs [] = { X86_
|
||||
static int callee_saved_regs [] = { ARMREG_V1, ARMREG_V2, ARMREG_V3, ARMREG_V4, ARMREG_V5, ARMREG_V7, ARMREG_FP };
|
||||
#elif defined(TARGET_S390X)
|
||||
static int callee_saved_regs [] = { s390_r6, s390_r7, s390_r8, s390_r9, s390_r10, s390_r11, s390_r12, s390_r13, s390_r14 };
|
||||
@ -11,9 +11,11 @@ Index: mono-3.0.2/mono/mini/mini.c
|
||||
#endif
|
||||
|
||||
static guint32
|
||||
--- mono-3.2.8/mono/mini/mini-ppc.h
|
||||
+++ mono-3.2.8/mono/mini/mini-ppc.h
|
||||
@@ -96,6 +96,7 @@
|
||||
Index: mono-3.4.0/mono/mini/mini-ppc.h
|
||||
===================================================================
|
||||
--- mono-3.4.0.orig/mono/mini/mini-ppc.h
|
||||
+++ mono-3.4.0/mono/mini/mini-ppc.h
|
||||
@@ -96,6 +96,7 @@ typedef struct MonoCompileArch {
|
||||
#define MONO_ARCH_EMULATE_FREM 1
|
||||
#define MONO_ARCH_BIGMUL_INTRINS 1
|
||||
#define MONO_ARCH_HAVE_ATOMIC_CAS 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user