150
|
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
2 "http://www.w3.org/TR/html4/strict.dtd">
|
|
3 <html>
|
|
4 <head>
|
|
5 <title>libc++abi spec</title>
|
|
6 </head>
|
|
7 <body>
|
|
8
|
|
9 <table border=1>
|
|
10 <tr>
|
|
11 <th rowspan=2>libc++abi Specification</th>
|
|
12 <th colspan=3>Completed ?</th>
|
|
13 </tr>
|
|
14
|
|
15 <tr>
|
|
16 <th>darwin</th><th>linux</th><th>arm</th>
|
|
17 </tr>
|
|
18
|
|
19 <tr>
|
|
20 <td colspan=4 align="center">Memory management</td>
|
|
21 </tr>
|
|
22
|
|
23 <tr>
|
|
24 <td>
|
|
25 <p>
|
|
26 <code>void* __cxa_allocate_exception(size_t thrown_size) throw();</code>
|
|
27 </p>
|
|
28 <blockquote>
|
|
29 <p>
|
|
30 <i>Effects:</i> Allocates memory to hold the exception to be thrown.
|
|
31 <tt>thrown_size</tt> is the size of the exception object. Can allocate
|
|
32 additional memory to hold private data. If memory can not be allocated, call
|
|
33 <tt>std::terminate()</tt>.
|
|
34 </p>
|
|
35 <p>
|
|
36 <i>Returns:</i> A pointer to the memory allocated for the exception object.
|
|
37 </p>
|
|
38 </blockquote>
|
|
39 </td>
|
|
40 <td>✓</td>
|
|
41 <td>✓</td>
|
|
42 <td>✓</td>
|
|
43 </tr>
|
|
44
|
|
45 <tr>
|
|
46 <td>
|
|
47 <p>
|
|
48 <code>void __cxa_free_exception(void * thrown_exception) throw();</code>
|
|
49 </p>
|
|
50 <blockquote>
|
|
51 <p>
|
|
52 <i>Effects:</i> Frees memory allocated by <tt>__cxa_allocate_exception</tt>.
|
|
53 </p>
|
|
54 </blockquote>
|
|
55 </td>
|
|
56 <td>✓</td>
|
|
57 <td>✓</td>
|
|
58 <td>✓</td>
|
|
59 </tr>
|
|
60
|
|
61 <tr>
|
|
62 <td>
|
|
63 <p>
|
|
64 <code>void* __cxa_allocate_dependent_exception() throw();</code>
|
|
65 </p>
|
|
66 <blockquote>
|
|
67 <p>
|
|
68 <i>Effects:</i> Allocates memory to hold a "dependent" exception to be thrown.
|
|
69 <tt>thrown_size</tt> is the size of the exception object. Can allocate
|
|
70 additional memory to hold private data. If memory can not be allocated, call
|
|
71 <tt>std::terminate()</tt>.
|
|
72 </p>
|
|
73 <p>
|
|
74 <i>Returns:</i> A pointer to the memory allocated for the exception object.
|
|
75 </p>
|
|
76 </blockquote>
|
|
77 </td>
|
|
78 <td>✓</td>
|
|
79 <td>✓</td>
|
|
80 <td>✓</td>
|
|
81 </tr>
|
|
82
|
|
83 <tr>
|
|
84 <td>
|
|
85 <p>
|
|
86 <code>void __cxa_free_dependent_exception (void* dependent_exception) throw();</code>
|
|
87 </p>
|
|
88 <blockquote>
|
|
89 <p>
|
|
90 <i>Effects:</i> Frees memory allocated by <tt>__cxa_allocate_dependent_exception</tt>.
|
|
91 </p>
|
|
92 </blockquote>
|
|
93 </td>
|
|
94 <td>✓</td>
|
|
95 <td>✓</td>
|
|
96 <td>✓</td>
|
|
97 </tr>
|
|
98
|
|
99 <tr>
|
|
100 <td colspan=4 align="center">Exception Handling</td>
|
|
101 </tr>
|
|
102
|
|
103 <tr>
|
|
104 <td>
|
|
105 <p>
|
|
106 <code>void __cxa_throw(void* thrown_exception, struct std::type_info * tinfo,
|
|
107 void (*dest)(void*));</code>
|
|
108 </p>
|
|
109 <blockquote>
|
|
110 <p>
|
|
111 <i>Effects:</i>
|
|
112 </p>
|
|
113 </blockquote>
|
|
114 </td>
|
|
115 <td>✓</td>
|
|
116 <td>✓</td>
|
|
117 <td>✓</td>
|
|
118 </tr>
|
|
119
|
|
120 <tr>
|
|
121 <td>
|
|
122 <p>
|
|
123 <code>void* __cxa_get_exception_ptr(void* exceptionObject) throw();</code>
|
|
124 </p>
|
|
125 <blockquote>
|
|
126 <p>
|
|
127 <i>Returns:</i> The adjusted pointer to the exception object. (The adjusted
|
|
128 pointer is typically computed by the personality routine during phase 1 and
|
|
129 saved in the exception object.)
|
|
130 </p>
|
|
131 </blockquote>
|
|
132 </td>
|
|
133 <td>✓</td>
|
|
134 <td>✓</td>
|
|
135 <td>✓</td>
|
|
136 </tr>
|
|
137
|
|
138 <tr>
|
|
139 <td>
|
|
140 <p>
|
|
141 <code>void* __cxa_begin_catch(void* exceptionObject) throw();</code>
|
|
142 </p>
|
|
143 <blockquote>
|
|
144 <p>
|
|
145 <i>Effects:</i>
|
|
146 </p>
|
|
147 <ul>
|
|
148 <li>Increment's the exception's handler count.</li>
|
|
149 <li>Places the exception on the stack of currently-caught exceptions if it is
|
|
150 not already there, linking the exception to the previous top of the stack.</li>
|
|
151 <li>Decrements the uncaught_exception count.</li>
|
|
152 </ul>
|
|
153 <p>
|
|
154 If the initialization of the catch parameter is trivial (e,g., there is no
|
|
155 formal catch parameter, or the parameter has no copy constructor), the calls to
|
|
156 <tt>__cxa_get_exception_ptr()</tt> and <tt>__cxa_begin_catch()</tt> may be
|
|
157 combined into a single call to <tt>__cxa_begin_catch()</tt>.
|
|
158 </p>
|
|
159 <p>
|
|
160 When the personality routine encounters a termination condition, it will call
|
|
161 <tt>__cxa_begin_catch()</tt> to mark the exception as handled and then call
|
|
162 <tt>terminate()</tt>, which shall not return to its caller.
|
|
163 </p>
|
|
164 <p>
|
|
165 <i>Returns:</i> The adjusted pointer to the exception object.
|
|
166 </p>
|
|
167 </blockquote>
|
|
168 </td>
|
|
169 <td>✓</td>
|
|
170 <td>✓</td>
|
|
171 <td>✓</td>
|
|
172 </tr>
|
|
173
|
|
174 <tr>
|
|
175 <td>
|
|
176 <p>
|
|
177 <code>void __cxa_end_catch();</code>
|
|
178 </p>
|
|
179 <blockquote>
|
|
180 <p>
|
|
181 <i>Effects:</i> Locates the most recently caught exception and decrements its
|
|
182 handler count. Removes the exception from the caughtÓexception stack, if the
|
|
183 handler count goes to zero. Destroys the exception if the handler count goes to
|
|
184 zero, and the exception was not re-thrown by throw. Collaboration between
|
|
185 __cxa_rethrow() and __cxa_end_catch() is necessary to handle the last point.
|
|
186 Though implementation-defined, one possibility is for __cxa_rethrow() to set a
|
|
187 flag in the handlerCount member of the exception header to mark an exception
|
|
188 being rethrown.
|
|
189 </p>
|
|
190 </blockquote>
|
|
191 </td>
|
|
192 <td>✓</td>
|
|
193 <td>✓</td>
|
|
194 <td>✓</td>
|
|
195 </tr>
|
|
196
|
|
197 <tr>
|
|
198 <td>
|
|
199 <p>
|
|
200 <code>std::type_info* __cxa_current_exception_type();</code>
|
|
201 </p>
|
|
202 <blockquote>
|
|
203 <p>
|
|
204 <i>Returns:</i> the type of the currently handled exception, or null if there
|
|
205 are no caught exceptions.
|
|
206 </p>
|
|
207 </blockquote>
|
|
208 </td>
|
|
209 <td>✓</td>
|
|
210 <td>✓</td>
|
|
211 <td>✓</td>
|
|
212 </tr>
|
|
213
|
|
214 <tr>
|
|
215 <td>
|
|
216 <p>
|
|
217 <code>void __cxa_rethrow();</code>
|
|
218 </p>
|
|
219 <blockquote>
|
|
220 <p>
|
|
221 <i>Effects:</i> Marks the exception object on top of the caughtExceptions stack
|
|
222 (in an implementation-defined way) as being rethrown. If the caughtExceptions
|
|
223 stack is empty, it calls terminate() (see [C++FDIS] [except.throw], 15.1.8). It
|
|
224 then returns to the handler that called it, which must call __cxa_end_catch(),
|
|
225 perform any necessary cleanup, and finally call _Unwind_Resume() to continue
|
|
226 unwinding.
|
|
227 </p>
|
|
228 </blockquote>
|
|
229 </td>
|
|
230 <td>✓</td>
|
|
231 <td>✓</td>
|
|
232 <td>✓</td>
|
|
233 </tr>
|
|
234
|
|
235 <tr>
|
|
236 <td>
|
|
237 <p>
|
|
238 <code>void* __cxa_current_primary_exception() throw();</code>
|
|
239 </p>
|
|
240 <blockquote>
|
|
241 <p>
|
|
242 <i>Effects:</i> Increments the ownership count of the currently handled
|
|
243 exception (if any) by one.
|
|
244 </p>
|
|
245 <p>
|
|
246 <i>Returns:</i> the type of the currently handled exception, or null if there
|
|
247 are no caught exceptions.
|
|
248 </p>
|
|
249 </blockquote>
|
|
250 </td>
|
|
251 <td>✓</td>
|
|
252 <td>✓</td>
|
|
253 <td>✓</td>
|
|
254 </tr>
|
|
255
|
|
256 <tr>
|
|
257 <td>
|
|
258 <p>
|
|
259 <code>void __cxa_decrement_exception_refcount(void* primary_exception) throw();</code>
|
|
260 </p>
|
|
261 <blockquote>
|
|
262 <p>
|
|
263 <i>Effects:</i> Decrements the ownership count of the exception by 1, and on
|
|
264 zero calls <tt>_Unwind_DeleteException</tt> with the exception object.
|
|
265 </p>
|
|
266 </blockquote>
|
|
267 </td>
|
|
268 <td>✓</td>
|
|
269 <td>✓</td>
|
|
270 <td>✓</td>
|
|
271 </tr>
|
|
272
|
|
273 <tr>
|
|
274 <td>
|
|
275 <p>
|
|
276 <code>__cxa_eh_globals* __cxa_get_globals() throw();</code>
|
|
277 </p>
|
|
278 <blockquote>
|
|
279 <p>
|
|
280 <i>Returns:</i> A pointer to the __cxa_eh_globals structure for the current
|
|
281 thread, initializing it if necessary.
|
|
282 </p>
|
|
283 </blockquote>
|
|
284 </td>
|
|
285 <td>✓</td>
|
|
286 <td>✓</td>
|
|
287 <td>✓</td>
|
|
288 </tr>
|
|
289
|
|
290 <tr>
|
|
291 <td>
|
|
292 <p>
|
|
293 <code>__cxa_eh_globals* __cxa_get_globals_fast() throw();</code>
|
|
294 </p>
|
|
295 <blockquote>
|
|
296 <p>
|
|
297 <i>Requires:</i> At least one prior call to __cxa_get_globals has been made from
|
|
298 the current thread.
|
|
299 </p>
|
|
300 <p>
|
|
301 <i>Returns:</i> A pointer to the __cxa_eh_globals structure for the current
|
|
302 thread.
|
|
303 </p>
|
|
304 </blockquote>
|
|
305 </td>
|
|
306 <td>✓</td>
|
|
307 <td>✓</td>
|
|
308 <td>✓</td>
|
|
309 </tr>
|
|
310
|
|
311 <tr>
|
|
312 <td>
|
|
313 <p>
|
|
314 <code>void __cxa_increment_exception_refcount(void* primary_exception) throw();</code>
|
|
315 </p>
|
|
316 <blockquote>
|
|
317 <p>
|
|
318 <i>Effects:</i> Increments the ownership count of the referenced exception.
|
|
319 </p>
|
|
320 </blockquote>
|
|
321 </td>
|
|
322 <td>✓</td>
|
|
323 <td>✓</td>
|
|
324 <td>✓</td>
|
|
325 </tr>
|
|
326
|
|
327 <tr>
|
|
328 <td>
|
|
329 <p>
|
|
330 <code>void __cxa_rethrow_primary_exception(void* primary_exception);</code>
|
|
331 </p>
|
|
332 <blockquote>
|
|
333 <p>
|
|
334 <i>Effects:</i> Implements <tt>std::rethrow_exception(exception_ptr p)</tt>.
|
|
335 </p>
|
|
336 </blockquote>
|
|
337 </td>
|
|
338 <td>✓</td>
|
|
339 <td>✓</td>
|
|
340 <td>✓</td>
|
|
341 </tr>
|
|
342
|
|
343 <tr>
|
|
344 <td>
|
|
345 <p>
|
|
346 <code>bool __cxa_uncaught_exception() throw();</code>
|
|
347 </p>
|
|
348 <blockquote>
|
|
349 <p>
|
|
350 <i>Effects:</i>
|
|
351 </p>
|
|
352 <p>
|
|
353 <i>Returns:</i>
|
|
354 </p>
|
|
355 </blockquote>
|
|
356 </td>
|
|
357 <td>✓</td>
|
|
358 <td>✓</td>
|
|
359 <td>✓</td>
|
|
360 </tr>
|
|
361
|
|
362 <tr>
|
|
363 <td>
|
|
364 <p>
|
|
365 <code>_Unwind_Reason_Code __gxx_personality_v0
|
|
366 (int, _Unwind_Action, _Unwind_Exception_Class,
|
|
367 struct _Unwind_Exception *, struct _Unwind_Context *);</code>
|
|
368 </p>
|
|
369 <blockquote>
|
|
370 <p>
|
|
371 <i>Effects:</i>
|
|
372 </p>
|
|
373 <p>
|
|
374 <i>Returns:</i>
|
|
375 </p>
|
|
376 </blockquote>
|
|
377 </td>
|
|
378 <td>✓</td>
|
|
379 <td>✓</td>
|
|
380 <td>✓</td>
|
|
381 </tr>
|
|
382
|
|
383 <tr>
|
|
384 <td colspan=4 align="center">Guard objects</td>
|
|
385 </tr>
|
|
386
|
|
387 <tr>
|
|
388 <td>
|
|
389 <p>
|
|
390 <code>int __cxa_guard_acquire(uint64_t* guard_object);</code>
|
|
391 </p>
|
|
392 <blockquote>
|
|
393 <p>
|
|
394 <i>Effects:</i> This function is called before initialization takes place. If
|
|
395 this function returns 1, either <code>__cxa_guard_release</code> or
|
|
396 <code>__cxa_guard_abort</code> must be called with the same argument. The first
|
|
397 byte of the <code>guard_object</code> is not modified by this function.
|
|
398 </p>
|
|
399 <p>
|
|
400 On Darwin the implementation checks for deadlock.
|
|
401 </p>
|
|
402 <p>
|
|
403 <i>Returns:</i> 1 if the initialization is not yet complete, otherwise 0.
|
|
404 </p>
|
|
405 </blockquote>
|
|
406 </td>
|
|
407 <td>✓</td>
|
|
408 <td>✓</td>
|
|
409 <td>✓</td>
|
|
410 </tr>
|
|
411
|
|
412 <tr>
|
|
413 <td>
|
|
414 <p>
|
|
415 <code>void __cxa_guard_release(uint64_t*);</code>
|
|
416 </p>
|
|
417 <blockquote>
|
|
418 <p>
|
|
419 <i>Effects:</i> Sets the first byte of the guard object to a non-zero value.
|
|
420 This function is called after initialization is complete. A thread-safe
|
|
421 implementation will release the mutex acquired by __cxa_guard_acquire after
|
|
422 setting the first byte of the guard object.
|
|
423 </p>
|
|
424 </blockquote>
|
|
425 </td>
|
|
426 <td>✓</td>
|
|
427 <td>✓</td>
|
|
428 <td>✓</td>
|
|
429 </tr>
|
|
430
|
|
431 <tr>
|
|
432 <td>
|
|
433 <p>
|
|
434 <code>void __cxa_guard_abort(uint64_t*);</code>
|
|
435 </p>
|
|
436 <blockquote>
|
|
437 <p>
|
|
438 <i>Effects:</i> This function is called if the initialization terminates by
|
|
439 throwing an exception.
|
|
440 </p>
|
|
441 </blockquote>
|
|
442 </td>
|
|
443 <td>✓</td>
|
|
444 <td>✓</td>
|
|
445 <td>✓</td>
|
|
446 </tr>
|
|
447
|
|
448 <tr>
|
|
449 <td colspan=4 align="center">Vector construction and destruction</td>
|
|
450 </tr>
|
|
451
|
|
452 <tr>
|
|
453 <td>
|
|
454 <p>
|
|
455 <code>void* __cxa_vec_new(size_t element_count,
|
|
456 size_t element_size,
|
|
457 size_t padding_size,
|
|
458 void (*constructor)(void*),
|
|
459 void (*destructor)(void*) );</code>
|
|
460 </p>
|
|
461 <blockquote>
|
|
462 <p>
|
|
463 <i>Effects:</i>
|
|
464 </p>
|
|
465 <p>
|
|
466 <i>Returns:</i>
|
|
467 </p>
|
|
468 </blockquote>
|
|
469 </td>
|
|
470 <td>✓</td>
|
|
471 <td>✓</td>
|
|
472 <td>✓</td>
|
|
473 </tr>
|
|
474
|
|
475 <tr>
|
|
476 <td>
|
|
477 <p>
|
|
478 <code>void* __cxa_vec_new2(size_t element_count,
|
|
479 size_t element_size,
|
|
480 size_t padding_size,
|
|
481 void (*constructor)(void*),
|
|
482 void (*destructor)(void*),
|
|
483 void* (*alloc)(size_t),
|
|
484 void (*dealloc)(void*) );</code>
|
|
485 </p>
|
|
486 <blockquote>
|
|
487 <p>
|
|
488 <i>Effects:</i>
|
|
489 </p>
|
|
490 <p>
|
|
491 <i>Returns:</i>
|
|
492 </p>
|
|
493 </blockquote>
|
|
494 </td>
|
|
495 <td>✓</td>
|
|
496 <td>✓</td>
|
|
497 <td>✓</td>
|
|
498 </tr>
|
|
499
|
|
500 <tr>
|
|
501 <td>
|
|
502 <p>
|
|
503 <code>void* __cxa_vec_new3(size_t element_count,
|
|
504 size_t element_size,
|
|
505 size_t padding_size,
|
|
506 void (*constructor)(void*),
|
|
507 void (*destructor)(void*),
|
|
508 void* (*alloc)(size_t),
|
|
509 void (*dealloc)(void*, size_t) );</code>
|
|
510 </p>
|
|
511 <blockquote>
|
|
512 <p>
|
|
513 <i>Effects:</i>
|
|
514 </p>
|
|
515 <p>
|
|
516 <i>Returns:</i>
|
|
517 </p>
|
|
518 </blockquote>
|
|
519 </td>
|
|
520 <td>✓</td>
|
|
521 <td>✓</td>
|
|
522 <td>✓</td>
|
|
523 </tr>
|
|
524
|
|
525 <tr>
|
|
526 <td>
|
|
527 <p>
|
|
528 <code>void __cxa_vec_ctor(void* array_address,
|
|
529 size_t element_count,
|
|
530 size_t element_size,
|
|
531 void (*constructor)(void*),
|
|
532 void (*destructor)(void*) );</code>
|
|
533 </p>
|
|
534 <blockquote>
|
|
535 <p>
|
|
536 <i>Effects:</i>
|
|
537 </p>
|
|
538 </blockquote>
|
|
539 </td>
|
|
540 <td>✓</td>
|
|
541 <td>✓</td>
|
|
542 <td>✓</td>
|
|
543 </tr>
|
|
544
|
|
545 <tr>
|
|
546 <td>
|
|
547 <p>
|
|
548 <code>void __cxa_vec_dtor(void* array_address,
|
|
549 size_t element_count,
|
|
550 size_t element_size,
|
|
551 void (*destructor)(void*) );</code>
|
|
552 </p>
|
|
553 <blockquote>
|
|
554 <p>
|
|
555 <i>Effects:</i>
|
|
556 </p>
|
|
557 </blockquote>
|
|
558 </td>
|
|
559 <td>✓</td>
|
|
560 <td>✓</td>
|
|
561 <td>✓</td>
|
|
562 </tr>
|
|
563
|
|
564 <tr>
|
|
565 <td>
|
|
566 <p>
|
|
567 <code>void __cxa_vec_cleanup(void* array_address,
|
|
568 size_t element_count,
|
|
569 size_t element_size,
|
|
570 void (*destructor)(void*) );</code>
|
|
571 </p>
|
|
572 <blockquote>
|
|
573 <p>
|
|
574 <i>Effects:</i>
|
|
575 </p>
|
|
576 </blockquote>
|
|
577 </td>
|
|
578 <td>✓</td>
|
|
579 <td>✓</td>
|
|
580 <td>✓</td>
|
|
581 </tr>
|
|
582
|
|
583 <tr>
|
|
584 <td>
|
|
585 <p>
|
|
586 <code>void __cxa_vec_delete(void* array_address,
|
|
587 size_t element_size,
|
|
588 size_t padding_size,
|
|
589 void (*destructor)(void*) );</code>
|
|
590 </p>
|
|
591 <blockquote>
|
|
592 <p>
|
|
593 <i>Effects:</i>
|
|
594 </p>
|
|
595 </blockquote>
|
|
596 </td>
|
|
597 <td>✓</td>
|
|
598 <td>✓</td>
|
|
599 <td>✓</td>
|
|
600 </tr>
|
|
601
|
|
602 <tr>
|
|
603 <td>
|
|
604 <p>
|
|
605 <code>void __cxa_vec_delete2(void* array_address,
|
|
606 size_t element_size,
|
|
607 size_t padding_size,
|
|
608 void (*destructor)(void*),
|
|
609 void (*dealloc)(void*) );</code>
|
|
610 </p>
|
|
611 <blockquote>
|
|
612 <p>
|
|
613 <i>Effects:</i>
|
|
614 </p>
|
|
615 </blockquote>
|
|
616 </td>
|
|
617 <td>✓</td>
|
|
618 <td>✓</td>
|
|
619 <td>✓</td>
|
|
620 </tr>
|
|
621
|
|
622 <tr>
|
|
623 <td>
|
|
624 <p>
|
|
625 <code>void __cxa_vec_delete3(void* __array_address,
|
|
626 size_t element_size,
|
|
627 size_t padding_size,
|
|
628 void (*destructor)(void*),
|
|
629 void (*dealloc) (void*, size_t));</code>
|
|
630 </p>
|
|
631 <blockquote>
|
|
632 <p>
|
|
633 <i>Effects:</i>
|
|
634 </p>
|
|
635 </blockquote>
|
|
636 </td>
|
|
637 <td>✓</td>
|
|
638 <td>✓</td>
|
|
639 <td>✓</td>
|
|
640 </tr>
|
|
641
|
|
642 <tr>
|
|
643 <td>
|
|
644 <p>
|
|
645 <code>void __cxa_vec_cctor(void* dest_array,
|
|
646 void* src_array,
|
|
647 size_t element_count,
|
|
648 size_t element_size,
|
|
649 void (*constructor) (void*, void*),
|
|
650 void (*destructor)(void*) );</code>
|
|
651 </p>
|
|
652 <blockquote>
|
|
653 <p>
|
|
654 <i>Effects:</i>
|
|
655 </p>
|
|
656 </blockquote>
|
|
657 </td>
|
|
658 <td>✓</td>
|
|
659 <td>✓</td>
|
|
660 <td>✓</td>
|
|
661 </tr>
|
|
662
|
|
663 <tr>
|
|
664 <td colspan=4 align="center">Handlers</td>
|
|
665 </tr>
|
|
666
|
|
667 <tr>
|
|
668 <td>
|
|
669 <p>
|
|
670 <code>void (*__cxa_new_handler)();</code>
|
|
671 </p>
|
|
672 <blockquote>
|
|
673 <p>
|
|
674 The currently installed new handler.
|
|
675 </p>
|
|
676 </blockquote>
|
|
677 </td>
|
|
678 <td>✓</td>
|
|
679 <td>✓</td>
|
|
680 <td>✓</td>
|
|
681 </tr>
|
|
682
|
|
683 <tr>
|
|
684 <td>
|
|
685 <p>
|
|
686 <code>void (*__cxa_terminate_handler)();</code>
|
|
687 </p>
|
|
688 <blockquote>
|
|
689 <p>
|
|
690 The currently installed terminate handler.
|
|
691 </p>
|
|
692 </blockquote>
|
|
693 </td>
|
|
694 <td>✓</td>
|
|
695 <td>✓</td>
|
|
696 <td>✓</td>
|
|
697 </tr>
|
|
698
|
|
699 <tr>
|
|
700 <td>
|
|
701 <p>
|
|
702 <code>void (*__cxa_unexpected_handler)();</code>
|
|
703 </p>
|
|
704 <blockquote>
|
|
705 <p>
|
|
706 <i>Effects:</i>
|
|
707 </p>
|
|
708 </blockquote>
|
|
709 </td>
|
|
710 <td>✓</td>
|
|
711 <td>✓</td>
|
|
712 <td>✓</td>
|
|
713 </tr>
|
|
714
|
|
715
|
|
716
|
|
717 <tr>
|
|
718 <td colspan=4 align="center">Utilities</td>
|
|
719 </tr>
|
|
720
|
|
721 <tr>
|
|
722 <td>
|
|
723 <p>
|
|
724 <code>[[noreturn]] void __cxa_bad_cast()</code>
|
|
725 </p>
|
|
726 <blockquote>
|
|
727 <p>
|
|
728 <i>Effects:</i> Throws an exception of type <tt>bad_cast</tt>.
|
|
729 </p>
|
|
730 </blockquote>
|
|
731 </td>
|
|
732 <td>✓</td>
|
|
733 <td>✓</td>
|
|
734 <td>✓</td>
|
|
735 </tr>
|
|
736
|
|
737 <tr>
|
|
738 <td>
|
|
739 <p>
|
|
740 <code>[[noreturn]] void __cxa_bad_typeid();</code>
|
|
741 </p>
|
|
742 <blockquote>
|
|
743 <p>
|
|
744 <i>Effects:</i> Throws an exception of type <tt>bad_typeid</tt>.
|
|
745 </p>
|
|
746 </blockquote>
|
|
747 </td>
|
|
748 <td>✓</td>
|
|
749 <td>✓</td>
|
|
750 <td>✓</td>
|
|
751 </tr>
|
|
752
|
|
753 <tr>
|
|
754 <td>
|
|
755 <p>
|
|
756 <code>void __cxa_pure_virtual(void);</code>
|
|
757 </p>
|
|
758 <blockquote>
|
|
759 <p>
|
|
760 <i>Effects:</i> Called if the user calls a non-overridden pure virtual function,
|
|
761 which has undefined behavior according to the C++ Standard. Ends the program.
|
|
762 </p>
|
|
763 </blockquote>
|
|
764 </td>
|
|
765 <td>✓</td>
|
|
766 <td>✓</td>
|
|
767 <td>✓</td>
|
|
768 </tr>
|
|
769
|
|
770 <tr>
|
|
771 <td>
|
|
772 <p>
|
|
773 <code>void __cxa_call_unexpected (void*) __attribute__((noreturn));</code>
|
|
774 </p>
|
|
775 <blockquote>
|
|
776 <p>
|
|
777 <i>Effects:</i> Handles re-checking the exception specification if
|
|
778 unexpectedHandler throws, and if <tt>bad_exception</tt> needs to be thrown.
|
|
779 Called from the compiler.
|
|
780 </p>
|
|
781 </blockquote>
|
|
782 </td>
|
|
783 <td>✓</td>
|
|
784 <td>✓</td>
|
|
785 <td>✓</td>
|
|
786 </tr>
|
|
787
|
|
788 <tr>
|
|
789 <td>
|
|
790 <p>
|
|
791 <code>char* __cxa_demangle(const char* mangled_name,
|
|
792 char* output_buffer,
|
|
793 size_t* length,
|
|
794 int* status);</code>
|
|
795 </p>
|
|
796 <blockquote>
|
|
797 <p>
|
|
798 <i>Effects:</i>
|
|
799 </p>
|
|
800 <p>
|
|
801 <i>Returns:</i>
|
|
802 </p>
|
|
803 </blockquote>
|
|
804 </td>
|
|
805 <td>✓</td>
|
|
806 <td>✓</td>
|
|
807 <td>✓</td>
|
|
808 </tr>
|
|
809
|
|
810 <tr>
|
|
811 <td>
|
|
812 <p>
|
|
813 <code>void*
|
|
814 __dynamic_cast(const void* __src_ptr,
|
|
815 const __class_type_info* __src_type,
|
|
816 const __class_type_info* __dst_type,
|
|
817 ptrdiff_t __src2dst);</code>
|
|
818 </p>
|
|
819 <blockquote>
|
|
820 <p>
|
|
821 <i>Effects:</i>
|
|
822 </p>
|
|
823 <p>
|
|
824 <i>Returns:</i>
|
|
825 </p>
|
|
826 </blockquote>
|
|
827 </td>
|
|
828 <td>✓</td>
|
|
829 <td>✓</td>
|
|
830 <td>✓</td>
|
|
831 </tr>
|
|
832
|
|
833 </table>
|
|
834
|
|
835 <!--
|
|
836 000000000000d570 (__DATA,__const) external typeinfo for char32_t
|
|
837 000000000000cfd0 (__DATA,__const) external typeinfo for std::nullptr_t
|
|
838 000000000000d520 (__DATA,__const) external typeinfo for char16_t
|
|
839 000000000000d580 (__DATA,__const) external typeinfo for char32_t*
|
|
840 000000000000cfe0 (__DATA,__const) external typeinfo for std::nullptr_t*
|
|
841 000000000000d530 (__DATA,__const) external typeinfo for char16_t*
|
|
842 000000000000d5a0 (__DATA,__const) external typeinfo for char32_t const*
|
|
843 000000000000d000 (__DATA,__const) external typeinfo for std::nullptr_t const*
|
|
844 000000000000d550 (__DATA,__const) external typeinfo for char16_t const*
|
|
845 000000000000d190 (__DATA,__const) external typeinfo for signed char const*
|
|
846 000000000000d050 (__DATA,__const) external typeinfo for bool const*
|
|
847 000000000000d0f0 (__DATA,__const) external typeinfo for char const*
|
|
848 000000000000d4b0 (__DATA,__const) external typeinfo for double const*
|
|
849 000000000000d500 (__DATA,__const) external typeinfo for long double const*
|
|
850 000000000000d460 (__DATA,__const) external typeinfo for float const*
|
|
851 000000000000d140 (__DATA,__const) external typeinfo for unsigned char const*
|
|
852 000000000000d280 (__DATA,__const) external typeinfo for int const*
|
|
853 000000000000d2d0 (__DATA,__const) external typeinfo for unsigned int const*
|
|
854 000000000000d320 (__DATA,__const) external typeinfo for long const*
|
|
855 000000000000d370 (__DATA,__const) external typeinfo for unsigned long const*
|
|
856 000000000000d1e0 (__DATA,__const) external typeinfo for short const*
|
|
857 000000000000d230 (__DATA,__const) external typeinfo for unsigned short const*
|
|
858 000000000000cfb0 (__DATA,__const) external typeinfo for void const*
|
|
859 000000000000d0a0 (__DATA,__const) external typeinfo for wchar_t const*
|
|
860 000000000000d3c0 (__DATA,__const) external typeinfo for long long const*
|
|
861 000000000000d410 (__DATA,__const) external typeinfo for unsigned long long const*
|
|
862 000000000000d170 (__DATA,__const) external typeinfo for signed char*
|
|
863 000000000000d030 (__DATA,__const) external typeinfo for bool*
|
|
864 000000000000d0d0 (__DATA,__const) external typeinfo for char*
|
|
865 000000000000d490 (__DATA,__const) external typeinfo for double*
|
|
866 000000000000d4e0 (__DATA,__const) external typeinfo for long double*
|
|
867 000000000000d440 (__DATA,__const) external typeinfo for float*
|
|
868 000000000000d120 (__DATA,__const) external typeinfo for unsigned char*
|
|
869 000000000000d260 (__DATA,__const) external typeinfo for int*
|
|
870 000000000000d2b0 (__DATA,__const) external typeinfo for unsigned int*
|
|
871 000000000000d300 (__DATA,__const) external typeinfo for long*
|
|
872 000000000000d350 (__DATA,__const) external typeinfo for unsigned long*
|
|
873 000000000000d1c0 (__DATA,__const) external typeinfo for short*
|
|
874 000000000000d210 (__DATA,__const) external typeinfo for unsigned short*
|
|
875 000000000000cf90 (__DATA,__const) external typeinfo for void*
|
|
876 000000000000d080 (__DATA,__const) external typeinfo for wchar_t*
|
|
877 000000000000d3a0 (__DATA,__const) external typeinfo for long long*
|
|
878 000000000000d3f0 (__DATA,__const) external typeinfo for unsigned long long*
|
|
879 000000000000d160 (__DATA,__const) external typeinfo for signed char
|
|
880 000000000000d020 (__DATA,__const) external typeinfo for bool
|
|
881 000000000000d0c0 (__DATA,__const) external typeinfo for char
|
|
882 000000000000d480 (__DATA,__const) external typeinfo for double
|
|
883 000000000000d4d0 (__DATA,__const) external typeinfo for long double
|
|
884 000000000000d430 (__DATA,__const) external typeinfo for float
|
|
885 000000000000d110 (__DATA,__const) external typeinfo for unsigned char
|
|
886 000000000000d250 (__DATA,__const) external typeinfo for int
|
|
887 000000000000d2a0 (__DATA,__const) external typeinfo for unsigned int
|
|
888 000000000000d2f0 (__DATA,__const) external typeinfo for long
|
|
889 000000000000d340 (__DATA,__const) external typeinfo for unsigned long
|
|
890 000000000000d1b0 (__DATA,__const) external typeinfo for short
|
|
891 000000000000d200 (__DATA,__const) external typeinfo for unsigned short
|
|
892 000000000000cf78 (__DATA,__const) external typeinfo for void
|
|
893 000000000000d070 (__DATA,__const) external typeinfo for wchar_t
|
|
894 000000000000d390 (__DATA,__const) external typeinfo for long long
|
|
895 000000000000d3e0 (__DATA,__const) external typeinfo for unsigned long long
|
|
896 00000000000093f9 (__TEXT,__cstring) external typeinfo name for char32_t
|
|
897 0000000000009351 (__TEXT,__cstring) external typeinfo name for std::nullptr_t
|
|
898 00000000000093ed (__TEXT,__cstring) external typeinfo name for char16_t
|
|
899 0000000000009470 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__enum_type_info
|
|
900 0000000000009410 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__array_type_info
|
|
901 0000000000009290 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__class_type_info
|
|
902 00000000000094a0 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__pbase_type_info
|
|
903 00000000000094d0 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__pointer_type_info
|
|
904 0000000000009440 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__function_type_info
|
|
905 00000000000092c0 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__si_class_type_info
|
|
906 00000000000092f0 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__vmi_class_type_info
|
|
907 0000000000009320 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__fundamental_type_info
|
|
908 0000000000009500 (__TEXT,__cstring) external typeinfo name for __cxxabiv1::__pointer_to_member_type_info
|
|
909 00000000000093fc (__TEXT,__cstring) external typeinfo name for char32_t*
|
|
910 0000000000009354 (__TEXT,__cstring) external typeinfo name for std::nullptr_t*
|
|
911 00000000000093f0 (__TEXT,__cstring) external typeinfo name for char16_t*
|
|
912 0000000000009400 (__TEXT,__cstring) external typeinfo name for char32_t const*
|
|
913 0000000000009358 (__TEXT,__cstring) external typeinfo name for std::nullptr_t const*
|
|
914 00000000000093f4 (__TEXT,__cstring) external typeinfo name for char16_t const*
|
|
915 0000000000009386 (__TEXT,__cstring) external typeinfo name for signed char const*
|
|
916 0000000000009362 (__TEXT,__cstring) external typeinfo name for bool const*
|
|
917 0000000000009374 (__TEXT,__cstring) external typeinfo name for char const*
|
|
918 00000000000093e0 (__TEXT,__cstring) external typeinfo name for double const*
|
|
919 00000000000093e9 (__TEXT,__cstring) external typeinfo name for long double const*
|
|
920 00000000000093d7 (__TEXT,__cstring) external typeinfo name for float const*
|
|
921 000000000000937d (__TEXT,__cstring) external typeinfo name for unsigned char const*
|
|
922 00000000000093a1 (__TEXT,__cstring) external typeinfo name for int const*
|
|
923 00000000000093aa (__TEXT,__cstring) external typeinfo name for unsigned int const*
|
|
924 00000000000093b3 (__TEXT,__cstring) external typeinfo name for long const*
|
|
925 00000000000093bc (__TEXT,__cstring) external typeinfo name for unsigned long const*
|
|
926 000000000000938f (__TEXT,__cstring) external typeinfo name for short const*
|
|
927 0000000000009398 (__TEXT,__cstring) external typeinfo name for unsigned short const*
|
|
928 000000000000934d (__TEXT,__cstring) external typeinfo name for void const*
|
|
929 000000000000936b (__TEXT,__cstring) external typeinfo name for wchar_t const*
|
|
930 00000000000093c5 (__TEXT,__cstring) external typeinfo name for long long const*
|
|
931 00000000000093ce (__TEXT,__cstring) external typeinfo name for unsigned long long const*
|
|
932 0000000000009383 (__TEXT,__cstring) external typeinfo name for signed char*
|
|
933 000000000000935f (__TEXT,__cstring) external typeinfo name for bool*
|
|
934 0000000000009371 (__TEXT,__cstring) external typeinfo name for char*
|
|
935 00000000000093dd (__TEXT,__cstring) external typeinfo name for double*
|
|
936 00000000000093e6 (__TEXT,__cstring) external typeinfo name for long double*
|
|
937 00000000000093d4 (__TEXT,__cstring) external typeinfo name for float*
|
|
938 000000000000937a (__TEXT,__cstring) external typeinfo name for unsigned char*
|
|
939 000000000000939e (__TEXT,__cstring) external typeinfo name for int*
|
|
940 00000000000093a7 (__TEXT,__cstring) external typeinfo name for unsigned int*
|
|
941 00000000000093b0 (__TEXT,__cstring) external typeinfo name for long*
|
|
942 00000000000093b9 (__TEXT,__cstring) external typeinfo name for unsigned long*
|
|
943 000000000000938c (__TEXT,__cstring) external typeinfo name for short*
|
|
944 0000000000009395 (__TEXT,__cstring) external typeinfo name for unsigned short*
|
|
945 000000000000934a (__TEXT,__cstring) external typeinfo name for void*
|
|
946 0000000000009368 (__TEXT,__cstring) external typeinfo name for wchar_t*
|
|
947 00000000000093c2 (__TEXT,__cstring) external typeinfo name for long long*
|
|
948 00000000000093cb (__TEXT,__cstring) external typeinfo name for unsigned long long*
|
|
949 0000000000009381 (__TEXT,__cstring) external typeinfo name for signed char
|
|
950 000000000000935d (__TEXT,__cstring) external typeinfo name for bool
|
|
951 000000000000936f (__TEXT,__cstring) external typeinfo name for char
|
|
952 00000000000093db (__TEXT,__cstring) external typeinfo name for double
|
|
953 00000000000093e4 (__TEXT,__cstring) external typeinfo name for long double
|
|
954 00000000000093d2 (__TEXT,__cstring) external typeinfo name for float
|
|
955 0000000000009378 (__TEXT,__cstring) external typeinfo name for unsigned char
|
|
956 000000000000939c (__TEXT,__cstring) external typeinfo name for int
|
|
957 00000000000093a5 (__TEXT,__cstring) external typeinfo name for unsigned int
|
|
958 00000000000093ae (__TEXT,__cstring) external typeinfo name for long
|
|
959 00000000000093b7 (__TEXT,__cstring) external typeinfo name for unsigned long
|
|
960 000000000000938a (__TEXT,__cstring) external typeinfo name for short
|
|
961 0000000000009393 (__TEXT,__cstring) external typeinfo name for unsigned short
|
|
962 0000000000009348 (__TEXT,__cstring) external typeinfo name for void
|
|
963 0000000000009366 (__TEXT,__cstring) external typeinfo name for wchar_t
|
|
964 00000000000093c0 (__TEXT,__cstring) external typeinfo name for long long
|
|
965 00000000000093c9 (__TEXT,__cstring) external typeinfo name for unsigned long long
|
|
966 000000000000ce30 (__DATA,__const) external vtable for __cxxabiv1::__enum_type_info
|
|
967 000000000000cdb0 (__DATA,__const) external vtable for __cxxabiv1::__array_type_info
|
|
968 000000000000cbe0 (__DATA,__const) external vtable for __cxxabiv1::__class_type_info
|
|
969 000000000000ce70 (__DATA,__const) external vtable for __cxxabiv1::__pbase_type_info
|
|
970 000000000000cec0 (__DATA,__const) external vtable for __cxxabiv1::__pointer_type_info
|
|
971 000000000000cdf0 (__DATA,__const) external vtable for __cxxabiv1::__function_type_info
|
|
972 000000000000cc40 (__DATA,__const) external vtable for __cxxabiv1::__si_class_type_info
|
|
973 000000000000cca0 (__DATA,__const) external vtable for __cxxabiv1::__vmi_class_type_info
|
|
974 000000000000cd70 (__DATA,__const) external vtable for __cxxabiv1::__fundamental_type_info
|
|
975 000000000000cf10 (__DATA,__const) external vtable for __cxxabiv1::__pointer_to_member_type_info
|
|
976
|
|
977 (undefined) external ___stack_chk_fail (from libSystem)
|
|
978 (undefined) external ___stack_chk_guard (from libSystem)
|
|
979 (undefined) external ___stderrp (from libSystem)
|
|
980 (undefined) external ___strcat_chk (from libSystem)
|
|
981 (undefined) external _abort (from libSystem)
|
|
982 (undefined) external _calloc (from libSystem)
|
|
983 (undefined) external _dlsym (from libSystem)
|
|
984 (undefined) external _free (from libSystem)
|
|
985 (undefined) external _malloc (from libSystem)
|
|
986 (undefined) external _memcpy (from libSystem)
|
|
987 (undefined) external _pthread_getspecific (from libSystem)
|
|
988 (undefined) external _pthread_key_create (from libSystem)
|
|
989 (undefined) external _pthread_mutex_init (from libSystem)
|
|
990 (undefined) external _pthread_mutex_lock (from libSystem)
|
|
991 (undefined) external _pthread_mutex_unlock (from libSystem)
|
|
992 (undefined) external _pthread_mutexattr_init (from libSystem)
|
|
993 (undefined) external _pthread_mutexattr_settype (from libSystem)
|
|
994 (undefined) external _pthread_once (from libSystem)
|
|
995 (undefined) external _pthread_setspecific (from libSystem)
|
|
996 (undefined) external _realloc (from libSystem)
|
|
997 (undefined) external _strcmp (from libSystem)
|
|
998 (undefined) external _strcpy (from libSystem)
|
|
999 (undefined) external _strlen (from libSystem)
|
|
1000 (undefined) external _strncmp (from libSystem)
|
|
1001 (undefined) external _vasprintf (from libSystem)
|
|
1002 (undefined) external _vfprintf (from libSystem)
|
|
1003 (undefined) external dyld_stub_binder (from libSystem)
|
|
1004 (undefined) external __Unwind_DeleteException (from libSystem)
|
|
1005 (undefined) external __Unwind_GetIP (from libSystem)
|
|
1006 (undefined) external __Unwind_GetLanguageSpecificData (from libSystem)
|
|
1007 (undefined) external __Unwind_GetRegionStart (from libSystem)
|
|
1008 (undefined) external __Unwind_RaiseException (from libSystem)
|
|
1009 (undefined) external __Unwind_Resume_or_Rethrow (from libSystem)
|
|
1010 (undefined) external __Unwind_SetGR (from libSystem)
|
|
1011 (undefined) external __Unwind_SetIP (from libSystem)
|
|
1012 (undefined) external ___bzero (from libSystem)
|
|
1013 -->
|
|
1014
|
|
1015 </body>
|
|
1016 </html>
|