Skip to content

Commit 8f7f098

Browse files
author
Erik Kettenburg
committed
added new.cpp and new.h as recommended by RC Navy
1 parent 04cd43f commit 8f7f098

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

hardware/digispark/cores/tiny/new.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include <new.h>
2+
3+
void * operator new(size_t size)
4+
{
5+
return malloc(size);
6+
}
7+
8+
void operator delete(void * ptr)
9+
{
10+
free(ptr);
11+
}
12+
13+
int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);};
14+
void __cxa_guard_release (__guard *g) {*(char *)g = 1;};
15+
void __cxa_guard_abort (__guard *) {};
16+
17+
void __cxa_pure_virtual(void) {};
18+

hardware/digispark/cores/tiny/new.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/* Header to define new/delete operators as they aren't provided by avr-gcc by default
2+
Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453
3+
*/
4+
5+
#ifndef NEW_H
6+
#define NEW_H
7+
8+
#include <stdlib.h>
9+
10+
void * operator new(size_t size);
11+
void operator delete(void * ptr);
12+
13+
__extension__ typedef int __guard __attribute__((mode (__DI__)));
14+
15+
extern "C" int __cxa_guard_acquire(__guard *);
16+
extern "C" void __cxa_guard_release (__guard *);
17+
extern "C" void __cxa_guard_abort (__guard *);
18+
19+
extern "C" void __cxa_pure_virtual(void);
20+
21+
#endif
22+

0 commit comments

Comments
 (0)