Do some portability adjustments so altstack works on osx.
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 18 Jul 2011 18:42:45 +0000 (15:42 -0300)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 18 Jul 2011 19:25:02 +0000 (16:25 -0300)
* mini-exceptions.c (mono_setup_altstack): Use stack_t instead
of struct sigaltstack. Don't set ss_flags as OSX doesn't like it.

* mini-exceptions.c (mono_free_altstack): Use stack_t instead
of struct sigaltstack.

mono/mini/mini-exceptions.c

index a5814704a106cae585ad1c1ac980267dc33654fe..583b50519b95be946547231be4395492ed8adcde 100644 (file)
@@ -1873,7 +1873,7 @@ void
 mono_setup_altstack (MonoJitTlsData *tls)
 {
        size_t stsize = 0;
-       struct sigaltstack sa;
+       stack_t sa;
        guint8 *staddr = NULL;
 
        if (mono_running_on_valgrind ())
@@ -1908,14 +1908,18 @@ mono_setup_altstack (MonoJitTlsData *tls)
 
        sa.ss_sp = tls->signal_stack;
        sa.ss_size = MONO_ARCH_SIGNAL_STACK_SIZE;
+#if __APPLE__
+       sa.ss_flags = 0;
+#else
        sa.ss_flags = SS_ONSTACK;
-       sigaltstack (&sa, NULL);
+#endif
+       g_assert (sigaltstack (&sa, NULL) == 0);
 }
 
 void
 mono_free_altstack (MonoJitTlsData *tls)
 {
-       struct sigaltstack sa;
+       stack_t sa;
        int err;
 
        sa.ss_sp = tls->signal_stack;