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

(cherry picked from commit 297a9e552b9a5adf07d195eae9649b0758f395af)
This commit is contained in:
John Baldwin 2024-08-21 13:37:48 -04:00 committed by Ed Maste
parent 4a894adc41
commit a1269171d7
2 changed files with 17 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

@ -287,6 +287,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++" {