diff --git a/abi-eh.html b/abi-eh.html index d7ad49f..b7e8d7f 100644 --- a/abi-eh.html +++ b/abi-eh.html @@ -2077,6 +2077,52 @@
+Vaguely, the process of throwing an exception consists of +three independent parts: +
+Sometimes it's desirable to do p.1 and p.2 with leaving p.3 for later: this is what
+std::exception_ptr does.
+To better support such use cases implementors of the ABI are encouraged to provide a
+__cxa_init_primary_exception function, which implements p.2.
+
+
+The arguments are:
+
+ void* __cxa_init_primary_exception (void *thrown_exception, std::type_info *tinfo, void (*dest) (void *) );
+
+
+
std::type_info pointer,
+ giving the static type of the throw argument
+ as a std::type_info pointer,
+ used for matching potential catch sites to the thrown exception.
++
__cxa_throw,__cxa_init_primary_exception is expected to be used as a subroutine of __cxa_throw.
+
+
+
+Collaboration between __cxa_init_primary_exception() and
+whichever way std::rethrow_exception is implemented is necessary to handle the p.3 (deferred unwinding).
+
+