Author: zoltan
Date: 2006-10-17 15:14:21 -0400 (Tue, 17 Oct 2006)
New Revision: 66759

Modified:
   trunk/mono/mono/mini/ChangeLog
   trunk/mono/mono/mini/mini-sparc.h
   trunk/mono/mono/mini/mini.c
Log:
2006-10-17  Zoltan Varga  <[EMAIL PROTECTED]>

        * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.

        * mini-sparc.h: Don't use sigaction on sparc/linux.


Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog      2006-10-17 17:57:46 UTC (rev 66758)
+++ trunk/mono/mono/mini/ChangeLog      2006-10-17 19:14:21 UTC (rev 66759)
@@ -1,5 +1,9 @@
 2006-10-17  Zoltan Varga  <[EMAIL PROTECTED]>
 
+       * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
+
+       * mini-sparc.h: Don't use sigaction on sparc/linux.
+
        * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of 
places.
 
        * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().

Modified: trunk/mono/mono/mini/mini-sparc.h
===================================================================
--- trunk/mono/mono/mini/mini-sparc.h   2006-10-17 17:57:46 UTC (rev 66758)
+++ trunk/mono/mono/mini/mini-sparc.h   2006-10-17 19:14:21 UTC (rev 66759)
@@ -96,7 +96,14 @@
                MONO_CONTEXT_SET_BP ((ctx), __builtin_frame_address (0));       
\
        } while (0)
 
+#ifndef __linux__
+/* 
+ * Can't use sigaction on sparc/linux, since it doesn't support SA_SIGINFO. 
Instead, we
+ * have to use the obsolete sigcontext parameter:
+ * http://www.ussg.iu.edu/hypermail/linux/kernel/0110.3/1531.html.
+ */
 #define MONO_ARCH_USE_SIGACTION 1
+#endif
 
 #ifdef HAVE_WORKING_SIGALTSTACK
 #define MONO_ARCH_SIGSEGV_ON_ALTSTACK

Modified: trunk/mono/mono/mini/mini.c
===================================================================
--- trunk/mono/mono/mini/mini.c 2006-10-17 17:57:46 UTC (rev 66758)
+++ trunk/mono/mono/mini/mini.c 2006-10-17 19:14:21 UTC (rev 66759)
@@ -10667,12 +10667,12 @@
 #define GET_CONTEXT \
        struct sigcontext *ctx = (struct sigcontext*)_dummy;
 #else
-#ifdef __sparc
+#ifdef MONO_ARCH_USE_SIGACTION
 #define GET_CONTEXT \
     void *ctx = context;
-#elif defined (MONO_ARCH_USE_SIGACTION)
+#elif defined(__sparc__)
 #define GET_CONTEXT \
-    void *ctx = context;
+    void *ctx = sigctx;
 #else
 #define GET_CONTEXT \
        void **_p = (void **)&_dummy; \
@@ -10682,6 +10682,8 @@
 
 #ifdef MONO_ARCH_USE_SIGACTION
 #define SIG_HANDLER_SIGNATURE(ftn) ftn (int _dummy, siginfo_t *info, void 
*context)
+#elif defined(__sparc__)
+#define SIG_HANDLER_SIGNATURE(ftn) ftn (int _dummy, void *sigctx)
 #else
 #define SIG_HANDLER_SIGNATURE(ftn) ftn (int _dummy)
 #endif

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to