On 03/08/16 10:48 +0100, Jonathan Wakely wrote:
On 28/07/16 10:20 +0300, Gleb Natapov wrote:
+extern "C" __cxa_refcounted_exception*
+__cxxabiv1::__cxa_init_primary_exception(void *obj, const std::type_info
*tinfo,
+ void (_GLIBCXX_CDTOR_CALLABI *dest)
(void *))
+{
+ __cxa_refcounted_exception *header
+ = __get_refcounted_exception_header_from_obj (obj);
+ header->referenceCount = 0;
+ header->exc.exceptionType = tinfo;
+ header->exc.exceptionDestructor = dest;
+ header->exc.unexpectedHandler = std::get_unexpected ();
+ header->exc.terminateHandler = std::get_terminate ();
+ __GXX_INIT_PRIMARY_EXCEPTION_CLASS(header->exc.unwindHeader.exception_class);
+ header->exc.unwindHeader.exception_cleanup = __gxx_exception_cleanup;
+
+ return header;
+}
I'd like to see any additions like this function discussed on the C++
ABI list, so we at least have an idea whether other vendors would
consider implementing it too.
Oops, I meant to delete that comment. Please ignore it!
You're only suggesting a new function in the "GNU extensions" part of
our header, and it's only needed in our make_exception_ptr function,
not required by any of the actual runtime files in libsupc++. So
there's no need for it to be common to other implementations of the
ABI.