diff options
Diffstat (limited to 'libpsn00b/libc/cpp_support.cpp')
| -rw-r--r-- | libpsn00b/libc/cpp_support.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/libpsn00b/libc/cpp_support.cpp b/libpsn00b/libc/cpp_support.cpp new file mode 100644 index 0000000..f451044 --- /dev/null +++ b/libpsn00b/libc/cpp_support.cpp @@ -0,0 +1,55 @@ +/* + * PSn00bSDK C++ support library + * (C) 2019-2022 Lameguy64, spicyjpeg - MPL licensed + */ + +#include <stdint.h> +#include <stdlib.h> +#include <stdio.h> + +/* GCC builtins */ + +extern "C" void *__builtin_new(size_t size) { + return malloc(size); +} + +extern "C" void __builtin_delete(void *ptr) { + free(ptr); +} + +/* Default new/delete operators */ + +void *operator new(size_t size) noexcept { + return malloc(size); +} + +void *operator new[](size_t size) noexcept { + return malloc(size); +} + +void operator delete(void *ptr) noexcept { + free(ptr); +} + +void operator delete[](void *ptr) noexcept { + free(ptr); +} + +// https://en.cppreference.com/w/cpp/memory/new/operator_delete +void operator delete(void *ptr, size_t size) noexcept { + free(ptr); +} + +void operator delete[](void *ptr, size_t size) noexcept { + free(ptr); +} + +/* Placement new operators */ + +void *operator new(size_t size, void *ptr) noexcept { + return ptr; +} + +void *operator new[](size_t size, void *ptr) noexcept { + return ptr; +} |
