From 11e6080fe130ac5035a3de8cab39603bf7ebc0b9 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 22 Oct 2022 04:00:42 +0300 Subject: [PATCH] Fixed "_ZnwmSt11align_val_t" compiler error --- Core/Memory/Memory.cpp | 5 +++++ include/memory.hpp | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/Core/Memory/Memory.cpp b/Core/Memory/Memory.cpp index fbed8fe..044a633 100644 --- a/Core/Memory/Memory.cpp +++ b/Core/Memory/Memory.cpp @@ -249,6 +249,11 @@ void HeapFree(void *Address) void *operator new(size_t Size) { return HeapMalloc(Size); } void *operator new[](size_t Size) { return HeapMalloc(Size); } +void *operator new(unsigned long Size, std::align_val_t Alignment) +{ + fixme("operator new with alignment(%#lx) is not implemented", Alignment); + return HeapMalloc(Size); +} void operator delete(void *Pointer) { HeapFree(Pointer); } void operator delete[](void *Pointer) { HeapFree(Pointer); } void operator delete(void *Pointer, long unsigned int Size) { HeapFree(Pointer); } diff --git a/include/memory.hpp b/include/memory.hpp index 76a4c71..929221a 100644 --- a/include/memory.hpp +++ b/include/memory.hpp @@ -433,10 +433,23 @@ namespace Memory }; } +/** + * @brief // stub namespace for std::align_val_t and new operator + * @note // Found on https://gcc.gnu.org/legacy-ml/gcc-patches/2016-09/msg00628.html for "_ZnwmSt11align_val_t" compiler error + */ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + enum class align_val_t : std::size_t + { + }; +} + void InitializeMemoryManagement(BootInfo *Info); void *operator new(size_t Size); void *operator new[](size_t Size); +void *operator new(size_t Size, std::align_val_t Alignment); void operator delete(void *Pointer); void operator delete[](void *Pointer); void operator delete(void *Pointer, long unsigned int Size);