From 0e755e9801a2dcf7b9827c90cc38e9f532d06393 Mon Sep 17 00:00:00 2001 From: spicyjpeg Date: Sat, 23 Jul 2022 23:49:00 +0200 Subject: Replace default allocator with psyqo implementation --- libpsn00b/libc/cpp_support.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 libpsn00b/libc/cpp_support.cpp (limited to 'libpsn00b/libc/cpp_support.cpp') 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 +#include +#include + +/* 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; +} -- cgit v1.2.3