mirror of https://github.com/llvm-mirror/libcxxabi
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			1017 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			HTML
		
	
			
		
		
	
	
			1017 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			HTML
		
	
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 | 
						|
        "http://www.w3.org/TR/html4/strict.dtd">
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
	<title>libc++abi spec</title>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
 | 
						|
<table border=1>
 | 
						|
<tr>
 | 
						|
<th rowspan=2>libc++abi Specification</th>
 | 
						|
<th colspan=3>Completed ?</th>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<th>darwin</th><th>linux</th><th>arm</th>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td  colspan=4 align="center">Memory management</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void* __cxa_allocate_exception(size_t thrown_size) throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Allocates memory to hold the exception to be thrown.
 | 
						|
<tt>thrown_size</tt> is the size of the exception object. Can allocate
 | 
						|
additional memory to hold private data. If memory can not be allocated, call
 | 
						|
<tt>std::terminate()</tt>.
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i> A pointer to the memory allocated for the exception object.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_free_exception(void * thrown_exception) throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Frees memory allocated by <tt>__cxa_allocate_exception</tt>.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void* __cxa_allocate_dependent_exception() throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Allocates memory to hold a "dependent" exception to be thrown.
 | 
						|
<tt>thrown_size</tt> is the size of the exception object. Can allocate
 | 
						|
additional memory to hold private data. If memory can not be allocated, call
 | 
						|
<tt>std::terminate()</tt>.
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i> A pointer to the memory allocated for the exception object.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_free_dependent_exception (void* dependent_exception) throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Frees memory allocated by <tt>__cxa_allocate_dependent_exception</tt>.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td  colspan=4 align="center">Exception Handling</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_throw(void* thrown_exception, struct std::type_info * tinfo, 
 | 
						|
                        void (*dest)(void*));</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void* __cxa_get_exception_ptr(void* exceptionObject) throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Returns:</i> The adjusted pointer to the exception object. (The adjusted
 | 
						|
pointer is typically computed by the personality routine during phase 1 and
 | 
						|
saved in the exception object.)
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void* __cxa_begin_catch(void* exceptionObject) throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
<ul>
 | 
						|
<li>Increment's the exception's handler count.</li>
 | 
						|
<li>Places the exception on the stack of currently-caught exceptions if it is
 | 
						|
not already there, linking the exception to the previous top of the stack.</li>
 | 
						|
<li>Decrements the uncaught_exception count.</li>
 | 
						|
</ul>
 | 
						|
<p>
 | 
						|
If the initialization of the catch parameter is trivial (e,g., there is no
 | 
						|
formal catch parameter, or the parameter has no copy constructor), the calls to
 | 
						|
<tt>__cxa_get_exception_ptr()</tt> and <tt>__cxa_begin_catch()</tt> may be
 | 
						|
combined into a single call to <tt>__cxa_begin_catch()</tt>.
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
When the personality routine encounters a termination condition, it will call
 | 
						|
<tt>__cxa_begin_catch()</tt> to mark the exception as handled and then call
 | 
						|
<tt>terminate()</tt>, which shall not return to its caller.
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i> The adjusted pointer to the exception object.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_end_catch();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Locates the most recently caught exception and decrements its
 | 
						|
handler count. Removes the exception from the caughtÓexception stack, if the
 | 
						|
handler count goes to zero. Destroys the exception if the handler count goes to
 | 
						|
zero, and the exception was not re-thrown by throw. Collaboration between
 | 
						|
__cxa_rethrow() and __cxa_end_catch() is necessary to handle the last point.
 | 
						|
Though implementation-defined, one possibility is for __cxa_rethrow() to set a
 | 
						|
flag in the handlerCount member of the exception header to mark an exception
 | 
						|
being rethrown.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>std::type_info* __cxa_current_exception_type();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Returns:</i> the type of the currently handled exception, or null if there
 | 
						|
