Author: lupus
Date: 2006-06-15 10:56:09 -0400 (Thu, 15 Jun 2006)
New Revision: 61756
Modified:
trunk/mono/mono/mini/ChangeLog
trunk/mono/mono/mini/tramp-ppc.c
Log:
Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <[EMAIL PROTECTED]>
* tramp-ppc.c: don't use malloc () for trampoline code, sometimes
it can end up using non executable memory on ppc64 systems
running ppc32 userspace (fix from Johannes Berg).
Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog 2006-06-15 13:49:09 UTC (rev 61755)
+++ trunk/mono/mono/mini/ChangeLog 2006-06-15 14:56:09 UTC (rev 61756)
@@ -1,3 +1,10 @@
+
+Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <[EMAIL PROTECTED]>
+
+ * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
+ it can end up using non executable memory on ppc64 systems
+ running ppc32 userspace (fix from Johannes Berg).
+
2006-06-14 Dick Porter <[EMAIL PROTECTED]>
* wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
Modified: trunk/mono/mono/mini/tramp-ppc.c
===================================================================
--- trunk/mono/mono/mini/tramp-ppc.c 2006-06-15 13:49:09 UTC (rev 61755)
+++ trunk/mono/mono/mini/tramp-ppc.c 2006-06-15 14:56:09 UTC (rev 61756)
@@ -34,11 +34,14 @@
{
guint8 *code, *start;
int this_pos = 3;
+ MonoDomain *domain = mono_domain_get ();
if (!mono_method_signature (m)->ret->byref && MONO_TYPE_ISSTRUCT
(mono_method_signature (m)->ret))
this_pos = 4;
- start = code = g_malloc (20);
+ mono_domain_lock (domain);
+ start = code = mono_code_manager_reserve (domain->code_mp, 20);
+ mono_domain_unlock (domain);
ppc_load (code, ppc_r0, addr);
ppc_mtctr (code, ppc_r0);
@@ -235,7 +238,7 @@
/* Now we'll create in 'buf' the PowerPC trampoline code. This
is the trampoline code common to all methods */
- code = buf = g_malloc(512);
+ code = buf = mono_global_codeman_reserve (512);
ppc_stwu (buf, ppc_r1, -STACK, ppc_r1);
@@ -492,7 +495,6 @@
use r11 to keep that value, for instance. However, the generic part of
the trampoline relies on r11 having the same value it had before coming
here, so we must save it before. */
- //code = buf = g_malloc(METHOD_TRAMPOLINE_SIZE);
mono_domain_lock (vtable->domain);
code = buf = mono_code_manager_reserve (vtable->domain->code_mp,
METHOD_TRAMPOLINE_SIZE);
mono_domain_unlock (vtable->domain);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches