aboutsummaryrefslogtreecommitdiffstats
path: root/executor/executor_bsd.h
diff options
context:
space:
mode:
Diffstat (limited to 'executor/executor_bsd.h')
-rw-r--r--executor/executor_bsd.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/executor/executor_bsd.h b/executor/executor_bsd.h
index d3ef16bce..1ca0e4ea4 100644
--- a/executor/executor_bsd.h
+++ b/executor/executor_bsd.h
@@ -66,6 +66,13 @@ static void cover_open(cover_t* cov, bool extra)
unsigned long cover_size = kCoverSize;
if (ioctl(cov->fd, KIOSETBUFSIZE, &cover_size))
fail("ioctl init trace write failed");
+ if (extra) {
+ struct kio_remote_attach args;
+ args.subsystem = KCOV_REMOTE_COMMON;
+ args.id = 0;
+ if (ioctl(cov->fd, KIOREMOTEATTACH, &args))
+ fail("ioctl remote attach failed");
+ }
size_t mmap_alloc_size = kCoverSize * (is_kernel_64_bit ? 8 : 4);
#elif GOOS_netbsd
uint64_t cover_size;
@@ -135,6 +142,8 @@ static void cover_enable(cover_t* cov, bool collect_comps, bool extra)
exitf("cover enable write trace failed, mode=%d", kcov_mode);
#elif GOOS_openbsd
// OpenBSD uses an pointer to an int as the third argument.
+ // Whether it is a regular coverage or an extra coverage, the enable
+ // ioctl is the same.
if (ioctl(cov->fd, KIOENABLE, &kcov_mode))
exitf("cover enable write trace failed, mode=%d", kcov_mode);
#elif GOOS_netbsd