1 #ifndef _FLUSH_PROFILERS_H_
2 #define _FLUSH_PROFILERS_H_ "$Id: flush_profilers.h 316 2020-03-26 16:18:40Z geoff $"
31 typedef void (*voidFuncCallFP)();
33 void *dlHandle = dlopen(0, RTLD_LAZY);
40 void *monitorCleanup = dlsym(dlHandle,
"__write_profiling");
41 if (monitorCleanup != 0) {
42 voidFuncCallFP rout = (voidFuncCallFP) monitorCleanup;
45 fprintf(
stderr,
"no __write_profiling symbol located\n");
47 static bool didCleanup =
false;
48 if (didCleanup ==
false) {
49 monitorCleanup = dlsym(dlHandle,
"_mcleanup");
50 if (monitorCleanup != 0) {
51 voidFuncCallFP rout = (voidFuncCallFP) monitorCleanup;
55 fprintf(
stderr,
"no _mcleanup symbol located\n");
60 void *gcovFlush = dlsym(dlHandle,
"__gcov_flush");
62 voidFuncCallFP rout = (voidFuncCallFP) gcovFlush;
65 fprintf(
stderr,
"no __gcov_flush symbol located\n");
82 #define FLUSH_PROFILING_BUFFERS(forceExit) flushProfilingBuffers(forceExit)
87 #define FLUSH_PROFILING_BUFFERS(forceExit) do { \
88 if (forceExit == 1) TerminateProcess(GetCurrentProcess(), 1); \
89 if (forceExit == 2) ExitProcess(1); \