are no caught exceptions.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_rethrow();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Marks the exception object on top of the caughtExceptions stack
 | 
						|
(in an implementation-defined way) as being rethrown. If the caughtExceptions
 | 
						|
stack is empty, it calls terminate() (see [C++FDIS] [except.throw], 15.1.8). It
 | 
						|
then returns to the handler that called it, which must call __cxa_end_catch(),
 | 
						|
perform any necessary cleanup, and finally call _Unwind_Resume() to continue
 | 
						|
unwinding.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void* __cxa_current_primary_exception() throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Increments the ownership count of the currently handled
 | 
						|
exception (if any) by one.
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i> the type of the currently handled exception, or null if there
 | 
						|
are no caught exceptions.  
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_decrement_exception_refcount(void* primary_exception) throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Decrements the ownership count of the exception by 1, and on
 | 
						|
zero calls <tt>_Unwind_DeleteException</tt> with the exception object.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>__cxa_eh_globals* __cxa_get_globals() throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Returns:</i> A pointer to the __cxa_eh_globals structure for the current
 | 
						|
thread, initializing it if necessary.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>__cxa_eh_globals* __cxa_get_globals_fast() throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Requires:</i> At least one prior call to __cxa_get_globals has been made from
 | 
						|
the current thread.
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i> A pointer to the __cxa_eh_globals structure for the current
 | 
						|
thread.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_increment_exception_refcount(void* primary_exception) throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Increments the ownership count of the referenced exception.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_rethrow_primary_exception(void* primary_exception);</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Implements <tt>std::rethrow_exception(exception_ptr p)</tt>.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>bool __cxa_uncaught_exception() throw();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>_Unwind_Reason_Code __gxx_personality_v0
 | 
						|
     (int, _Unwind_Action, _Unwind_Exception_Class,
 | 
						|
      struct _Unwind_Exception *, struct _Unwind_Context *);</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td colspan=4 align="center">Guard objects</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>int  __cxa_guard_acquire(uint64_t* guard_object);</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> This function is called before initialization takes place. If
 | 
						|
this function returns 1, either <code>__cxa_guard_release</code> or
 | 
						|
<code>__cxa_guard_abort</code> must be called with the same argument. The first
 | 
						|
byte of the <code>guard_object</code> is not modified by this function.
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
On Darwin the implementation checks for deadlock.
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i> 1 if the initialization is not yet complete, otherwise 0.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_guard_release(uint64_t*);</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Sets the first byte of the guard object to a non-zero value.
 | 
						|
This function is called after initialization is complete. A thread-safe
 | 
						|
implementation will release the mutex acquired by __cxa_guard_acquire after
 | 
						|
setting the first byte of the guard object.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_guard_abort(uint64_t*);</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> This function is called if the initialization terminates by
 | 
						|
