diff --git a/general/package/libevent-openipc/0002-use-mmap-syscall.patch b/general/package/libevent-openipc/0002-use-mmap-syscall.patch new file mode 100644 index 00000000..3f7d687f --- /dev/null +++ b/general/package/libevent-openipc/0002-use-mmap-syscall.patch @@ -0,0 +1,41 @@ +--- a/buffer.c ++++ b/buffer.c +@@ -63,6 +63,9 @@ + #include + #endif + ++#if defined(BROKEN_MMAP) ++#include ++#endif + + #include + #include +@@ -2977,6 +2980,12 @@ + return result; + } + ++#if defined(BROKEN_MMAP) ++static void *mmap_ev(void *start, size_t len, int prot, int flags, int fd, off_t off) { ++ return (void *)syscall(SYS_mmap2, start, len, prot, flags, fd, off >> 12); ++} ++#endif ++ + /* TODO(niels): we may want to add to automagically convert to mmap, in + * case evbuffer_remove() or evbuffer_pullup() are being used. + */ +@@ -3080,11 +3089,15 @@ + offset_leftover = offset % page_size; + offset_rounded = offset - offset_leftover; + } ++#if defined(BROKEN_MMAP) ++ mapped = mmap_ev(NULL, length + offset_leftover, ++#else + #if defined(EVENT__HAVE_MMAP64) + mapped = mmap64(NULL, length + offset_leftover, + #else + mapped = mmap(NULL, length + offset_leftover, + #endif ++#endif + PROT_READ, + #ifdef MAP_NOCACHE + MAP_NOCACHE | /* ??? */ diff --git a/general/package/libevent-openipc/libevent-openipc.mk b/general/package/libevent-openipc/libevent-openipc.mk index 8ca6d8e2..e17142d5 100644 --- a/general/package/libevent-openipc/libevent-openipc.mk +++ b/general/package/libevent-openipc/libevent-openipc.mk @@ -49,6 +49,10 @@ else LIBEVENT_OPENIPC_CONF_OPTS += -DEVENT__DISABLE_MBEDTLS=ON endif +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LIBEVENT_OPENIPC_CONF_OPTS += -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -DBROKEN_MMAP=1" +endif + LIBEVENT_OPENIPC_POST_INSTALL_TARGET_HOOKS += LIBEVENT_OPENIPC_DELETE_UNUSED $(eval $(cmake-package))