From 56dda1007d15ce808be98d35fdf595e96c165a71 Mon Sep 17 00:00:00 2001 From: Erik Tylek Kettenburg Date: Sat, 3 Jan 2015 14:29:04 -0800 Subject: [PATCH] add new.h/cpp --- hardware/digistump/avr/cores/pro/new.cpp | 18 ++++++++++++++++++ hardware/digistump/avr/cores/pro/new.h | 22 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 hardware/digistump/avr/cores/pro/new.cpp create mode 100644 hardware/digistump/avr/cores/pro/new.h diff --git a/hardware/digistump/avr/cores/pro/new.cpp b/hardware/digistump/avr/cores/pro/new.cpp new file mode 100644 index 0000000..0f6d422 --- /dev/null +++ b/hardware/digistump/avr/cores/pro/new.cpp @@ -0,0 +1,18 @@ +#include + +void * operator new(size_t size) +{ + return malloc(size); +} + +void operator delete(void * ptr) +{ + free(ptr); +} + +int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);}; +void __cxa_guard_release (__guard *g) {*(char *)g = 1;}; +void __cxa_guard_abort (__guard *) {}; + +void __cxa_pure_virtual(void) {}; + diff --git a/hardware/digistump/avr/cores/pro/new.h b/hardware/digistump/avr/cores/pro/new.h new file mode 100644 index 0000000..cd940ce --- /dev/null +++ b/hardware/digistump/avr/cores/pro/new.h @@ -0,0 +1,22 @@ +/* Header to define new/delete operators as they aren't provided by avr-gcc by default + Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453 + */ + +#ifndef NEW_H +#define NEW_H + +#include + +void * operator new(size_t size); +void operator delete(void * ptr); + +__extension__ typedef int __guard __attribute__((mode (__DI__))); + +extern "C" int __cxa_guard_acquire(__guard *); +extern "C" void __cxa_guard_release (__guard *); +extern "C" void __cxa_guard_abort (__guard *); + +extern "C" void __cxa_pure_virtual(void); + +#endif +