throwing an exception.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td colspan=4 align="center">Vector construction and destruction</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void* __cxa_vec_new(size_t element_count, 
 | 
						|
						   size_t element_size, 
 | 
						|
                           size_t padding_size, 
 | 
						|
						   void (*constructor)(void*),
 | 
						|
						   void (*destructor)(void*) );</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void* __cxa_vec_new2(size_t element_count,
 | 
						|
 						    size_t element_size, 
 | 
						|
                            size_t padding_size,
 | 
						|
						    void  (*constructor)(void*),
 | 
						|
						    void  (*destructor)(void*),
 | 
						|
                            void* (*alloc)(size_t), 
 | 
						|
                            void  (*dealloc)(void*) );</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void* __cxa_vec_new3(size_t element_count,
 | 
						|
 						    size_t element_size, 
 | 
						|
                            size_t padding_size,
 | 
						|
						    void  (*constructor)(void*),
 | 
						|
						    void  (*destructor)(void*),
 | 
						|
                            void* (*alloc)(size_t), 
 | 
						|
                            void  (*dealloc)(void*, size_t) );</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_vec_ctor(void*  array_address, 
 | 
						|
                           size_t element_count,
 | 
						|
                           size_t element_size, 
 | 
						|
						   void (*constructor)(void*),
 | 
						|
						   void (*destructor)(void*) );</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_vec_dtor(void*  array_address, 
 | 
						|
                           size_t element_count,
 | 
						|
						   size_t element_size, 
 | 
						|
						   void (*destructor)(void*) );</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_vec_cleanup(void* array_address, 
 | 
						|
                             size_t element_count,
 | 
						|
                             size_t element_size, 
 | 
						|
						     void (*destructor)(void*) );</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_vec_delete(void*  array_address, 
 | 
						|
                             size_t element_size, 
 | 
						|
                             size_t padding_size, 
 | 
						|
						     void  (*destructor)(void*) );</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_vec_delete2(void* array_address, 
 | 
						|
                             size_t element_size, 
 | 
						|
                             size_t padding_size, 
 | 
						|
						     void  (*destructor)(void*),
 | 
						|
                             void  (*dealloc)(void*) );</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_vec_delete3(void* __array_address, 
 | 
						|
                             size_t element_size, 
 | 
						|
                             size_t padding_size, 
 | 
						|
						     void  (*destructor)(void*),
 | 
						|
							 void  (*dealloc) (void*, size_t));</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_vec_cctor(void*  dest_array, 
 | 
						|
							void*  src_array, 
 | 
						|
							size_t element_count, 
 | 
						|
							size_t element_size, 
 | 
						|
							void  (*constructor) (void*, void*), 
 | 
						|
							void  (*destructor)(void*) );</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td colspan=4 align="center">Handlers</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void (*__cxa_new_handler)();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
The currently installed new handler.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void (*__cxa_terminate_handler)();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
The currently installed terminate handler.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void (*__cxa_unexpected_handler)();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<tr>
 | 
						|
<td colspan=4 align="center">Utilities</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>[[noreturn]] void __cxa_bad_cast()</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>  Throws an exception of type <tt>bad_cast</tt>.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>[[noreturn]] void __cxa_bad_typeid();</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>  Throws an exception of type <tt>bad_typeid</tt>.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_pure_virtual(void);</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Called if the user calls a non-overridden pure virtual function,
 | 
						|
which has undefined behavior according to the C++ Standard. Ends the program.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void __cxa_call_unexpected (void*) __attribute__((noreturn));</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> Handles re-checking the exception specification if
 | 
						|
unexpectedHandler throws, and if <tt>bad_exception</tt> needs to be thrown. 
 | 
						|
Called from the compiler.
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>char* __cxa_demangle(const char* mangled_name, 
 | 
						|
							char*       output_buffer,
 | 
						|
							size_t*     length, 
 | 
						|
							int*        status);</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i> 
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
<td>
 | 
						|
<p>
 | 
						|
<code>void*
 | 
						|
  __dynamic_cast(const void* __src_ptr,
 | 
						|
		 const __class_type_info* __src_type,
 | 
						|
		 const __class_type_info* __dst_type,
 | 
						|
		 ptrdiff_t __src2dst);</code>
 | 
						|
</p>
 | 
						|
<blockquote>
 | 
						|
<p>
 | 
						|
<i>Effects:</i>
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
<i>Returns:</i>
 | 
						|
</p>
 | 
						|
</blockquote>
 | 
						|
</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
<td>✓</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
 | 
						|
<!-- 
 | 
						|
000000000000d570 (__DATA,__const) external typeinfo for char32_t
 | 
						|
000000000000cfd0 (__DATA,__const) external typeinfo for std::nullptr_t
 | 
						|
000000000000d520 (__DATA,__const) external typeinfo for char16_t
 | 
						|
000000000000d580 (__DATA,__const) external typeinfo for char32_t*
 | 
						|
000000000000cfe0 (__DATA,__const) external typeinfo for std::nullptr_t*
 | 
						|
