From 244a9b8514d066a457574b73ef82cc5925148fc2 Mon Sep 17 00:00:00 2001 From: Davide Grohmann Date: Mon, 15 Aug 2022 17:11:54 +0200 Subject: Make sure that unused symbols are dropped when using GCC Add compiler and linker options to add each symbols in its own section so unused one can be dropped. Also adds missing noexcept Change-Id: I9143ae5865c4a071c6e09d14eb08ce3069b4b2db --- applications/message_handler/lib/freertos_allocator.cpp | 8 ++++---- cmake/toolchain/arm-none-eabi-gcc.cmake | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/applications/message_handler/lib/freertos_allocator.cpp b/applications/message_handler/lib/freertos_allocator.cpp index c7fdba6..883ada8 100644 --- a/applications/message_handler/lib/freertos_allocator.cpp +++ b/applications/message_handler/lib/freertos_allocator.cpp @@ -28,18 +28,18 @@ void *operator new[](size_t size) { return pvPortMalloc(size); } -void operator delete(void *ptr) { +void operator delete(void *ptr) noexcept { vPortFree(ptr); } -void operator delete(void *ptr, std::size_t) { +void operator delete(void *ptr, std::size_t) noexcept { vPortFree(ptr); } -void operator delete[](void *ptr) { +void operator delete[](void *ptr) noexcept { vPortFree(ptr); } -void operator delete[](void *ptr, std::size_t) { +void operator delete[](void *ptr, std::size_t) noexcept { vPortFree(ptr); } diff --git a/cmake/toolchain/arm-none-eabi-gcc.cmake b/cmake/toolchain/arm-none-eabi-gcc.cmake index ce54cd5..492abc5 100644 --- a/cmake/toolchain/arm-none-eabi-gcc.cmake +++ b/cmake/toolchain/arm-none-eabi-gcc.cmake @@ -52,7 +52,9 @@ add_compile_options( -mcpu=${GCC_CPU} -mthumb "$<$:-gdwarf-3>" - "$<$:-fno-unwind-tables;-fno-rtti;-fno-exceptions>") + "$<$:-fno-unwind-tables;-fno-rtti;-fno-exceptions>" + -fdata-sections + -ffunction-sections) # Compile defines add_compile_definitions( @@ -88,6 +90,8 @@ if (FLOAT) add_link_options(-mfloat-abi=${FLOAT}) endif() +add_link_options(LINKER:--nmagic,--gc-sections) + # Compilation warnings add_compile_options( -Wall -- cgit v1.2.1