Op 2020-05-14 om 17:03 schreef Henry Vermaak via fpc-devel:
The original headers only did 32-bit. Over the years some 64-bit
corrections have been added. This process is ongoing, so please make
sure you use the newest version.
Grepping for align|packrecords give exactly the same results in trunk,
afaics. jwawindows.pas explicitly sets align 4.
jwawindows.pas
{$ALIGN 4}
{$ALIGN 4}
jwawinldap.pas
{$ALIGN ON}
jwawinsock2.pas
{$ALIGN 4}
jwaws2atm.pas
{$ALIGN ON}
jwaws2spi.pas
{$ALIGN OFF}
{$ALIGN ON}
But yeah, that looks bad.
I'm a bit loath to try to fix this with big, overarching $packrecords,
because the winapi actually sometimes uses packrecords C and sometimes
packrecords 8.
So why is rtl/win*/* full of packrecords c? These pages say that the
Windows API expect 8:
https://docs.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers#controlling-structure-packing
https://docs.microsoft.com/en-gb/cpp/build/reference/zp-struct-member-alignment
Those are probably the exceptions then. But jwa* is delphi compat, so
can't use $PUSH/$POP, so changing defaults is less useful, since it will
be undone at the first exception
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel