aboutsummaryrefslogtreecommitdiffstats
path: root/executor/executor_bsd.cc
diff options
context:
space:
mode:
Diffstat (limited to 'executor/executor_bsd.cc')
-rw-r--r--executor/executor_bsd.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/executor/executor_bsd.cc b/executor/executor_bsd.cc
index 10b189008..83956f3a9 100644
--- a/executor/executor_bsd.cc
+++ b/executor/executor_bsd.cc
@@ -163,16 +163,17 @@ void cover_open()
fail("open of /dev/kcov failed");
if (ioctl(th->cover_fd, KIOSETBUFSIZE, &kCoverSize))
fail("ioctl init trace write failed");
- size_t mmap_alloc_size = kCoverSize * sizeof(th->cover_data[0]);
- uint64* mmap_ptr = (uint64*)mmap(NULL, mmap_alloc_size,
- PROT_READ | PROT_WRITE,
- MAP_SHARED, th->cover_fd, 0);
+ size_t mmap_alloc_size = kCoverSize * (is_kernel_64_bit ? 8 : 4);
+ char* mmap_ptr = (char*)mmap(NULL, mmap_alloc_size,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED, th->cover_fd, 0);
if (mmap_ptr == NULL)
fail("cover mmap failed");
- th->cover_size_ptr = mmap_ptr;
- th->cover_data = &mmap_ptr[1];
+ th->cover_data = mmap_ptr;
+ th->cover_end = mmap_ptr + mmap_alloc_size;
#else
- th->cover_data = &th->cover_buffer[0];
+ th->cover_data = (char*)&th->cover_buffer[0];
+ th->cover_end = th->cover_data + sizeof(th->cover_buffer);
#endif
}
}