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

Reply via email to