From: Reid Spencer Date: Mon, 27 Dec 2004 06:17:27 +0000 (+0000) Subject: For PR351: X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=68fdcc123b781fcea17f9c7bffdfdc8c41654324;p=oota-llvm.git For PR351: * Move implementation of sys::PreventCoreFiles function to this file from the now defunct SysConfig abstraction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19159 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/System/Process.h b/include/llvm/System/Process.h index 56028fb7bc4..7733cf5f656 100644 --- a/include/llvm/System/Process.h +++ b/include/llvm/System/Process.h @@ -63,6 +63,12 @@ namespace sys { ///< Returns the current amount of system time for the process ); + /// This function makes the necessary calls to the operating system to + /// prevent core files or any other kind of large memory dumps that can + /// occur when a program fails. + /// @brief Prevent core file generation. + static void PreventCoreFiles(); + /// @} }; } diff --git a/lib/System/Unix/Process.cpp b/lib/System/Unix/Process.cpp index 1c203ab50c5..19533905175 100644 --- a/lib/System/Unix/Process.cpp +++ b/lib/System/Unix/Process.cpp @@ -109,6 +109,18 @@ Process::GetTimeUsage(TimeValue& elapsed, TimeValue& user_time, #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. +void Process::PreventCoreFiles() { +#if HAVE_SETRLIMIT + struct rlimit rlim; + rlim.rlim_cur = rlim.rlim_max = 0; + int res = setrlimit(RLIMIT_CORE, &rlim); + if (res != 0) + ThrowErrno("Can't prevent core file generation"); +#endif +} } // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab diff --git a/lib/System/Unix/Process.inc b/lib/System/Unix/Process.inc index 1c203ab50c5..19533905175 100644 --- a/lib/System/Unix/Process.inc +++ b/lib/System/Unix/Process.inc @@ -109,6 +109,18 @@ Process::GetTimeUsage(TimeValue& elapsed, TimeValue& user_time, #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. +void Process::PreventCoreFiles() { +#if HAVE_SETRLIMIT + struct rlimit rlim; + rlim.rlim_cur = rlim.rlim_max = 0; + int res = setrlimit(RLIMIT_CORE, &rlim); + if (res != 0) + ThrowErrno("Can't prevent core file generation"); +#endif +} } // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab diff --git a/lib/System/Win32/Process.cpp b/lib/System/Win32/Process.cpp index 00da74076b0..10fec05cb3d 100644 --- a/lib/System/Win32/Process.cpp +++ b/lib/System/Win32/Process.cpp @@ -90,5 +90,14 @@ Process::GetTimeUsage( sys_time.nanoseconds( unsigned(KernelTime % 10000000) * 100 ); } +// Some LLVM programs such as bugpoint produce core files as a normal part of +// their operation. To prevent the disk from filling up, this configuration item +// does what's necessary to prevent their generation. +void Process::PreventCoreFiles() { + // Windows doesn't do core files, so nothing to do. + // Although... it might be nice to prevent the do-you-want-to-debug + // dialog box from coming up. Or maybe not... +} + } // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab diff --git a/lib/System/Win32/Process.inc b/lib/System/Win32/Process.inc index 00da74076b0..10fec05cb3d 100644 --- a/lib/System/Win32/Process.inc +++ b/lib/System/Win32/Process.inc @@ -90,5 +90,14 @@ Process::GetTimeUsage( sys_time.nanoseconds( unsigned(KernelTime % 10000000) * 100 ); } +// Some LLVM programs such as bugpoint produce core files as a normal part of +// their operation. To prevent the disk from filling up, this configuration item +// does what's necessary to prevent their generation. +void Process::PreventCoreFiles() { + // Windows doesn't do core files, so nothing to do. + // Although... it might be nice to prevent the do-you-want-to-debug + // dialog box from coming up. Or maybe not... +} + } // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab