From 18d5799e209b04907e69a6446f95a9202b0c9ca7 Mon Sep 17 00:00:00 2001 From: Karl Semich <0xloem@gmail.com> Date: Sat, 13 Jan 2018 13:32:06 +0100 Subject: [PATCH 1/2] Update c++ compilation standard to 2014 from 2011 Requires a recent arm toolchain to be used. Based on PR #191 proposed by @xloem Updated using @lacklustrlabs suggestion: Make the '-std=gnu++14' flag a variable using 'compiler.cpp.flags' variable. This way it is easy to change the -std setting in platform.local.txt without overriding anything else. platform.local.txt: compiler.cpp.std=gnu++11 Signed-off-by: Frederic Pillon --- platform.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index 94a3f44dc5..f7735b45cf 100644 --- a/platform.txt +++ b/platform.txt @@ -35,7 +35,7 @@ compiler.S.flags={compiler.extra_flags} -c -x assembler-with-cpp {compiler.stm.e compiler.c.flags={compiler.extra_flags} -c {build.flags.optimize} {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD {compiler.stm.extra_include} -compiler.cpp.flags={compiler.extra_flags} -c {build.flags.optimize} {compiler.warning_flags} -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD {compiler.stm.extra_include} +compiler.cpp.flags={compiler.extra_flags} -c {build.flags.optimize} {compiler.warning_flags} -std={compiler.cpp.std} -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD {compiler.stm.extra_include} compiler.ar.flags=rcs @@ -57,6 +57,7 @@ build.ldscript=ldscript.ld compiler.c.extra_flags= compiler.c.elf.extra_flags= compiler.cpp.extra_flags= +compiler.cpp.std=gnu++14 compiler.S.extra_flags= compiler.ar.extra_flags= compiler.elf2hex.extra_flags= From 9f9946f068636dc945fa23a913993d6435776c26 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Sun, 14 Jan 2018 15:54:51 +0100 Subject: [PATCH 2/2] Fix for C++ 14 delete operator See: https://isocpp.org/files/papers/n3778.html Signed-off-by: Frederic Pillon --- cores/arduino/new.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cores/arduino/new.cpp b/cores/arduino/new.cpp index f18977585e..0785ba75e6 100644 --- a/cores/arduino/new.cpp +++ b/cores/arduino/new.cpp @@ -34,3 +34,10 @@ void operator delete[](void * ptr) { free(ptr); } +void operator delete(void * ptr, size_t /*size*/) { + free(ptr); +} + +void operator delete[](void * ptr, size_t /*size*/) { + free(ptr); +} \ No newline at end of file