From e18e80fe175422d26efe689addc0f67bdba0e097 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 21 Mar 2012 11:18:18 +1030 Subject: [PATCH 1/1] failtest: compile fix for OpenBSD OpenBSD doesn't idempotent-wrap sys/mman.h, so when we #define mmap to an alternative, it fails to compile when sys/mman.h is included again. Workaround is not to #define mmap to add arguments on Open BSD. --- ccan/failtest/failtest.c | 9 +++++++++ ccan/failtest/failtest_override.h | 6 ++++++ ccan/failtest/failtest_proto.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/ccan/failtest/failtest.c b/ccan/failtest/failtest.c index 10462835..dae3024e 100644 --- a/ccan/failtest/failtest.c +++ b/ccan/failtest/failtest.c @@ -1177,6 +1177,15 @@ void *failtest_mmap(void *addr, size_t length, int prot, int flags, return p->u.mmap.ret; } +/* Since OpenBSD can't handle adding args, we use this file and line. + * This will make all mmaps look the same, reducing coverage. */ +void *failtest_mmap_noloc(void *addr, size_t length, int prot, int flags, + int fd, off_t offset) +{ + return failtest_mmap(addr, length, prot, flags, fd, offset, + __FILE__, __LINE__); +} + static void cleanup_pipe(struct pipe_call *call, bool restore) { trace("cleaning up pipe fd=%i%s,%i%s\n", diff --git a/ccan/failtest/failtest_override.h b/ccan/failtest/failtest_override.h index 204494b0..b056d538 100644 --- a/ccan/failtest/failtest_override.h +++ b/ccan/failtest/failtest_override.h @@ -64,9 +64,15 @@ #define fcntl(fd, ...) failtest_fcntl((fd), __FILE__, __LINE__, __VA_ARGS__) #undef mmap +/* OpenBSD doesn't idempotent-protect sys/mman.h, so we can't add args. */ +#ifdef __OpenBSD__ +#define mmap(addr, length, prot, flags, fd, offset) \ + failtest_mmap_noloc((addr), (length), (prot), (flags), (fd), (offset)) +#else #define mmap(addr, length, prot, flags, fd, offset) \ failtest_mmap((addr), (length), (prot), (flags), (fd), (offset), \ __FILE__, __LINE__) +#endif /* !__OpenBSD__ */ #undef lseek #define lseek(fd, offset, whence) \ diff --git a/ccan/failtest/failtest_proto.h b/ccan/failtest/failtest_proto.h index c7e6b489..3c2df1d3 100644 --- a/ccan/failtest/failtest_proto.h +++ b/ccan/failtest/failtest_proto.h @@ -23,6 +23,8 @@ ssize_t failtest_pwrite(int fd, const void *buf, size_t count, off_t offset, const char *file, unsigned line); void *failtest_mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset, const char *file, unsigned line); +void *failtest_mmap_noloc(void *addr, size_t length, int prot, int flags, + int fd, off_t offset); off_t failtest_lseek(int fd, off_t offset, int whence, const char *file, unsigned line); int failtest_close(int fd, const char *file, unsigned line); -- 2.39.2