diff options
| author | Andrew Turner <andrew@fubar.geek.nz> | 2019-06-11 10:22:40 +0000 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-06-11 12:31:30 +0200 |
| commit | 28a6eb7203393ca5789d971e64c19ee0c6d6bd3f (patch) | |
| tree | 247a7c387ceeda91e0ef9f6b1ac88970edb8229e | |
| parent | d2f63c9b494cffdb8e2a2d3bc9ad682b417a501e (diff) | |
tools/kcovtrace: Fix cover type on FreeBSD and NetBSD
It should be uint64_t as a 32 bit tool may be tracing a 64 bit kernel.
| -rw-r--r-- | tools/kcovtrace/kcovtrace.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/kcovtrace/kcovtrace.c b/tools/kcovtrace/kcovtrace.c index 5f98aac19..119345394 100644 --- a/tools/kcovtrace/kcovtrace.c +++ b/tools/kcovtrace/kcovtrace.c @@ -21,6 +21,7 @@ #if defined(__FreeBSD__) || defined(__NetBSD__) #include <sys/kcov.h> #define KCOV_PATH "/dev/kcov" +typedef uint64_t cover_t; #else #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long) #define KCOV_ENABLE _IO('c', 100) @@ -28,13 +29,14 @@ #define KCOV_ENTRY_SIZE sizeof(unsigned long) #define KCOV_PATH "/sys/kernel/debug/kcov" #define KCOV_TRACE_PC 0 +typedef unsigned long cover_t; #endif #define COVER_SIZE (16 << 20) int main(int argc, char** argv, char** envp) { int fd, pid, status; - unsigned long *cover, n, i; + cover_t *cover, n, i; if (argc == 1) fprintf(stderr, "usage: kcovtrace program [args...]\n"), exit(1); @@ -50,7 +52,7 @@ int main(int argc, char** argv, char** envp) if (ioctl(fd, KCOV_INIT_TRACE, COVER_SIZE)) #endif perror("ioctl"), exit(1); - cover = (unsigned long*)mmap(NULL, COVER_SIZE * KCOV_ENTRY_SIZE, + cover = (cover_t*)mmap(NULL, COVER_SIZE * KCOV_ENTRY_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if ((void*)cover == MAP_FAILED) perror("mmap"), exit(1); @@ -80,7 +82,7 @@ int main(int argc, char** argv, char** envp) } n = __atomic_load_n(&cover[0], __ATOMIC_RELAXED); for (i = 0; i < n; i++) - printf("0x%lx\n", cover[i + 1]); + printf("0x%jx\n", (uintmax_t)cover[i + 1]); if (munmap(cover, COVER_SIZE * KCOV_ENTRY_SIZE)) perror("munmap"), exit(1); if (close(fd)) |