000000000000d530 (__DATA,__const) external typeinfo for char16_t*
 | 
						|
000000000000d5a0 (__DATA,__const) external typeinfo for char32_t const*
 | 
						|
000000000000d000 (__DATA,__const) external typeinfo for std::nullptr_t const*
 | 
						|
000000000000d550 (__DATA,__const) external typeinfo for char16_t const*
 | 
						|
000000000000d190 (__DATA,__const) external typeinfo for signed char const*
 | 
						|
000000000000d050 (__DATA,__const) external typeinfo for bool const*
 | 
						|
000000000000d0f0 (__DATA,__const) external typeinfo for char const*
 | 
						|
000000000000d4b0 (__DATA,__const) external typeinfo for double const*
 | 
						|
000000000000d500 (__DATA,__const) external typeinfo for long double const*
 | 
						|
000000000000d460 (__DATA,__const) external typeinfo for float const*
 | 
						|
000000000000d140 (__DATA,__const) external typeinfo for unsigned char const*
 | 
						|
000000000000d280 (__DATA,__const) external typeinfo for int const*
 | 
						|
000000000000d2d0 (__DATA,__const) external typeinfo for unsigned int const*
 | 
						|
000000000000d320 (__DATA,__const) external typeinfo for long const*
 | 
						|
000000000000d370 (__DATA,__const) external typeinfo for unsigned long const*
 | 
						|
000000000000d1e0 (__DATA,__const) external typeinfo for short const*
 | 
						|
000000000000d230 (__DATA,__const) external typeinfo for unsigned short const*
 | 
						|
000000000000cfb0 (__DATA,__const) external typeinfo for void const*
 | 
						|
000000000000d0a0 (__DATA,__const) external typeinfo for wchar_t const*
 | 
						|
000000000000d3c0 (__DATA,__const) external typeinfo for long long const*
 | 
						|
000000000000d410 (__DATA,__const) external typeinfo for unsigned long long const*
 | 
						|
000000000000d170 (__DATA,__const) external typeinfo for signed char*
 | 
						|
000000000000d030 (__DATA,__const) external typeinfo for bool*
 | 
						|
000000000000d0d0 (__DATA,__const) external typeinfo for char*
 | 
						|
000000000000d490 (__DATA,__const) external typeinfo for double*
 | 
						|
000000000000d4e0 (__DATA,__const) external typeinfo for long double*
 | 
						|
000000000000d440 (__DATA,__const) external typeinfo for float*
 | 
						|
000000000000d120 (__DATA,__const) external typeinfo for unsigned char*
 | 
						|
000000000000d260 (__DATA,__const) external typeinfo for int*
 | 
						|
000000000000d2b0 (__DATA,__const) external typeinfo for unsigned int*
 | 
						|
000000000000d300 (__DATA,__const) external typeinfo for long*
 | 
						|
000000000000d350 (__DATA,__const) external typeinfo for unsigned long*
 | 
						|
000000000000d1c0 (__DATA,__const) external typeinfo for short*
 | 
						|
000000000000d210 (__DATA,__const) external typeinfo for unsigned short*
 | 
						|
000000000000cf90 (__DATA,__const) external typeinfo for void*
 | 
						|
000000000000d080 (__DATA,__const) external typeinfo for wchar_t*
 | 
						|
000000000000d3a0 (__DATA,__const) external typeinfo for long long*
 | 
						|
000000000000d3f0 (__DATA,__const) external typeinfo for unsigned long long*
 | 
						|
000000000000d160 (__DATA,__const) external typeinfo for signed char
 | 
						|
000000000000d020 (__DATA,__const) external typeinfo for bool
 | 
						|
000000000000d0c0 (__DATA,__const) external typeinfo for char
 | 
						|
000000000000d480 (__DATA,__const) external typeinfo for double
 | 
						|
000000000000d4d0 (__DATA,__const) external typeinfo for long double
 | 
						|
