From 737f6c28ea8c3d47d5c4fa3fd82da8657df17295 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sat, 6 Feb 2016 02:06:44 +0300 Subject: [PATCH] Remove forced alignment in operators new and delete This alignment prevents umm_malloc to detect buffer overruns which fall within padding introduced by new/new[]. Allocated memory will be aligned by design of umm_malloc, so we don't need to pad anything here. Also fixed some formatting/newlines and removed unused header files. --- cores/esp8266/abi.cpp | 49 +++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/cores/esp8266/abi.cpp b/cores/esp8266/abi.cpp index eeb3be2bb..9143b5bec 100644 --- a/cores/esp8266/abi.cpp +++ b/cores/esp8266/abi.cpp @@ -19,43 +19,41 @@ #include #include #include -extern "C" { -#include "ets_sys.h" -#include "os_type.h" -#include "osapi.h" -#include "mem.h" -} #include #include using __cxxabiv1::__guard; -void *operator new(size_t size) { - size = ((size + 3) & ~((size_t)0x3)); - return os_malloc(size); +void *operator new(size_t size) +{ + return malloc(size); } -void *operator new[](size_t size) { - size = ((size + 3) & ~((size_t)0x3)); - return os_malloc(size); +void *operator new[](size_t size) +{ + return malloc(size); } -void operator delete(void * ptr) { - os_free(ptr); +void operator delete(void * ptr) +{ + free(ptr); } -void operator delete[](void * ptr) { - os_free(ptr); +void operator delete[](void * ptr) +{ + free(ptr); } extern "C" void __cxa_pure_virtual(void) __attribute__ ((__noreturn__)); extern "C" void __cxa_deleted_virtual(void) __attribute__ ((__noreturn__)); -void __cxa_pure_virtual(void) { +void __cxa_pure_virtual(void) +{ panic(); } -void __cxa_deleted_virtual(void) { +void __cxa_deleted_virtual(void) +{ panic(); } @@ -87,20 +85,25 @@ extern "C" void __cxa_guard_abort(__guard* pg) } -namespace std { -void __throw_bad_function_call() { +namespace std +{ +void __throw_bad_function_call() +{ panic(); } -void __throw_length_error(char const*) { +void __throw_length_error(char const*) +{ panic(); } -void __throw_bad_alloc() { +void __throw_bad_alloc() +{ panic(); } -void __throw_logic_error(const char* str) { +void __throw_logic_error(const char* str) +{ panic(); } }