crt: Provide _aligned_msize function for all CRT import libraries

Function _aligned_msize() is available only in msvcr80+ and UCRT. It is not
available in msvcrt.dll system os library.

Now when the mingw-w64 aligned functions use same alignment and gap
calculation we can use mingw-w64 __mingw_aligned_msize() function as
implementation for CRT's _aligned_msize() function.

Signed-off-by: Martin Storsjö <martin@martin.st>
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 5850e55..e02f03e 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -323,6 +323,7 @@
   misc/__iswcsymf.c \
   misc/__sys_errlist.c \
   misc/__sys_nerr.c \
+  misc/_aligned_msize.c \
   misc/_configthreadlocale.c \
   misc/_set_purecall_handler.c \
   misc/imaxdiv.c \
@@ -811,6 +812,7 @@
   misc/__iswcsymf.c \
   misc/__sys_errlist.c \
   misc/__sys_nerr.c \
+  misc/_aligned_msize.c \
   misc/_configthreadlocale.c \
   misc/_get_errno.c \
   misc/_initterm_e.c \
diff --git a/mingw-w64-crt/misc/_aligned_msize.c b/mingw-w64-crt/misc/_aligned_msize.c
new file mode 100644
index 0000000..14f2583
--- /dev/null
+++ b/mingw-w64-crt/misc/_aligned_msize.c
@@ -0,0 +1,13 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <malloc.h>
+
+size_t __cdecl _aligned_msize(void *memory, size_t alignment, size_t offset)
+{
+  return __mingw_aligned_msize(memory, alignment, offset);
+}
+size_t (__cdecl *__MINGW_IMP_SYMBOL(_aligned_msize))(void *, size_t, size_t) = _aligned_msize;
diff --git a/mingw-w64-headers/crt/crtdbg.h b/mingw-w64-headers/crt/crtdbg.h
index c498bcf..b53f19b 100644
--- a/mingw-w64-headers/crt/crtdbg.h
+++ b/mingw-w64-headers/crt/crtdbg.h
@@ -165,8 +165,8 @@
 #define _recalloc_dbg(p,c,s,t,f,l) _recalloc(p,c,s)
 #define _aligned_recalloc_dbg(p,c,s,a,f,l) _aligned_realloc(p,c,s,a)
 #define _aligned_offset_recalloc_dbg(p,c,s,a,o,f,l) _aligned_offset_recalloc(p,c,s,a,o)
-#define _aligned_msize_dbg(p,a,o) _aligned_msize(p,a,o)
 #endif
+#define _aligned_msize_dbg(p,a,o) _aligned_msize(p,a,o)
 
 #define _malloca_dbg(s,t,f,l) _malloca(s)
 #define _freea_dbg(p,t) _freea(p)
diff --git a/mingw-w64-headers/crt/malloc.h b/mingw-w64-headers/crt/malloc.h
index 81d70ca..70f34dc 100644
--- a/mingw-w64-headers/crt/malloc.h
+++ b/mingw-w64-headers/crt/malloc.h
@@ -106,8 +106,8 @@
   _CRTIMP void *__cdecl _recalloc(void *_Memory,size_t _Count,size_t _Size);
   _CRTIMP void *__cdecl _aligned_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment);
   _CRTIMP void *__cdecl _aligned_offset_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment,size_t _Offset);
-  _CRTIMP size_t __cdecl _aligned_msize(void *_Memory,size_t _Alignment,size_t _Offset);
 # endif
+  _CRTIMP size_t __cdecl _aligned_msize(void *_Memory,size_t _Alignment,size_t _Offset);
 
 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
 #pragma pop_macro("calloc")
diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h
index d43fa33..969848d 100644
--- a/mingw-w64-headers/crt/stdlib.h
+++ b/mingw-w64-headers/crt/stdlib.h
@@ -462,8 +462,8 @@
   _CRTIMP void *__cdecl _recalloc(void *_Memory,size_t _Count,size_t _Size);
   _CRTIMP void *__cdecl _aligned_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment);
   _CRTIMP void *__cdecl _aligned_offset_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment,size_t _Offset);
-  _CRTIMP size_t __cdecl _aligned_msize(void *_Memory,size_t _Alignment,size_t _Offset);
 # endif
+  _CRTIMP size_t __cdecl _aligned_msize(void *_Memory,size_t _Alignment,size_t _Offset);
 
 #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
 #pragma pop_macro("calloc")