000000000000d430 (__DATA,__const) external typeinfo for float
 | 
						|
000000000000d110 (__DATA,__const) external typeinfo for unsigned char
 | 
						|
000000000000d250 (__DATA,__const) external typeinfo for int
 | 
						|
000000000000d2a0 (__DATA,__const) external typeinfo for unsigned int
 | 
						|
000000000000d2f0 (__DATA,__const) external typeinfo for long
 | 
						|
000000000000d340 (__DATA,__const) external typeinfo for unsigned long
 | 
						|
000000000000d1b0 (__DATA,__const) external typeinfo for short
 | 
						|
000000000000d200 (__DATA,__const) external typeinfo for unsigned short
 | 
						|
000000000000cf78 (__DATA,__const) external typeinfo for void
 | 
						|
000000000000d070 (__DATA,__const) external typeinfo for wchar_t
 | 
						|
000000000000d390 (__DATA,__const) external typeinfo for long long
 | 
						|
000000000000d3e0 (__DATA,__const) external typeinfo for unsigned long long
 | 
						|
00000000000093f9 (__TEXT,__cstring) external typeinfo name for char32_t
 | 
						|
0000000000009351 (__TEXT,__cstring) external typeinfo name for std::nullptr_t
 | 
						|
00000000000093ed (__TEXT,__cstring) external typeinfo name for char16_t
 | 
						|
0000000000009470 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__enum_type_info
 | 
						|
0000000000009410 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__array_type_info
 | 
						|
0000000000009290 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__class_type_info
 | 
						|
00000000000094a0 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__pbase_type_info
 | 
						|
00000000000094d0 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__pointer_type_info
 | 
						|
0000000000009440 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__function_type_info
 | 
						|
00000000000092c0 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__si_class_type_info
 | 
						|
00000000000092f0 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__vmi_class_type_info
 | 
						|
0000000000009320 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__fundamental_type_info
 | 
						|
0000000000009500 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__pointer_to_member_type_info
 | 
						|
00000000000093fc (__TEXT,__cstring) external typeinfo name for char32_t*
 | 
						|
0000000000009354 (__TEXT,__cstring) external typeinfo name for std::nullptr_t*
 | 
						|
00000000000093f0 (__TEXT,__cstring) external typeinfo name for char16_t*
 | 
						|
0000000000009400 (__TEXT,__cstring) external typeinfo name for char32_t const*
 | 
						|
0000000000009358 (__TEXT,__cstring) external typeinfo name for std::nullptr_t const*
 | 
						|
00000000000093f4 (__TEXT,__cstring) external typeinfo name for char16_t const*
 | 
						|
0000000000009386 (__TEXT,__cstring) external typeinfo name for signed char const*
 | 
						|
0000000000009362 (__TEXT,__cstring) external typeinfo name for bool const*
 | 
						|
0000000000009374 (__TEXT,__cstring) external typeinfo name for char const*
 | 
						|
00000000000093e0 (__TEXT,__cstring) external typeinfo name for double const*
 | 
						|
00000000000093e9 (__TEXT,__cstring) external typeinfo name for long double const*
 | 
						|
00000000000093d7 (__TEXT,__cstring) external typeinfo name for float const*
 | 
						|
000000000000937d (__TEXT,__cstring) external typeinfo name for unsigned char const*
 | 
						|
00000000000093a1 (__TEXT,__cstring) external typeinfo name for int const*
 | 
						|
00000000000093aa (__TEXT,__cstring) external typeinfo name for unsigned int const*
 | 
						|
00000000000093b3 (__TEXT,__cstring) external typeinfo name for long const*
 | 
						|
00000000000093bc (__TEXT,__cstring) external typeinfo name for unsigned long const*
 | 
						|
000000000000938f (__TEXT,__cstring) external typeinfo name for short const*
 | 
						|
0000000000009398 (__TEXT,__cstring) external typeinfo name for unsigned short const*
 | 
						|
