diff options
-rw-r--r-- | lib/profile/InstrProfilingFile.c | 9 | ||||
-rw-r--r-- | lib/profile/InstrProfilingUtil.c | 23 | ||||
-rw-r--r-- | lib/profile/InstrProfilingUtil.h | 8 | ||||
-rw-r--r-- | test/profile/Linux/prctl.c | 36 |
4 files changed, 0 insertions, 76 deletions
diff --git a/lib/profile/InstrProfilingFile.c b/lib/profile/InstrProfilingFile.c index dfcbe52d7..cd3590e12 100644 --- a/lib/profile/InstrProfilingFile.c +++ b/lib/profile/InstrProfilingFile.c @@ -530,7 +530,6 @@ int __llvm_profile_write_file(void) { int rc, Length; const char *Filename; char *FilenameBuf; - int PDeathSig = 0; if (lprofProfileDumped()) { PROF_NOTE("Profile data not written to file: %s.\n", @@ -557,18 +556,10 @@ int __llvm_profile_write_file(void) { return -1; } - // Temporarily suspend getting SIGKILL when the parent exits. - PDeathSig = lprofSuspendSigKill(); - /* Write profile data to the file. */ rc = writeFile(Filename); if (rc) PROF_ERR("Failed to write file \"%s\": %s\n", Filename, strerror(errno)); - - // Restore SIGKILL. - if (PDeathSig == 1) - lprofRestoreSigKill(); - return rc; } diff --git a/lib/profile/InstrProfilingUtil.c b/lib/profile/InstrProfilingUtil.c index fb68f30a5..321c7192c 100644 --- a/lib/profile/InstrProfilingUtil.c +++ b/lib/profile/InstrProfilingUtil.c @@ -29,11 +29,6 @@ #include <stdlib.h> #include <string.h> -#if defined(__linux__) -#include <signal.h> -#include <sys/prctl.h> -#endif - COMPILER_RT_VISIBILITY void __llvm_profile_recursive_mkdir(char *path) { int i; @@ -224,21 +219,3 @@ COMPILER_RT_VISIBILITY const char *lprofFindLastDirSeparator(const char *Path) { #endif return Sep; } - -COMPILER_RT_VISIBILITY int lprofSuspendSigKill() { -#if defined(__linux__) - int PDeachSig = 0; - /* Temporarily suspend getting SIGKILL upon exit of the parent process. */ - if (prctl(PR_GET_PDEATHSIG, &PDeachSig) == 0 && PDeachSig == SIGKILL) - prctl(PR_SET_PDEATHSIG, 0); - return (PDeachSig == SIGKILL); -#else - return 0; -#endif -} - -COMPILER_RT_VISIBILITY void lprofRestoreSigKill() { -#if defined(__linux__) - prctl(PR_SET_PDEATHSIG, SIGKILL); -#endif -} diff --git a/lib/profile/InstrProfilingUtil.h b/lib/profile/InstrProfilingUtil.h index 969859960..a80fde77e 100644 --- a/lib/profile/InstrProfilingUtil.h +++ b/lib/profile/InstrProfilingUtil.h @@ -51,12 +51,4 @@ int lprofGetHostName(char *Name, int Len); unsigned lprofBoolCmpXchg(void **Ptr, void *OldV, void *NewV); void *lprofPtrFetchAdd(void **Mem, long ByteIncr); -/* Temporarily suspend SIGKILL. Return value of 1 means a restore is needed. - * Other return values mean no restore is needed. - */ -int lprofSuspendSigKill(); - -/* Restore previously suspended SIGKILL. */ -void lprofRestoreSigKill(); - #endif /* PROFILE_INSTRPROFILINGUTIL_H */ diff --git a/test/profile/Linux/prctl.c b/test/profile/Linux/prctl.c deleted file mode 100644 index 43baf6543..000000000 --- a/test/profile/Linux/prctl.c +++ /dev/null @@ -1,36 +0,0 @@ -// RUN: %clang_pgogen -O2 -o %t %s -// RUN: rm -rf default_*.profraw -// RUN: %run %t && sleep 1 -// RUN: llvm-profdata show default_*.profraw 2>&1 | FileCheck %s - -#include <signal.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/prctl.h> -#include <unistd.h> - -#define FAKE_COUNT_SZ 2000000 -/* fake counts to increse the profile size. */ -unsigned long long __attribute__((section("__llvm_prf_cnts"))) -counts[FAKE_COUNT_SZ]; - -int main(int argc, char **argv) { - pid_t pid = fork(); - if (pid == 0) { - int i; - int sum = 0; - /* child process: sleep 500us and get to runtime before the - * main process exits. */ - prctl(PR_SET_PDEATHSIG, SIGKILL); - usleep(500); - for (i = 0; i < 5000; ++i) - sum += i * i * i; - printf("child process (%d): sum=%d\n", getpid(), sum); - } else if (pid > 0) { - /* parent process: sleep 100us to get into profile runtime first. */ - usleep(100); - } - return 0; -} - -// CHECK-NOT: Empty raw profile file |