On 10/20/22 03:54, Eric Pouech wrote:
From: Eric Pouech eric.pouech@gmail.com
Some Windows version expect output to be aligned on 4 bytes.
Notes (from i386 and x86_64 tests):
- MSVC and Mingw/gcc don't layout the two variables (sdki, sdki_ex) the same way.
- MSVC aligns each variable on 4-byte boundary,
- MingW/GCC stores them in a 8-byte chunk, but starting from the end of the buffer: hence none of them is on a 4-byte boundary.
So, fixing the alignment of variables is not sufficient to workaround the compilers' discrepancy on all source code.
I didn't find a generic way to align on 4 bytes structures of size smaller than 4 bytes (apart from adding the DECLSPEC_ALIGN to each of the offending structures, likely not that many though). Ideas welcomed.
Should we put those structs in pshpack4/poppack in the header? (They aren't defined anywhere publicly on Windows, so we can't compare there.)