From 632d0f574a1f0f34af4e111def72307ba13b46ac Mon Sep 17 00:00:00 2001 From: DrZiplok Date: Tue, 28 Dec 2010 23:33:27 +0000 Subject: [PATCH] Don't actually implement __cxa_pure_virtual, we'd prefer to have link-time errors rather than classes with pure virtual functions. git-svn-id: https://arducopter.googlecode.com/svn/trunk@1341 f9c3cf11-9bcb-44bc-f272-b75c42450872 --- libraries/AP_Common/c++.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libraries/AP_Common/c++.cpp b/libraries/AP_Common/c++.cpp index 307287694a..b769728097 100644 --- a/libraries/AP_Common/c++.cpp +++ b/libraries/AP_Common/c++.cpp @@ -11,20 +11,24 @@ #include "c++.h" #include "WProgram.h" -void * operator new(size_t size) +void * operator new(size_t size) { return(calloc(size, 1)); } -void operator delete(void *p) +void operator delete(void *p) { if (p) free(p); } -extern "C" void __cxa_pure_virtual() +#if 0 +// We should never need this, as classes should never be defined +// with pure virtual member functions +extern "C" void __cxa_pure_virtual() { - while (1); + while (1); } +#endif void * operator new[](size_t size) { @@ -38,17 +42,17 @@ void operator delete[](void * ptr) __extension__ typedef int __guard __attribute__((mode (__DI__))); -int __cxa_guard_acquire(__guard *g) +int __cxa_guard_acquire(__guard *g) { return !*(char *)(g); }; -void __cxa_guard_release (__guard *g) +void __cxa_guard_release (__guard *g) { *(char *)g = 1; }; -void __cxa_guard_abort (__guard *) {}; +void __cxa_guard_abort (__guard *) {}; // free memory extern unsigned int __bss_end;