executor: enable extra coverage on OpenBSD

Recently added[1] to the kcov implementation on OpenBSD.

[1] 8430bc4bce
This commit is contained in:
Anton Lindqvist 2020-06-29 20:50:18 +02:00
parent d895b3be2c
commit 96dd36234d
2 changed files with 10 additions and 0 deletions

View File

@ -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

View File

@ -31,6 +31,7 @@ func isSupportedVMM() (bool, string) {
func init() {
checkFeature[FeatureCoverage] = unconditionallyEnabled
checkFeature[FeatureComparisons] = unconditionallyEnabled
checkFeature[FeatureExtraCoverage] = unconditionallyEnabled
checkFeature[FeatureNetInjection] = unconditionallyEnabled
checkFeature[FeatureSandboxSetuid] = unconditionallyEnabled
}