From a4d142cf97cb16ddd8bfabdb68dd006c1f363b2c Mon Sep 17 00:00:00 2001 From: Avril Date: Sun, 26 May 2019 14:39:36 +0100 Subject: [PATCH] packing for GCC --- libsipc/include/sipc.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libsipc/include/sipc.h b/libsipc/include/sipc.h index 0cabc3f..bf7fcee 100644 --- a/libsipc/include/sipc.h +++ b/libsipc/include/sipc.h @@ -28,7 +28,13 @@ typedef enum { #define _SI_HEADER_CHECK 0xbeefbeefabad1dealu -typedef struct { +#ifdef __GNUC__ +#define __pack __attribute__((packed)) +#else +#define __pack +#endif + +typedef struct __pack { union { si_type type; uint32_t __pad; @@ -39,7 +45,7 @@ typedef struct { uint64_t check0; uint64_t check; uint8_t data[]; -} si_message; +} si_message ; _Static_assert(sizeof(union { si_type t0; uint32_t pad;}) == sizeof(uint32_t), "packing error: sizeof(enum)!=sizeof(uint32_t)"); _Static_assert(sizeof(si_message) == (sizeof(uint32_t)*4) + (sizeof(uint64_t)*2), "packing error: bad size, header padded size != 32 bytes?");