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