From 9e480a8d16ae0f55db57200496aacadfef1a52ef Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Sat, 30 Nov 2024 21:33:09 +0100 Subject: [PATCH] [ext] Add more operator new/delete overloads missing on AVRs --- .github/workflows/linux.yml | 4 ++-- ext/gcc/new_delete.cpp.in | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 1d0d4cdca6..257023edfb 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -262,11 +262,11 @@ jobs: if: always() run: | (cd test && make compile-arduino-uno) - (cd test && make compile-arduino-nano_A compile-arduino-nano_C compile-arduino-nano_D compile-arduino-nano_E compile-arduino-nano_G) + (cd test && make compile-arduino-nano_A compile-arduino-nano_B compile-arduino-nano_C compile-arduino-nano_D compile-arduino-nano_E compile-arduino-nano_F compile-arduino-nano_G) - name: Compile AVR Unittests ATmega if: always() run: | - (cd test && make compile-mega-2560-pro_A compile-mega-2560-pro_B) + (cd test && make compile-mega-2560-pro_A compile-mega-2560-pro_B compile-mega-2560-pro_C) - name: Quick compile HAL for AVR Devices if: always() run: | diff --git a/ext/gcc/new_delete.cpp.in b/ext/gcc/new_delete.cpp.in index e06b2e358b..d5f851918d 100644 --- a/ext/gcc/new_delete.cpp.in +++ b/ext/gcc/new_delete.cpp.in @@ -88,6 +88,11 @@ void* operator new (std::size_t size, const std::nothrow_t&) noexcept { return modm_weak void* operator new[](std::size_t size, const std::nothrow_t&) noexcept { return malloc(size); } +modm_weak +void* operator new (std::size_t size, std::align_val_t) { return new_assert(size); } +modm_weak +void* operator new[](std::size_t size, std::align_val_t) { return new_assert(size); } + %% if with_memory_traits modm_weak void* operator new (std::size_t size, modm::MemoryTraits traits) { return new_assert(size, traits); } @@ -126,3 +131,8 @@ modm_weak void operator delete (void* ptr, const std::nothrow_t&) noexcept { operator_delete(ptr); } modm_weak void operator delete[](void* ptr, const std::nothrow_t&) noexcept { operator_delete(ptr); } + +modm_weak +void operator delete (void* ptr, std::size_t, std::align_val_t) noexcept { operator_delete(ptr); } +modm_weak +void operator delete[](void* ptr, std::size_t, std::align_val_t) noexcept { operator_delete(ptr); }