000000000000934d (__TEXT,__cstring) external typeinfo name for void const*
 | 
						|
000000000000936b (__TEXT,__cstring) external typeinfo name for wchar_t const*
 | 
						|
00000000000093c5 (__TEXT,__cstring) external typeinfo name for long long const*
 | 
						|
00000000000093ce (__TEXT,__cstring) external typeinfo name for unsigned long long const*
 | 
						|
0000000000009383 (__TEXT,__cstring) external typeinfo name for signed char*
 | 
						|
000000000000935f (__TEXT,__cstring) external typeinfo name for bool*
 | 
						|
0000000000009371 (__TEXT,__cstring) external typeinfo name for char*
 | 
						|
00000000000093dd (__TEXT,__cstring) external typeinfo name for double*
 | 
						|
00000000000093e6 (__TEXT,__cstring) external typeinfo name for long double*
 | 
						|
00000000000093d4 (__TEXT,__cstring) external typeinfo name for float*
 | 
						|
000000000000937a (__TEXT,__cstring) external typeinfo name for unsigned char*
 | 
						|
000000000000939e (__TEXT,__cstring) external typeinfo name for int*
 | 
						|
00000000000093a7 (__TEXT,__cstring) external typeinfo name for unsigned int*
 | 
						|
00000000000093b0 (__TEXT,__cstring) external typeinfo name for long*
 | 
						|
00000000000093b9 (__TEXT,__cstring) external typeinfo name for unsigned long*
 | 
						|
000000000000938c (__TEXT,__cstring) external typeinfo name for short*
 | 
						|
0000000000009395 (__TEXT,__cstring) external typeinfo name for unsigned short*
 | 
						|
000000000000934a (__TEXT,__cstring) external typeinfo name for void*
 | 
						|
0000000000009368 (__TEXT,__cstring) external typeinfo name for wchar_t*
 | 
						|
00000000000093c2 (__TEXT,__cstring) external typeinfo name for long long*
 | 
						|
00000000000093cb (__TEXT,__cstring) external typeinfo name for unsigned long long*
 | 
						|
0000000000009381 (__TEXT,__cstring) external typeinfo name for signed char
 | 
						|
000000000000935d (__TEXT,__cstring) external typeinfo name for bool
 | 
						|
000000000000936f (__TEXT,__cstring) external typeinfo name for char
 | 
						|
00000000000093db (__TEXT,__cstring) external typeinfo name for double
 | 
						|
00000000000093e4 (__TEXT,__cstring) external typeinfo name for long double
 | 
						|
00000000000093d2 (__TEXT,__cstring) external typeinfo name for float
 | 
						|
0000000000009378 (__TEXT,__cstring) external typeinfo name for unsigned char
 | 
						|
000000000000939c (__TEXT,__cstring) external typeinfo name for int
 | 
						|
00000000000093a5 (__TEXT,__cstring) external typeinfo name for unsigned int
 | 
						|
00000000000093ae (__TEXT,__cstring) external typeinfo name for long
 | 
						|
00000000000093b7 (__TEXT,__cstring) external typeinfo name for unsigned long
 | 
						|
000000000000938a (__TEXT,__cstring) external typeinfo name for short
 | 
						|
0000000000009393 (__TEXT,__cstring) external typeinfo name for unsigned short
 | 
						|
0000000000009348 (__TEXT,__cstring) external typeinfo name for void
 | 
						|
0000000000009366 (__TEXT,__cstring) external typeinfo name for wchar_t
 | 
						|
00000000000093c0 (__TEXT,__cstring) external typeinfo name for long long
 | 
						|
00000000000093c9 (__TEXT,__cstring) external typeinfo name for unsigned long long
 | 
						|
000000000000ce30 (__DATA,__const) external vtable for __cxxabiv1::__enum_type_info
 | 
						|
000000000000cdb0 (__DATA,__const) external vtable for __cxxabiv1::__array_type_info
 | 
						|
