Bug 1397505 - Only support dumping/resetting coverage counters with GCC builds. r=froydnj
This commit is contained in:
@@ -16,13 +16,31 @@ using namespace mozilla::ipc;
|
||||
|
||||
// The __gcov_dump function writes the coverage counters to gcda files.
|
||||
// The __gcov_reset function resets the coverage counters to zero.
|
||||
// They are defined at https://github.com/gcc-mirror/gcc/blob/aad93da1a579b9ae23ede6b9cf8523360f0a08b4/libgcc/libgcov-interface.c
|
||||
// They are defined at https://github.com/gcc-mirror/gcc/blob/aad93da1a579b9ae23ede6b9cf8523360f0a08b4/libgcc/libgcov-interface.c.
|
||||
// __gcov_flush is protected by a mutex, __gcov_dump and __gcov_reset aren't.
|
||||
// So we are using a CrossProcessMutex to protect them.
|
||||
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
extern "C" void __gcov_dump();
|
||||
extern "C" void __gcov_reset();
|
||||
|
||||
void counters_dump() {
|
||||
__gcov_dump();
|
||||
}
|
||||
|
||||
void counters_reset() {
|
||||
__gcov_reset();
|
||||
}
|
||||
#else
|
||||
void counters_dump() {
|
||||
/* Do nothing */
|
||||
}
|
||||
|
||||
void counters_reset() {
|
||||
/* Do nothing */
|
||||
}
|
||||
#endif
|
||||
|
||||
StaticAutoPtr<CodeCoverageHandler> CodeCoverageHandler::instance;
|
||||
|
||||
void CodeCoverageHandler::DumpCounters(int)
|
||||
@@ -30,7 +48,7 @@ void CodeCoverageHandler::DumpCounters(int)
|
||||
CrossProcessMutexAutoLock lock(*CodeCoverageHandler::Get()->GetMutex());
|
||||
|
||||
printf_stderr("[CodeCoverage] Requested dump.\n");
|
||||
__gcov_dump();
|
||||
counters_dump();
|
||||
printf_stderr("[CodeCoverage] Dump completed.\n");
|
||||
}
|
||||
|
||||
@@ -39,7 +57,7 @@ void CodeCoverageHandler::ResetCounters(int)
|
||||
CrossProcessMutexAutoLock lock(*CodeCoverageHandler::Get()->GetMutex());
|
||||
|
||||
printf_stderr("[CodeCoverage] Requested reset.\n");
|
||||
__gcov_reset();
|
||||
counters_reset();
|
||||
printf_stderr("[CodeCoverage] Reset completed.\n");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user