diff options
author | FreeArtMan <dos21h@gmail.com> | 2019-09-25 19:17:09 +0100 |
---|---|---|
committer | FreeArtMan <dos21h@gmail.com> | 2019-09-25 19:17:09 +0100 |
commit | 3e187c094f12ef41ea6de2f55d128c3e037b5c12 (patch) | |
tree | f0dbbc5df260532e284ca5264297d0a8044eaeb4 /__cpp.h | |
parent | bbd73385a0db271b457c63e4d6bab54f581410f9 (diff) | |
download | ihe-3e187c094f12ef41ea6de2f55d128c3e037b5c12.tar.gz ihe-3e187c094f12ef41ea6de2f55d128c3e037b5c12.zip |
Untested version, recompiled with new buf library and with c+
Diffstat (limited to '__cpp.h')
-rw-r--r-- | __cpp.h | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -0,0 +1,30 @@ +#include <unistd.h> + +extern "C" void* emulate_cc_new(unsigned long len) { \ + void *p = malloc(len); + if (p == 0) { + /* Don't use stdio (e.g. fputs), because that may want to allocate more + * memory. + */ + (void)!write(2, "out of memory\n", 14); + abort(); + } + return p; +} +extern "C" void emulate_cc_delete(void* p) { + if (p != 0) + free(p); +} + +extern "C" void emulate_cc_delete2(void* p, unsigned long len) { + if (p != 0) + free(p); +} + +void* operator new (unsigned long) __attribute__((alias("emulate_cc_new"))); +void* operator new[](unsigned long) __attribute__((alias("emulate_cc_new"))); +void operator delete (void* p) __attribute__((alias("emulate_cc_delete"))); +void operator delete[](void* p) __attribute__((alias("emulate_cc_delete"))); +void operator delete (void* p, unsigned long len) __attribute__((alias("emulate_cc_delete2"))); +void operator delete[](void* p, unsigned long len) __attribute__((alias("emulate_cc_delete2"))); +void* __cxa_pure_virtual = 0;
\ No newline at end of file |