>From a90e095d88df6e543372f6b8a7953fa6656be8af Mon Sep 17 00:00:00 2001 From: Zhongteng Gui <[email protected]> Date: Sat, 29 Aug 2026 23:09:59 +0800 Subject: [PATCH] headers: crt: split out corecrt_malloc.h
memalignment is kept in stdlib.h, as this is part of ISO C23, and MSVC doesn't provide it. Also removes _CRT_ALLOCATION_DEFINED. Signed-off-by: Zhongteng Gui <[email protected]> --- mingw-w64-headers/crt/corecrt_malloc.h | 76 ++++++++++++++++++++++++++ mingw-w64-headers/crt/malloc.h | 67 +---------------------- mingw-w64-headers/crt/stdlib.h | 65 +--------------------- 3 files changed, 78 insertions(+), 130 deletions(-) create mode 100644 mingw-w64-headers/crt/corecrt_malloc.h diff --git a/mingw-w64-headers/crt/corecrt_malloc.h b/mingw-w64-headers/crt/corecrt_malloc.h new file mode 100644 index 000000000..cf14180f2 --- /dev/null +++ b/mingw-w64-headers/crt/corecrt_malloc.h @@ -0,0 +1,76 @@ +/** + * 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. + */ +#ifndef _INC_CORECRT_MALLOC +#define _INC_CORECRT_MALLOC + +#include <corecrt.h> + +_CRT_BEGIN_C_HEADER + +#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC) +#pragma push_macro("calloc") +#undef calloc +#pragma push_macro("free") +#undef free +#pragma push_macro("malloc") +#undef malloc +#pragma push_macro("realloc") +#undef realloc +#pragma push_macro("_aligned_free") +#undef _aligned_free +#pragma push_macro("_aligned_malloc") +#undef _aligned_malloc +#pragma push_macro("_aligned_offset_malloc") +#undef _aligned_offset_malloc +#pragma push_macro("_aligned_realloc") +#undef _aligned_realloc +#pragma push_macro("_aligned_offset_realloc") +#undef _aligned_offset_realloc +#pragma push_macro("_recalloc") +#undef _recalloc +#pragma push_macro("_aligned_recalloc") +#undef _aligned_recalloc +#pragma push_macro("_aligned_offset_recalloc") +#undef _aligned_offset_recalloc +#pragma push_macro("_aligned_msize") +#undef _aligned_msize +#endif + + void *__cdecl calloc(size_t _NumOfElements,size_t _SizeOfElements); + void __cdecl free(void *_Memory); + void *__cdecl malloc(size_t _Size); + void *__cdecl realloc(void *_Memory,size_t _NewSize); + + _CRTIMP void __cdecl _aligned_free(void *_Memory); + _CRTIMP void *__cdecl _aligned_malloc(size_t _Size,size_t _Alignment); + + _CRTIMP void *__cdecl _aligned_offset_malloc(size_t _Size,size_t _Alignment,size_t _Offset); + _CRTIMP void *__cdecl _aligned_realloc(void *_Memory,size_t _Size,size_t _Alignment); + _CRTIMP void *__cdecl _aligned_offset_realloc(void *_Memory,size_t _Size,size_t _Alignment,size_t _Offset); + _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); + +#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC) +#pragma pop_macro("calloc") +#pragma pop_macro("free") +#pragma pop_macro("malloc") +#pragma pop_macro("realloc") +#pragma pop_macro("_aligned_free") +#pragma pop_macro("_aligned_malloc") +#pragma pop_macro("_aligned_offset_malloc") +#pragma pop_macro("_aligned_realloc") +#pragma pop_macro("_aligned_offset_realloc") +#pragma pop_macro("_recalloc") +#pragma pop_macro("_aligned_recalloc") +#pragma pop_macro("_aligned_offset_recalloc") +#pragma pop_macro("_aligned_msize") +#endif + +_CRT_END_C_HEADER + +#endif diff --git a/mingw-w64-headers/crt/malloc.h b/mingw-w64-headers/crt/malloc.h index 64edc3d76..84b3db881 100644 --- a/mingw-w64-headers/crt/malloc.h +++ b/mingw-w64-headers/crt/malloc.h @@ -7,6 +7,7 @@ #define _MALLOC_H_ #include <crtdefs.h> +#include <corecrt_malloc.h> _CRT_BEGIN_C_HEADER @@ -38,72 +39,6 @@ _CRT_BEGIN_C_HEADER #define _amblksiz (*__p__amblksiz()) _CRTIMP unsigned int *__cdecl __p__amblksiz(void); -#ifndef _CRT_ALLOCATION_DEFINED -#define _CRT_ALLOCATION_DEFINED - -#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC) -#pragma push_macro("calloc") -#undef calloc -#pragma push_macro("free") -#undef free -#pragma push_macro("malloc") -#undef malloc -#pragma push_macro("realloc") -#undef realloc -#pragma push_macro("_aligned_free") -#undef _aligned_free -#pragma push_macro("_aligned_malloc") -#undef _aligned_malloc -#pragma push_macro("_aligned_offset_malloc") -#undef _aligned_offset_malloc -#pragma push_macro("_aligned_realloc") -#undef _aligned_realloc -#pragma push_macro("_aligned_offset_realloc") -#undef _aligned_offset_realloc -#pragma push_macro("_recalloc") -#undef _recalloc -#pragma push_macro("_aligned_recalloc") -#undef _aligned_recalloc -#pragma push_macro("_aligned_offset_recalloc") -#undef _aligned_offset_recalloc -#pragma push_macro("_aligned_msize") -#undef _aligned_msize -#endif - - void *__cdecl calloc(size_t _NumOfElements,size_t _SizeOfElements); - void __cdecl free(void *_Memory); - void *__cdecl malloc(size_t _Size); - void *__cdecl realloc(void *_Memory,size_t _NewSize); - - _CRTIMP void __cdecl _aligned_free(void *_Memory); - _CRTIMP void *__cdecl _aligned_malloc(size_t _Size,size_t _Alignment); - - _CRTIMP void *__cdecl _aligned_offset_malloc(size_t _Size,size_t _Alignment,size_t _Offset); - _CRTIMP void *__cdecl _aligned_realloc(void *_Memory,size_t _Size,size_t _Alignment); - _CRTIMP void *__cdecl _aligned_offset_realloc(void *_Memory,size_t _Size,size_t _Alignment,size_t _Offset); - _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); - -#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC) -#pragma pop_macro("calloc") -#pragma pop_macro("free") -#pragma pop_macro("malloc") -#pragma pop_macro("realloc") -#pragma pop_macro("_aligned_free") -#pragma pop_macro("_aligned_malloc") -#pragma pop_macro("_aligned_offset_malloc") -#pragma pop_macro("_aligned_realloc") -#pragma pop_macro("_aligned_offset_realloc") -#pragma pop_macro("_recalloc") -#pragma pop_macro("_aligned_recalloc") -#pragma pop_macro("_aligned_offset_recalloc") -#pragma pop_macro("_aligned_msize") -#endif - -#endif - /* Users should really use MS provided versions */ void * __mingw_aligned_malloc (size_t _Size, size_t _Alignment); void __mingw_aligned_free (void *_Memory); diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h index f750e155d..396282210 100644 --- a/mingw-w64-headers/crt/stdlib.h +++ b/mingw-w64-headers/crt/stdlib.h @@ -7,6 +7,7 @@ #define _INC_STDLIB #include <corecrt.h> +#include <corecrt_malloc.h> #include <corecrt_wstdlib.h> #include <limits.h> @@ -404,72 +405,8 @@ float __cdecl __MINGW_NOTHROW strtof(const char * __restrict__ _Str,char ** __re _CRTIMP size_t __cdecl wcstombs(char * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; _CRTIMP size_t __cdecl _wcstombs_l(char * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _MaxCount,_locale_t _Locale) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; -#ifndef _CRT_ALLOCATION_DEFINED -#define _CRT_ALLOCATION_DEFINED - -#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC) -#pragma push_macro("calloc") -#undef calloc -#pragma push_macro("free") -#undef free -#pragma push_macro("malloc") -#undef malloc -#pragma push_macro("realloc") -#undef realloc -#pragma push_macro("_aligned_free") -#undef _aligned_free -#pragma push_macro("_aligned_malloc") -#undef _aligned_malloc -#pragma push_macro("_aligned_offset_malloc") -#undef _aligned_offset_malloc -#pragma push_macro("_aligned_realloc") -#undef _aligned_realloc -#pragma push_macro("_aligned_offset_realloc") -#undef _aligned_offset_realloc -#pragma push_macro("_recalloc") -#undef _recalloc -#pragma push_macro("_aligned_recalloc") -#undef _aligned_recalloc -#pragma push_macro("_aligned_offset_recalloc") -#undef _aligned_offset_recalloc -#pragma push_macro("_aligned_msize") -#undef _aligned_msize -#endif - - void *__cdecl calloc(size_t _NumOfElements,size_t _SizeOfElements); - void __cdecl free(void *_Memory); - void *__cdecl malloc(size_t _Size); - void *__cdecl realloc(void *_Memory,size_t _NewSize); - _CRTIMP void __cdecl _aligned_free(void *_Memory); - _CRTIMP void *__cdecl _aligned_malloc(size_t _Size,size_t _Alignment); - _CRTIMP void *__cdecl _aligned_offset_malloc(size_t _Size,size_t _Alignment,size_t _Offset); - _CRTIMP void *__cdecl _aligned_realloc(void *_Memory,size_t _Size,size_t _Alignment); - _CRTIMP void *__cdecl _aligned_offset_realloc(void *_Memory,size_t _Size,size_t _Alignment,size_t _Offset); - _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); - #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L size_t __cdecl memalignment(const void *_Memory); -#endif - -#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC) -#pragma pop_macro("calloc") -#pragma pop_macro("free") -#pragma pop_macro("malloc") -#pragma pop_macro("realloc") -#pragma pop_macro("_aligned_free") -#pragma pop_macro("_aligned_malloc") -#pragma pop_macro("_aligned_offset_malloc") -#pragma pop_macro("_aligned_realloc") -#pragma pop_macro("_aligned_offset_realloc") -#pragma pop_macro("_recalloc") -#pragma pop_macro("_aligned_recalloc") -#pragma pop_macro("_aligned_offset_recalloc") -#pragma pop_macro("_aligned_msize") -#endif - #endif _CRTIMP int __cdecl _putenv(const char *_EnvString); -- 2.55.0.windows.5 _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