000000000000cbe0 (__DATA,__const) external vtable for __cxxabiv1::__class_type_info
 | 
						|
000000000000ce70 (__DATA,__const) external vtable for __cxxabiv1::__pbase_type_info
 | 
						|
000000000000cec0 (__DATA,__const) external vtable for __cxxabiv1::__pointer_type_info
 | 
						|
000000000000cdf0 (__DATA,__const) external vtable for __cxxabiv1::__function_type_info
 | 
						|
000000000000cc40 (__DATA,__const) external vtable for __cxxabiv1::__si_class_type_info
 | 
						|
000000000000cca0 (__DATA,__const) external vtable for __cxxabiv1::__vmi_class_type_info
 | 
						|
000000000000cd70 (__DATA,__const) external vtable for __cxxabiv1::__fundamental_type_info
 | 
						|
000000000000cf10 (__DATA,__const) external vtable for __cxxabiv1::__pointer_to_member_type_info
 | 
						|
 | 
						|
                 (undefined) external ___stack_chk_fail (from libSystem)
 | 
						|
                 (undefined) external ___stack_chk_guard (from libSystem)
 | 
						|
                 (undefined) external ___stderrp (from libSystem)
 | 
						|
                 (undefined) external ___strcat_chk (from libSystem)
 | 
						|
                 (undefined) external _abort (from libSystem)
 | 
						|
                 (undefined) external _calloc (from libSystem)
 | 
						|
                 (undefined) external _dlsym (from libSystem)
 | 
						|
                 (undefined) external _free (from libSystem)
 | 
						|
                 (undefined) external _malloc (from libSystem)
 | 
						|
                 (undefined) external _memcpy (from libSystem)
 | 
						|
                 (undefined) external _pthread_getspecific (from libSystem)
 | 
						|
                 (undefined) external _pthread_key_create (from libSystem)
 | 
						|
                 (undefined) external _pthread_mutex_init (from libSystem)
 | 
						|
                 (undefined) external _pthread_mutex_lock (from libSystem)
 | 
						|
                 (undefined) external _pthread_mutex_unlock (from libSystem)
 | 
						|
                 (undefined) external _pthread_mutexattr_init (from libSystem)
 | 
						|
                 (undefined) external _pthread_mutexattr_settype (from libSystem)
 | 
						|
                 (undefined) external _pthread_once (from libSystem)
 | 
						|
                 (undefined) external _pthread_setspecific (from libSystem)
 | 
						|
                 (undefined) external _realloc (from libSystem)
 | 
						|
                 (undefined) external _strcmp (from libSystem)
 | 
						|
                 (undefined) external _strcpy (from libSystem)
 | 
						|
                 (undefined) external _strlen (from libSystem)
 | 
						|
                 (undefined) external _strncmp (from libSystem)
 | 
						|
                 (undefined) external _vasprintf (from libSystem)
 | 
						|
                 (undefined) external _vfprintf (from libSystem)
 | 
						|
                 (undefined) external dyld_stub_binder (from libSystem)
 | 
						|
                 (undefined) external __Unwind_DeleteException (from libSystem)
 | 
						|
                 (undefined) external __Unwind_GetIP (from libSystem)
 | 
						|
                 (undefined) external __Unwind_GetLanguageSpecificData (from libSystem)
 | 
						|
                 (undefined) external __Unwind_GetRegionStart (from libSystem)
 | 
						|
                 (undefined) external __Unwind_RaiseException (from libSystem)
 | 
						|
                 (undefined) external __Unwind_Resume_or_Rethrow (from libSystem)
 | 
						|
                 (undefined) external __Unwind_SetGR (from libSystem)
 | 
						|
                 (undefined) external __Unwind_SetIP (from libSystem)
 | 
						|
                 (undefined) external ___bzero (from libSystem)
 | 
						|
 -->
 | 
						|
 | 
						|
</body>
 | 
						|
</html>
 |