From: Aurelien DARRAGON Date: Wed, 3 Sep 2025 13:23:16 +0000 (+0200) Subject: BUILD: stats-file: fix aligment issues X-Git-Tag: v3.3-dev8~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=21d97ccfaeb949eca0b9a95b7be7e701d0841695;p=thirdparty%2Fhaproxy.git BUILD: stats-file: fix aligment issues Document some byte holes and fix some potential aligment issues between 32 and 64 bits architectures to ensure the shm_stats_file memory mapping is consistent between operating systems. --- diff --git a/include/haproxy/stats-file-t.h b/include/haproxy/stats-file-t.h index 7d6f351da..2ad7fafcb 100644 --- a/include/haproxy/stats-file-t.h +++ b/include/haproxy/stats-file-t.h @@ -28,6 +28,7 @@ struct shm_stats_file_hdr { uint8_t major; uint8_t minor; } version; + /* 2 bytes hole */ uint global_now_ms; /* global monotonic date (ms) common to all processes using the shm */ ullong global_now_ns; /* global monotonic date (ns) common to all processes using the shm */ llong now_offset; /* offset applied to global monotonic date on startup */ @@ -54,6 +55,7 @@ struct shm_stats_file_object { char guid[GUID_MAX_LEN + 1]; uint8_t tgid; // thread group ID from 1 to 64 uint8_t type; // SHM_STATS_FILE_OBJECT_TYPE_* to know how to handle object.data + ALWAYS_PAD(6); // 6 bytes hole, ensure it remains the same size 32 vs 64 bits arch uint64_t users; // bitfield that corresponds to users of the object (see shm_stats_file_hdr slots) /* as the struct may hold any of the types described here, let's make it * so it may store up to the heaviest one using an union