Skip to content

Commit 1f54cf0

Browse files
committed
Add logic to flush gcov data from traffic_server on interrupt.
1 parent db48870 commit 1f54cf0

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

configure.ac

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,15 @@ AC_ARG_ENABLE([mime-sanity-check],
176176
AC_MSG_RESULT([$enable_mime_sanity_check])
177177

178178
# Enable code coverage instrumentation only if requested by the user.
179+
use_gcov=0
179180
AC_MSG_CHECKING([whether to code coverage])
180181
AC_ARG_ENABLE([coverage],
181182
[AS_HELP_STRING([--enable-coverage],[generate code coverage instrumentation])],
182-
[],
183+
[use_gcov=1],
183184
[enable_coverage=no]
184185
)
185186
AC_MSG_RESULT([$enable_coverage])
187+
AC_SUBST(use_gcov)
186188

187189
#
188190
# Enable -Werror. We want this enabled by default for developers, but disabled by default

lib/ts/ink_config.h.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
#define TS_HAS_IN6_IS_ADDR_UNSPECIFIED @has_in6_is_addr_unspecified@
5959
#define TS_HAS_BACKTRACE @has_backtrace@
6060
#define TS_HAS_PROFILER @has_profiler@
61+
#define TS_USE_GCOV @use_gcov@
6162
#define TS_USE_FAST_SDK @use_fast_sdk@
6263
#define TS_USE_DIAGS @use_diags@
6364
#define TS_USE_EPOLL @use_epoll@

proxy/Main.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ extern "C" int plock(int);
9191
#include "I_Tasks.h"
9292
#include "InkAPIInternal.h"
9393
#include "HTTP2.h"
94+
#include "ts/ink_config.h"
9495

9596
#include <ts/ink_cap.h>
9697

@@ -99,6 +100,10 @@ extern "C" int plock(int);
99100
#include <gperftools/heap-profiler.h>
100101
#endif
101102

103+
#if TS_USE_GCOV
104+
extern "C" void __gcov_flush();
105+
#endif
106+
102107
//
103108
// Global Data
104109
//
@@ -445,6 +450,10 @@ proxy_signal_handler(int signo, siginfo_t *info, void *ctx)
445450
ProfilerStop();
446451
#endif
447452

453+
#if TS_USE_GCOV
454+
__gcov_flush();
455+
#endif
456+
448457
// We don't expect any crashing signals here because, but
449458
// forward to the default handler just to be robust.
450459
if (signal_is_crash(signo)) {

0 commit comments

Comments
 (0)