diff --git a/libc/test/UnitTest/HermeticTestUtils.cpp b/libc/test/UnitTest/HermeticTestUtils.cpp index 85e5cf02ff61..47f813b0b7a4 100644 --- a/libc/test/UnitTest/HermeticTestUtils.cpp +++ b/libc/test/UnitTest/HermeticTestUtils.cpp @@ -124,7 +124,7 @@ unsigned long __getauxval(unsigned long id) { } // extern "C" -void *operator new(unsigned long size, void *ptr) { return ptr; } +void *operator new(size_t size, void *ptr) { return ptr; } void *operator new(size_t size) { return malloc(size); } @@ -137,3 +137,16 @@ void operator delete(void *) { } void operator delete(void *ptr, size_t size) { __builtin_trap(); } + +// Defining members in the std namespace is not preferred. But, we do it here +// so that we can use it to define the operator new which takes std::align_val_t +// argument. +namespace std { +enum class align_val_t : size_t {}; +} // namespace std + +void operator delete(void *mem, std::align_val_t) noexcept { __builtin_trap(); } + +void operator delete(void *mem, unsigned int, std::align_val_t) noexcept { + __builtin_trap(); +}