diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index 337a17cb0d7..1de0c7ba216 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -64,8 +64,8 @@ typedef unsigned int MSVCRT__dev_t; typedef int MSVCRT__off_t; typedef int MSVCRT_clock_t; typedef int MSVCRT___time32_t; -typedef __int64 MSVCRT___time64_t; -typedef __int64 MSVCRT_fpos_t; +typedef __int64 DECLSPEC_ALIGN(8) MSVCRT___time64_t; +typedef __int64 DECLSPEC_ALIGN(8) MSVCRT_fpos_t; typedef void (*__cdecl MSVCRT_terminate_handler)(void); typedef void (*__cdecl MSVCRT_terminate_function)(void); @@ -316,7 +316,7 @@ struct MSVCRT__finddata32i64_t { MSVCRT___time32_t time_create; MSVCRT___time32_t time_access; MSVCRT___time32_t time_write; - __int64 size; + __int64 DECLSPEC_ALIGN(8) size; char name[260]; }; @@ -334,7 +334,7 @@ struct MSVCRT__finddata64_t { MSVCRT___time64_t time_create; MSVCRT___time64_t time_access; MSVCRT___time64_t time_write; - __int64 size; + __int64 DECLSPEC_ALIGN(8) size; char name[260]; }; @@ -352,7 +352,7 @@ struct MSVCRT__wfinddata32i64_t { MSVCRT___time32_t time_create; MSVCRT___time32_t time_access; MSVCRT___time32_t time_write; - __int64 size; + __int64 DECLSPEC_ALIGN(8) size; MSVCRT_wchar_t name[260]; }; @@ -370,7 +370,7 @@ struct MSVCRT__wfinddata64_t { MSVCRT___time64_t time_create; MSVCRT___time64_t time_access; MSVCRT___time64_t time_write; - __int64 size; + __int64 DECLSPEC_ALIGN(8) size; MSVCRT_wchar_t name[260]; }; diff --git a/include/msvcrt/crtdefs.h b/include/msvcrt/crtdefs.h index 2a101a92b2b..61116e99665 100644 --- a/include/msvcrt/crtdefs.h +++ b/include/msvcrt/crtdefs.h @@ -80,6 +80,16 @@ # endif #endif +#ifndef DECLSPEC_ALIGN +# if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS) +# define DECLSPEC_ALIGN(x) __declspec(align(x)) +# elif defined(__GNUC__) +# define DECLSPEC_ALIGN(x) __attribute__((aligned(x))) +# else +# define DECLSPEC_ALIGN(x) +# endif +#endif + #ifndef _MSVCRT_LONG_DEFINED #define _MSVCRT_LONG_DEFINED /* we need 32-bit longs even on 64-bit */ @@ -129,7 +139,7 @@ typedef __msvcrt_long __time32_t; #endif #ifndef _TIME64_T_DEFINED -typedef __int64 __time64_t; +typedef __int64 DECLSPEC_ALIGN(8) __time64_t; #define _TIME64_T_DEFINED #endif diff --git a/include/msvcrt/io.h b/include/msvcrt/io.h index e15dff1ac8d..c7ba9ab47b0 100644 --- a/include/msvcrt/io.h +++ b/include/msvcrt/io.h @@ -44,7 +44,7 @@ struct _finddatai64_t time_t time_create; time_t time_access; time_t time_write; - __int64 size; + __int64 DECLSPEC_ALIGN(8) size; char name[260]; }; #endif /* _FINDDATA_T_DEFINED */ @@ -65,7 +65,7 @@ struct _wfinddatai64_t { time_t time_create; time_t time_access; time_t time_write; - __int64 size; + __int64 DECLSPEC_ALIGN(8) size; wchar_t name[260]; }; #endif /* _WFINDDATA_T_DEFINED */ diff --git a/include/msvcrt/stdio.h b/include/msvcrt/stdio.h index 1b3872cc372..b309ebbd463 100644 --- a/include/msvcrt/stdio.h +++ b/include/msvcrt/stdio.h @@ -72,7 +72,7 @@ typedef struct _iobuf #endif /* _FILE_DEFINED */ #ifndef _FPOS_T_DEFINED -typedef __int64 fpos_t; +typedef __int64 DECLSPEC_ALIGN(8) fpos_t; #define _FPOS_T_DEFINED #endif diff --git a/include/msvcrt/wchar.h b/include/msvcrt/wchar.h index fe761667bad..66d3a8103ed 100644 --- a/include/msvcrt/wchar.h +++ b/include/msvcrt/wchar.h @@ -111,7 +111,7 @@ struct _wfinddatai64_t { time_t time_create; time_t time_access; time_t time_write; - __int64 size; + __int64 DECLSPEC_ALIGN(8) size; wchar_t name[260]; }; diff --git a/include/ws2def.h b/include/ws2def.h index f2f72232be9..585647b02cd 100644 --- a/include/ws2def.h +++ b/include/ws2def.h @@ -58,7 +58,7 @@ typedef struct _CSADDR_INFO { typedef struct WS(sockaddr_storage) { short ss_family; char __ss_pad1[WS(_SS_PAD1SIZE)]; - __int64 __ss_align; + __int64 DECLSPEC_ALIGN(8) __ss_align; char __ss_pad2[WS(_SS_PAD2SIZE)]; } SOCKADDR_STORAGE, *PSOCKADDR_STORAGE, *LPSOCKADDR_STORAGE;