Skip to content
Snippets Groups Projects
Commit 2f107cfc authored by Chris Lattner's avatar Chris Lattner
Browse files

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.

llvm-svn: 30317
parent 4f929955
No related branches found
No related tags found
No related merge requests found
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
//=== is guaranteed to work on *all* UNIX variants. //=== is guaranteed to work on *all* UNIX variants.
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
namespace llvm { using namespace llvm;
using namespace sys; using namespace sys;
unsigned unsigned
...@@ -115,16 +115,18 @@ Process::GetTimeUsage(TimeValue& elapsed, TimeValue& user_time, ...@@ -115,16 +115,18 @@ Process::GetTimeUsage(TimeValue& elapsed, TimeValue& user_time,
#endif #endif
} }
int Process::GetCurrentUserId() int Process::GetCurrentUserId() {
{
return getuid(); return getuid();
} }
int Process::GetCurrentGroupId() int Process::GetCurrentGroupId() {
{
return getgid(); 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 // 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 // their operation. To prevent the disk from filling up, this function
// does what's necessary to prevent their generation. // does what's necessary to prevent their generation.
...@@ -134,6 +136,28 @@ void Process::PreventCoreFiles() { ...@@ -134,6 +136,28 @@ void Process::PreventCoreFiles() {
rlim.rlim_cur = rlim.rlim_max = 0; rlim.rlim_cur = rlim.rlim_max = 0;
setrlimit(RLIMIT_CORE, &rlim); setrlimit(RLIMIT_CORE, &rlim);
#endif #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() { bool Process::StandardInIsUserInput() {
...@@ -159,5 +183,3 @@ bool Process::StandardErrIsDisplayed() { ...@@ -159,5 +183,3 @@ bool Process::StandardErrIsDisplayed() {
// If we don't have isatty, just return false. // If we don't have isatty, just return false.
return false; return false;
} }
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment