[Pkg-mono-svn-commits] [SCM] mono branch, debian/patches/kfreebsd_support, updated. upstream/2.6.3-3-g378d7a0

Jo Shields directhex at apebox.org
Tue Jun 22 07:51:28 UTC 2010


The following commit has been merged in the debian/patches/kfreebsd_support branch:
commit 378d7a045addeef6cd3bfe12bf14f3f47fd7d89e
Author: Jo Shields <directhex at apebox.org>
Date:   Tue Jun 22 08:48:39 2010 +0100

    Fix up kfreebsd support (i hope):
    * don't use gregs on kfreebsd
    * set kfreebsd to use POSIX signals
    * use kfreebsd as well as freebsd in several ifdefs

diff --git a/configure.in b/configure.in
index 1b63d5e..4280f97 100644
--- a/configure.in
+++ b/configure.in
@@ -125,6 +125,7 @@ case "$host" in
 		libgc_threads=pthreads
 		need_link_unlink=yes
 		with_sigaltstack=no
+		use_sigposix=yes
 		;;
 	*-*-*freebsd*)
 		platform_win32=no
diff --git a/mono/mini/exceptions-amd64.c b/mono/mini/exceptions-amd64.c
index 983e7d2..3dca193 100644
--- a/mono/mini/exceptions-amd64.c
+++ b/mono/mini/exceptions-amd64.c
@@ -715,7 +715,13 @@ mono_arch_handle_exception (void *sigctx, gpointer obj, gboolean test_only)
 static inline guint64*
 gregs_from_ucontext (ucontext_t *ctx)
 {
-	return (guint64 *) UCONTEXT_GREGS (ctx);
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+    guint64 *gregs = (guint64 *) &ctx->uc_mcontext;
+#else
+    guint64 *gregs = (guint64 *) &ctx->uc_mcontext.gregs;
+#endif
+
+	return gregs;
 }
 #endif
 void
diff --git a/mono/mini/mini-x86.h b/mono/mini/mini-x86.h
index 59545d4..b83c937 100644
--- a/mono/mini/mini-x86.h
+++ b/mono/mini/mini-x86.h
@@ -44,7 +44,7 @@ LONG CALLBACK seh_handler(EXCEPTION_POINTERS* ep);
 
 #endif /* PLATFORM_WIN32 */
 
-#if defined( __linux__) || defined(__sun) || defined(__APPLE__) || defined(__NetBSD__) || defined(__FreeBSD__)
+#if defined( __linux__) || defined(__sun) || defined(__APPLE__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 #define MONO_ARCH_USE_SIGACTION
 #endif
 
@@ -150,7 +150,7 @@ typedef struct {
 	gboolean need_stack_frame;
 } MonoCompileArch;
 
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__)
 # define SC_EAX sc_eax
 # define SC_EBX sc_ebx
 # define SC_ECX sc_ecx
diff --git a/mono/utils/mono-sigcontext.h b/mono/utils/mono-sigcontext.h
index bd888a6..6dc89a4 100644
--- a/mono/utils/mono-sigcontext.h
+++ b/mono/utils/mono-sigcontext.h
@@ -5,14 +5,14 @@
 
 #if defined(__i386__)
 
-#if defined(__FreeBSD__) || defined(__APPLE__)
+#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__)
 #include <ucontext.h>
 #endif
 #if defined(__APPLE__)
 #include <AvailabilityMacros.h>
 #endif
 
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 	#define UCONTEXT_REG_EAX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.mc_eax)
 	#define UCONTEXT_REG_EBX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.mc_ebx)
 	#define UCONTEXT_REG_ECX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.mc_ecx)

-- 
mono



More information about the Pkg-mono-svn-commits mailing list