llvm-project/compiler-rt/lib/profile
Calixte Denizet 8f46269f0c [profile] Don't dump counters when forking and don't reset when calling exec** functions
Summary:
There is no need to write out gcdas when forking because we can just reset the counters in the parent process.
Let say a counter is N before the fork, then fork and this counter is set to 0 in the child process.
In the parent process, the counter is incremented by P and in the child process it's incremented by C.
When dump is ran at exit, parent process will dump N+P for the given counter and the child process will dump 0+C, so when the gcdas are merged the resulting counter will be N+P+C.
About exec** functions, since the current process is replaced by an another one there is no need to reset the counters but just write out the gcdas since the counters are definitely lost.
To avoid to have lists in a bad state, we just lock them during the fork and the flush (if called explicitely) and lock them when an element is added.

Reviewers: marco-c

Reviewed By: marco-c

Subscribers: hiraditya, cfe-commits, #sanitizers, llvm-commits, sylvestre.ledru

Tags: #clang, #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D74953
2020-02-24 10:38:33 +01:00
..
CMakeLists.txt [profile] Support counter relocation at runtime 2020-01-17 15:02:23 -08:00
GCDAProfiling.c [profile] Don't dump counters when forking and don't reset when calling exec** functions 2020-02-24 10:38:33 +01:00
InstrProfiling.c Reland "[CMake] Support installation of InstrProfData.inc" 2019-11-22 14:09:46 -08:00
InstrProfiling.h [profile] Support counter relocation at runtime 2020-01-17 15:02:23 -08:00
InstrProfilingBiasVar.c [profile] Support counter relocation at runtime 2020-01-17 15:02:23 -08:00
InstrProfilingBuffer.c [profile] Support counter relocation at runtime 2020-01-17 15:02:23 -08:00
InstrProfilingFile.c [profile] Support counter relocation at runtime 2020-01-17 15:02:23 -08:00
InstrProfilingInternal.h [profile] Support counter relocation at runtime 2020-01-17 15:02:23 -08:00
InstrProfilingMerge.c Reland "[CMake] Support installation of InstrProfData.inc" 2019-11-22 14:09:46 -08:00
InstrProfilingMergeFile.c Reland "[CMake] Support installation of InstrProfData.inc" 2019-11-22 14:09:46 -08:00
InstrProfilingNameVar.c Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
InstrProfilingPlatformDarwin.c Reland compiler-rt support for order file instrumentation. 2019-03-08 15:30:56 +00:00
InstrProfilingPlatformFuchsia.c [profile] Support counter relocation at runtime 2020-01-17 15:02:23 -08:00
InstrProfilingPlatformLinux.c Reland compiler-rt support for order file instrumentation. 2019-03-08 15:30:56 +00:00
InstrProfilingPlatformOther.c Reland compiler-rt support for order file instrumentation. 2019-03-08 15:30:56 +00:00
InstrProfilingPlatformWindows.c Reland compiler-rt support for order file instrumentation. 2019-03-08 15:30:56 +00:00
InstrProfilingPort.h [profile] Support online merging with continuous sync mode 2019-11-18 12:56:58 -08:00
InstrProfilingRuntime.cpp [profile] Add a mode to continuously sync counter updates to a file 2019-10-31 16:04:09 -07:00
InstrProfilingUtil.c [profile] Fix file contention causing dropped counts on Windows under -fprofile-generate 2019-11-27 15:55:13 +01:00
InstrProfilingUtil.h Add a shim for setenv on PS4 since it does not exist. 2019-11-12 15:05:45 -08:00
InstrProfilingValue.c Reland "[CMake] Support installation of InstrProfData.inc" 2019-11-22 14:09:46 -08:00
InstrProfilingWriter.c [profile] Avoid allocating a page on the stack, NFC 2019-12-11 10:04:00 -08:00
WindowsMMap.c [GCOV] Close file mapping handle on Windows, so flushed gcda files can be removed while the process is in execution 2018-11-07 09:38:26 +00:00
WindowsMMap.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00