Changes in directory llvm/lib/System/Unix:
Process.inc updated: 1.16 -> 1.17 --- Log message: On Mac OS/X, make Process::PreventCoreFiles disable crash reporter for the process in addition to disabling core file emission. This speeds up bugpoint on default-configured macs by several orders of magnitude. --- Diffs of the changes: (+29 -7) Process.inc | 36 +++++++++++++++++++++++++++++------- 1 files changed, 29 insertions(+), 7 deletions(-) Index: llvm/lib/System/Unix/Process.inc diff -u llvm/lib/System/Unix/Process.inc:1.16 llvm/lib/System/Unix/Process.inc:1.17 --- llvm/lib/System/Unix/Process.inc:1.16 Sun May 14 13:53:09 2006 +++ llvm/lib/System/Unix/Process.inc Thu Sep 14 01:01:41 2006 @@ -30,7 +30,7 @@ //=== is guaranteed to work on *all* UNIX variants. //===----------------------------------------------------------------------===// -namespace llvm { +using namespace llvm; using namespace sys; unsigned @@ -115,16 +115,18 @@ #endif } -int Process::GetCurrentUserId() -{ +int Process::GetCurrentUserId() { return getuid(); } -int Process::GetCurrentGroupId() -{ +int Process::GetCurrentGroupId() { return getgid(); } +#ifdef __APPLE__ // FIXME: Should be configurified. +#include <mach/mach.h> +#endif + // Some LLVM programs such as bugpoint produce core files as a normal part of // their operation. To prevent the disk from filling up, this function // does what's necessary to prevent their generation. @@ -134,6 +136,28 @@ rlim.rlim_cur = rlim.rlim_max = 0; setrlimit(RLIMIT_CORE, &rlim); #endif + +#ifdef __APPLE__ // FIXME: Should be configurified. + // Disable crash reporting on Mac OS/X. + + // get information about the original set of exception ports for the task + mach_msg_type_number_t Count = 0; + exception_mask_t OriginalMasks[EXC_TYPES_COUNT]; + exception_port_t OriginalPorts[EXC_TYPES_COUNT]; + exception_behavior_t OriginalBehaviors[EXC_TYPES_COUNT]; + thread_state_flavor_t OriginalFlavors[EXC_TYPES_COUNT]; + kern_return_t err = + task_get_exception_ports(mach_task_self(), EXC_MASK_ALL, OriginalMasks, + &Count, OriginalPorts, OriginalBehaviors, + OriginalFlavors); + if (err == KERN_SUCCESS) { + // replace each with MACH_PORT_NULL. + for (unsigned i = 0; i != Count; ++i) + task_set_exception_ports(mach_task_self(), OriginalMasks[i], + MACH_PORT_NULL, OriginalBehaviors[i], + OriginalFlavors[i]); + } +#endif } bool Process::StandardInIsUserInput() { @@ -159,5 +183,3 @@ // If we don't have isatty, just return false. return false; } - -} _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits