From 1a2566b58e943625bb4c2a648635622360c91316 Mon Sep 17 00:00:00 2001 From: asvitkine <> Date: Fri, 30 Dec 2011 20:37:30 +0000 Subject: [PATCH] Fix CrashReporter poping up when PPC is not emulated on pre-10.5 systems. --- BasiliskII/src/Unix/vm_alloc.cpp | 19 +++++++++++++++++++ BasiliskII/src/Unix/vm_alloc.h | 1 + 2 files changed, 20 insertions(+) diff --git a/BasiliskII/src/Unix/vm_alloc.cpp b/BasiliskII/src/Unix/vm_alloc.cpp index a4195a5c..f093d816 100644 --- a/BasiliskII/src/Unix/vm_alloc.cpp +++ b/BasiliskII/src/Unix/vm_alloc.cpp @@ -39,6 +39,10 @@ #include #include "vm_alloc.h" +#if defined(__APPLE__) && defined(__MACH__) +#include +#endif + #ifdef HAVE_MACH_VM #ifndef HAVE_MACH_TASK_SELF #ifdef HAVE_TASK_SELF @@ -181,6 +185,21 @@ int vm_init(void) return -1; #endif #endif + +// On 10.4 and earlier, reset CrashReporter's task signal handler to +// avoid having it show up for signals that get handled. +#if defined(__APPLE__) && defined(__MACH__) + struct utsname info; + + if (!uname(&info) && atoi(info.release) <= 8) { + task_set_exception_ports(mach_task_self(), + EXC_MASK_BAD_ACCESS | EXC_MASK_ARITHMETIC, + MACH_PORT_NULL, + EXCEPTION_STATE_IDENTITY, + MACHINE_THREAD_STATE); + } +#endif + return 0; } diff --git a/BasiliskII/src/Unix/vm_alloc.h b/BasiliskII/src/Unix/vm_alloc.h index 3285bd1a..c44e853b 100644 --- a/BasiliskII/src/Unix/vm_alloc.h +++ b/BasiliskII/src/Unix/vm_alloc.h @@ -32,6 +32,7 @@ #ifdef HAVE_MACH_VM extern "C" { #include +#include } #endif