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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30317 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-09-14 06:01:41 +00:00
parent 9abd7c3867
commit 26b6c0ba5d

View File

@ -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 @@ Process::GetTimeUsage(TimeValue& elapsed, TimeValue& user_time,
#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 @@ void Process::PreventCoreFiles() {
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 @@ bool Process::StandardErrIsDisplayed() {
// If we don't have isatty, just return false.
return false;
}
}