Question about std::terminate() in __cxa_pure_virtual()

Tony Liu mrtoniliu@gmail.com
Thu May 21 08:28:00 GMT 2015


Hi,

Currently the implementation of __cxa_pure_vitual() function is:
extern "C" void
__cxxabiv1::__cxa_pure_virtual (void)
{
   writestr ("pure virtual method called\n");
   std::terminate ();
}

However this version will result to quite large code size of user
programme, if use std::abort() instead of std::terminate(), the code
size drops significantly: 47080 vs 3056 in my case.
In the embedded system, the size of memory are quite limited. Would it
be possible to replace the terminate() by abort(), or replace it just
in some cases (e.g. -fno-exceptions enabled while building libstdc++
)?

Thanks,
Tony



More information about the Libstdc++ mailing list