From cb212d0c3fdc76f133ceb1187bed43e9e311945f Mon Sep 17 00:00:00 2001 From: Chad Attermann Date: Fri, 12 Jul 2024 12:59:46 -0600 Subject: [PATCH] Making new/delete operators overridable Added `__attribute__((weak))` weak linking annotation to new and delete operator overrides to allow for user-defined overrides. --- cores/nRF5/new.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cores/nRF5/new.cpp b/cores/nRF5/new.cpp index 541097d0f..3941b3d48 100644 --- a/cores/nRF5/new.cpp +++ b/cores/nRF5/new.cpp @@ -23,26 +23,32 @@ #include #include +__attribute__((weak)) void *operator new(size_t size) { return rtos_malloc(size); } +__attribute__((weak)) void *operator new[](size_t size) { return rtos_malloc(size); } +__attribute__((weak)) void operator delete(void * ptr) { rtos_free(ptr); } +__attribute__((weak)) void operator delete[](void * ptr) { rtos_free(ptr); } +__attribute__((weak)) void operator delete(void * ptr, unsigned int) { rtos_free(ptr); } +__attribute__((weak)) void operator delete[](void * ptr, unsigned int) { rtos_free(ptr); }