Enable MONO_ARCH_USE_SIGACTION on i386 and switch it to use struct sigcontext,

which basically gives us exception support and sends those crashes away.
This commit is contained in:
robert 2010-03-22 16:56:13 +00:00
parent f96a8d695e
commit fb63ae27cb
3 changed files with 35 additions and 2 deletions

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.21 2010/03/22 09:49:59 robert Exp $
# $OpenBSD: Makefile,v 1.22 2010/03/22 16:56:13 robert Exp $
# sync with net/avahi,-mono
ONLY_FOR_ARCHS= amd64 i386 powerpc # arm
@ -6,7 +6,7 @@ ONLY_FOR_ARCHS= amd64 i386 powerpc # arm
COMMENT= cross platform, open source .NET developement framework
DISTNAME= mono-2.6.3
PKGNAME= ${DISTNAME}p2
PKGNAME= ${DISTNAME}p3
CATEGORIES= lang devel

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-mono_mini_mini-x86_h,v 1.1 2010/03/22 16:56:13 robert Exp $
--- mono/mini/mini-x86.h.orig Mon Mar 22 17:45:19 2010
+++ mono/mini/mini-x86.h Mon Mar 22 17:45:56 2010
@@ -44,7 +44,8 @@ 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(__OpenBSD__)
#define MONO_ARCH_USE_SIGACTION
#endif

View File

@ -0,0 +1,20 @@
$OpenBSD: patch-mono_utils_mono-sigcontext_h,v 1.1 2010/03/22 16:56:13 robert Exp $
--- mono/utils/mono-sigcontext.h.orig Mon Mar 22 17:35:25 2010
+++ mono/utils/mono-sigcontext.h Mon Mar 22 17:38:49 2010
@@ -54,6 +54,16 @@
#define UCONTEXT_REG_ESI(ctx) (((ucontext_t*)(ctx))->uc_mcontext.__gregs [_REG_ESI])
#define UCONTEXT_REG_EDI(ctx) (((ucontext_t*)(ctx))->uc_mcontext.__gregs [_REG_EDI])
#define UCONTEXT_REG_EIP(ctx) (((ucontext_t*)(ctx))->uc_mcontext.__gregs [_REG_EIP])
+#elif defined(__OpenBSD__)
+ #define UCONTEXT_REG_EAX(ctx) ((ctx)->sc_eax)
+ #define UCONTEXT_REG_EBX(ctx) ((ctx)->sc_ebx)
+ #define UCONTEXT_REG_ECX(ctx) ((ctx)->sc_ecx)
+ #define UCONTEXT_REG_EDX(ctx) ((ctx)->sc_edx)
+ #define UCONTEXT_REG_EBP(ctx) ((ctx)->sc_ebp)
+ #define UCONTEXT_REG_ESP(ctx) ((ctx)->sc_esp)
+ #define UCONTEXT_REG_ESI(ctx) ((ctx)->sc_esi)
+ #define UCONTEXT_REG_EDI(ctx) ((ctx)->sc_edi)
+ #define UCONTEXT_REG_EIP(ctx) ((ctx)->sc_eip)
#else
#define UCONTEXT_REG_EAX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.gregs [REG_EAX])
#define UCONTEXT_REG_EBX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.gregs [REG_EBX])