libcxxrt: Add a stub implementation of __cxa_call_terminate

This function is called by GCC 14 if a destructor invoked during
exception unwinding throws an exception.

Reviewed by:	emaste
Obtained from:	libcxxrt commit 391a3dcc1054e18c2f0dff4e14d6d79ac95399d7
Differential Revision:	https://reviews.freebsd.org/D46004
This commit is contained in:
John Baldwin 2024-08-21 13:37:48 -04:00
parent 47656cc1ef
commit 297a9e552b
3 changed files with 21 additions and 0 deletions

View File

@ -1433,6 +1433,19 @@ extern "C" void __cxa_call_unexpected(void*exception)
abort();
}
/**
* ABI function, called when an object destructor exits due to an
* exception during stack unwinding.
*
* This function does not return.
*/
extern "C" void __cxa_call_terminate(void *exception) throw()
{
std::terminate();
// Should not be reached.
abort();
}
/**
* ABI function, returns the adjusted pointer to the exception object.
*/

View File

@ -253,6 +253,10 @@ CXXABI_1.3.11 {
__cxa_init_primary_exception;
} CXXABI_1.3.9;
CXXABI_1.3.15 {
__cxa_call_terminate;
} CXXABI_1.3.11;
CXXRT_1.0 {
extern "C++" {

View File

@ -254,6 +254,10 @@ CXXABI_1.3.11 {
__cxa_init_primary_exception;
} CXXABI_1.3.9;
CXXABI_1.3.15 {
__cxa_call_terminate;
} CXXABI_1.3.11;
CXXRT_1.0 {
extern "C++" {