From 6fcab013ebce80e06f4193f4fd7e90243e54e9f3 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Thu, 29 Sep 2022 13:20:32 +0300 Subject: [PATCH] os.notify: fix sizeof(C.epoll_event) == 12 with tcc (was 16, while with gcc/clang it is 12) --- thirdparty/picoev/src/picoev_epoll.c | 6 ++++++ vlib/os/notify/backend_linux.c.v | 2 +- vlib/os/notify/epoll.h | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 vlib/os/notify/epoll.h diff --git a/thirdparty/picoev/src/picoev_epoll.c b/thirdparty/picoev/src/picoev_epoll.c index 61bda4d38b..378fb15a0e 100644 --- a/thirdparty/picoev/src/picoev_epoll.c +++ b/thirdparty/picoev/src/picoev_epoll.c @@ -28,7 +28,13 @@ */ #include + +// tcc needs the pragmas, because it does not support yet +// the __EPOLL_PACKED macro, defined to be __attribute__ ((__packed__)) +#pragma pack(push, 1) #include +#pragma pack(pop) + #include #include "picoev.h" diff --git a/vlib/os/notify/backend_linux.c.v b/vlib/os/notify/backend_linux.c.v index 6b07aebdbf..f77dcb035a 100644 --- a/vlib/os/notify/backend_linux.c.v +++ b/vlib/os/notify/backend_linux.c.v @@ -3,7 +3,7 @@ module notify import time import os -#include +#insert "@VEXEROOT/vlib/os/notify/epoll.h" struct C.epoll_event { events u32 diff --git a/vlib/os/notify/epoll.h b/vlib/os/notify/epoll.h new file mode 100644 index 0000000000..a13c653fd0 --- /dev/null +++ b/vlib/os/notify/epoll.h @@ -0,0 +1,6 @@ +// NOTE: tcc does not support yet __attribute__ ((__packed__)) properly, +// so the __EPOLL_PACKED macro that /usr/include/bits/epoll.h uses does not work :-| . +// However, it *does support* the older `#pragma pack(push, 1)` +#pragma pack(push, 1) +#include +#pragma pack(pop)