Howard Hinnant
86b4dfac01
First brush with testing __gxx_personality_v0 reveals there is still a long way to go. But my understanding of what it is supposed to do continues to improve. I am currently contemplating whether I need to implement typeinfo before completing __gxx_personality_v0 in order to get matching catch handlers correct.
...
llvm-svn: 147761
2012-01-08 23:50:46 +00:00
Howard Hinnant
7530f19d03
Add a few TODO's and FIXME's. Making notes as I go along, but not slowing down to fix these yet. Just don't want anything to fall through the cracks.
...
llvm-svn: 147760
2012-01-08 23:40:41 +00:00
Howard Hinnant
5dc3179e5d
Correct comment regarding members of __cxa_dependent_exception. Actually it is useful to disguise a __cxa_dependent_exception as a __cxa_exception by filling in most (not all) of these members at __cxa_dependent_exception construction time. That way most routines don't have to care which kind of exception they have.
...
llvm-svn: 147759
2012-01-08 23:39:14 +00:00
Howard Hinnant
d3dba31762
__gxx_personality_v0 update. This is completely untested code. But my brain is scrambled and I wanted to get it checked in. Code review from anyone who knows anything at all about personality functions would be much appreciated. What is in here is borrowed heavily from llvm/examples/ExceptionDemo/ExceptionDemo.cpp. There are some calls to abort() that should probably be changed to return an error code instead. There may be encodings under readEncodedPointer that need to be implemented. And my handling of type_info is almost a complete guess.
...
llvm-svn: 147680
2012-01-06 20:39:47 +00:00
Marshall Clow
d2bab35080
Improved comment to explain why we can use __cxa_get_globals_fast here
...
llvm-svn: 147554
2012-01-04 22:18:10 +00:00
Howard Hinnant
66d9327b80
Just getting started on the personality routine. This is just a skeleton. Still learning how to fill it in...
...
llvm-svn: 147547
2012-01-04 20:49:43 +00:00
Marshall Clow
f368486f4c
Better comment
...
llvm-svn: 147532
2012-01-04 14:56:09 +00:00
Marshall Clow
f83663a9cd
Don't allocate TLS storage when checking to see if an exception has been thrown - really
...
llvm-svn: 147497
2012-01-03 23:26:09 +00:00
Marshall Clow
3e417e7a5c
Don't allocate TLS storage when checking to see if an exception has been thrown
...
llvm-svn: 147492
2012-01-03 23:10:20 +00:00
Howard Hinnant
f5bde09cc1
credits adjustment
...
llvm-svn: 147148
2011-12-22 16:00:06 +00:00
Marshall Clow
1de4fc0dfa
Updated __cxa_current_exception_type to call __cxa_get_globals_fast - will not allocate globals
...
llvm-svn: 147147
2011-12-22 15:45:05 +00:00
Howard Hinnant
2aa433398a
Updated spec.html regarding __cxa_uncaught_exception.
...
llvm-svn: 147110
2011-12-22 00:03:36 +00:00
Howard Hinnant
22f28b2d52
Forgot to increment uncaughtExceptions in __cxa_rethrow_primary_exception
...
llvm-svn: 147108
2011-12-21 23:48:05 +00:00
Howard Hinnant
e04f51662c
Added __cxa_increment_exception_refcount, __cxa_decrement_exception_refcount, __cxa_current_primary_exception, __cxa_rethrow_primary_exception
...
llvm-svn: 147106
2011-12-21 23:32:11 +00:00
Howard Hinnant
72a05a9198
Add new and delete operators
...
llvm-svn: 146989
2011-12-20 20:38:05 +00:00
Howard Hinnant
bf8a39bb94
Fixed several bugs, implemented support for vector types, and cleaned out dead code.
...
llvm-svn: 146677
2011-12-15 20:02:15 +00:00
Howard Hinnant
7a084fdd39
Fix size calculation for pointer to member function
...
llvm-svn: 146463
2011-12-13 01:23:16 +00:00
Howard Hinnant
58926c9a9b
Made some minor tweaks to __cxa_rethrow
...
llvm-svn: 146396
2011-12-12 19:11:42 +00:00
Howard Hinnant
7fcad54836
Added dependent exception support to __cxa_current_exception_type
...
llvm-svn: 146381
2011-12-12 18:16:10 +00:00
Howard Hinnant
8de583abf2
Added support for <special-name> ::= TC <first type> <number> _ <second type> # construction vtable for second-in-first, and for <special-name> ::= GR <object name> # reference temporary for object
...
llvm-svn: 146274
2011-12-09 20:07:56 +00:00
Howard Hinnant
6ccae15ef0
Modified __cxa_end_catch to handle dependent exceptions.
...
llvm-svn: 146172
2011-12-08 19:35:18 +00:00
Howard Hinnant
5ec9183afc
Reviewing cxa_exception.cpp and marking as implemented as I go. Not marking as implemented on arm when I'm not sure about that platform.
...
llvm-svn: 146072
2011-12-07 21:16:40 +00:00
Howard Hinnant
b3344a3ac7
Added __cxa_allocate_dependent_exception and __cxa_free_dependent_exception and marked them as done.
...
llvm-svn: 146045
2011-12-07 18:30:06 +00:00
Howard Hinnant
dfb34fcb1a
Substituted std::get_terminate() for direct access to the handler function pointer (which is now a static in cxa_handlers.cpp). This has the advantage of going through the atomic API and so is less likely to cause a data race. Ditto for unexpected.
...
llvm-svn: 145951
2011-12-06 19:02:03 +00:00
Howard Hinnant
987afbeede
Add/update copyright notices
...
llvm-svn: 145949
2011-12-06 18:01:47 +00:00
Howard Hinnant
2642af9e23
terminate, unexpected and new handlers. If terminating while an exception is unwinding, an attempt is made to print out the what() string if the exception is derived from std::exception. __terminate(handler) and __unexpected(handler) helpers are present in anticipation of other parts of libc++abi needing to call these interfaces with custom handlers.
...
llvm-svn: 145948
2011-12-06 17:51:25 +00:00
Howard Hinnant
dc82cca6bf
Updated heuristic regulating small string buffer
...
llvm-svn: 145543
2011-12-01 00:08:59 +00:00
Howard Hinnant
148b3f64ec
Add alignment requirement to char buffer
...
llvm-svn: 145277
2011-11-28 21:03:21 +00:00
Marshall Clow
9b454bc912
reformatted to match Clang style; thanks to John McCall for the nudge
...
llvm-svn: 137623
2011-08-15 18:06:47 +00:00
Howard Hinnant
26a9d23657
demangler: Drop preceeding () from function types, but not from pointers and references to function types
...
llvm-svn: 137469
2011-08-12 17:33:10 +00:00
Marshall Clow
8769449b61
First cut at exception handling; missing dependent exceptions. Next step: tests
...
llvm-svn: 137118
2011-08-09 15:09:41 +00:00
Howard Hinnant
49b607a2cd
Silence some -Wall warnings pointed out by Marshall Clow
...
llvm-svn: 137047
2011-08-08 15:49:07 +00:00
Marshall Clow
7c9f1fa9cf
Remove include reference to non-existant file cxa_exception_storage.hpp
...
llvm-svn: 137046
2011-08-08 15:12:08 +00:00
Nick Kledzik
2dfc79b19e
make cxxabi.h safe for C code to include
...
llvm-svn: 136682
2011-08-02 05:15:26 +00:00
Nick Kledzik
1c839a945b
use LIBCXXABI_NORETURN
...
llvm-svn: 136681
2011-08-02 05:01:31 +00:00
Nick Kledzik
12a10bc046
make LIBCXXABI_NORETURN be the right attribute
...
llvm-svn: 136680
2011-08-02 05:01:17 +00:00
Nick Kledzik
7cb4926da1
use abort_message() for pthread errors in __cxa_get_globals
...
llvm-svn: 136672
2011-08-02 01:34:26 +00:00
Nick Kledzik
18ab5f4164
use abort_message()
...
llvm-svn: 136671
2011-08-02 01:19:07 +00:00
Nick Kledzik
49cbb02a6a
move abort_message() to its own file
...
llvm-svn: 136670
2011-08-02 01:18:14 +00:00
Nick Kledzik
d5b690d39c
add abort_message() utility function
...
llvm-svn: 136669
2011-08-02 01:16:03 +00:00
Nick Kledzik
476e600cd4
Added kledzik to CREDITS.TXT
...
llvm-svn: 136667
2011-08-02 01:05:24 +00:00
Marshall Clow
b226908bea
Updated comments
...
llvm-svn: 135909
2011-07-25 15:00:11 +00:00
Marshall Clow
e41bb4dd69
Added copyright header
...
llvm-svn: 135601
2011-07-20 18:41:23 +00:00
Howard Hinnant
c6b4318b9a
Update status: http://libcxxabi.llvm.org/spec.html . Looking good! :-)
...
llvm-svn: 135590
2011-07-20 16:32:57 +00:00
Marshall Clow
e2dcb75b2e
Memory manangement routines for exception objects
...
llvm-svn: 135587
2011-07-20 15:04:39 +00:00
Marshall Clow
1df50ca6a2
Exception handling stuctures, and thread-local variables for exception handling
...
llvm-svn: 135586
2011-07-20 14:53:53 +00:00
Marshall Clow
60fa2d232a
Fixed struct/class mismatch for std::type_info and added NORETURN flags
...
llvm-svn: 135584
2011-07-20 14:27:46 +00:00
Howard Hinnant
4af8869934
Update by Marshall Clow
...
llvm-svn: 135397
2011-07-18 16:38:32 +00:00
Howard Hinnant
08ad085712
A stawman specification for libc++abi and status page
...
llvm-svn: 135181
2011-07-14 20:16:50 +00:00
Howard Hinnant
471e111324
In cxa_demangle.cpp, rewrite __parse_unresolved_name to reflect updated understanding and sync with updated clang mangling. Also fix think-o in __parse_encoding enabling the parsing of trailing .eh and .b.
...
llvm-svn: 133632
2011-06-22 19:27:39 +00:00
Marshall Clow
92091dbe41
Clean up the vector tests
...
llvm-svn: 132921
2011-06-13 17:57:10 +00:00
Marshall Clow
280ddee8bd
Implement vector new and delete functionality
...
llvm-svn: 132832
2011-06-10 03:40:19 +00:00
Marshall Clow
8da97113c2
Added Marshall to CREDITS.TXT as requested
...
llvm-svn: 132754
2011-06-08 16:58:01 +00:00
Howard Hinnant
575498b52f
tabs to spaces
...
llvm-svn: 132729
2011-06-07 19:56:49 +00:00
Nick Lewycky
69e35a7f55
Add support for the ARM EABI variant of the __cxa_guard methods, controlled by
...
the LIBCXXABI_ARMEABI macro.
llvm-svn: 132723
2011-06-07 18:46:10 +00:00
Nick Lewycky
6fde150697
Add more tests for cxa_guard methods. This includes our first two tests using
...
actual threads!
There's no build file for libcxxabi, so I'll tell you that I built it with this:
$ g++-4.6 -pthread -std=gnu++0x test_guard.cpp ../src/cxa_guard.o -o test_guard
llvm-svn: 132644
2011-06-04 18:01:24 +00:00
Marshall Clow
f8da5b22af
Tests for bad_typeid and bad_cast
...
llvm-svn: 132545
2011-06-03 13:54:37 +00:00
Marshall Clow
ad3dea06a9
Added __cxa_bad_cast and __cxa_bad_typeid and placeholder NORETURN macro
...
llvm-svn: 132524
2011-06-03 02:04:41 +00:00
Howard Hinnant
4a88971ac1
Introduce cxa_virtual.cpp and cxa_guard.cpp. Contributed by Nick Lewycky, Howard Hinnant and John McCall
...
llvm-svn: 132009
2011-05-24 22:01:16 +00:00
Howard Hinnant
f3f1a9c942
Add goal
...
llvm-svn: 131703
2011-05-19 23:38:38 +00:00
Howard Hinnant
30ab971979
Fix think-o
...
llvm-svn: 131700
2011-05-19 23:37:21 +00:00
Howard Hinnant
d13581e492
testing
...
llvm-svn: 131694
2011-05-19 22:57:05 +00:00
Howard Hinnant
58bc7ff892
testing
...
llvm-svn: 131693
2011-05-19 22:56:33 +00:00
Howard Hinnant
7b0290da3f
Add Mac OS X as supported platform.
...
llvm-svn: 131686
2011-05-19 22:03:11 +00:00
Howard Hinnant
4ed80a3372
Add Mac OS X as supported platform.
...
llvm-svn: 131685
2011-05-19 22:02:38 +00:00
Howard Hinnant
d3da57f99b
initial import
...
llvm-svn: 130921
2011-05-05 15:27:28 +00:00