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

Jonathan Wakely jwakely.gcc@gmail.com
Thu May 21 09:04:00 GMT 2015


On 21 May 2015 at 09:28, Tony Liu wrote:
> 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++
> )?

If you build GCC with --disable-libstdcxx-verbose then the terminate
handler is simply std::abort, are you doing that?



More information about the Libstdc++ mailing list