Nick Kledzik
1ffee2af6e
[libunwind] remove stray conditional
...
llvm-svn: 200432
2014-01-30 00:27:16 +00:00
Nico Weber
1c9ff122b6
Add a first cut at a Registers_arm class, to be used for 32bit arm EHABI unwinding.
...
llvm-svn: 197591
2013-12-18 17:53:55 +00:00
Nick Kledzik
fbea189748
Rename LIBUNWIND_AVAIL to LIBUNWIND_UNAVAIL so as to not conflict with other (different) LIBUNWIND_AVAIL define
...
llvm-svn: 193839
2013-11-01 00:32:26 +00:00
Saleem Abdulrasool
55410fff8e
unwinder: conditionalise availability
...
__attribute__ (( unavailable )) is for Apple specific builds. Create a macro
to conditionalise the usage of the macro. This is to aid in porting the
unwinder to other platforms.
llvm-svn: 192868
2013-10-17 03:57:41 +00:00
Nick Kledzik
312fcd0e1c
libcxxabi contains the runtime support for C++. But, as some folks have
...
realized, it is not complete. It relies on some _Unwind_* functions to be
supplied by the OS. That means it cannot be ported to platforms that don’t
already have an unwinder.
Years ago Apple wrote its own unwinder for MacOSX and iOS. To make libcxxabi
complete, Apple has decided the source code for its unwinder can be contributed
to the open source LLVM libcxxabi project, with a dual licensed under LLVM
and MIT license.
So, I’ve spent some time cleaning up the sources to make them conform with
LLVM style and to conditionalize the sources in a way that should make it
easier to port to other platforms. The sources are in a separate "Unwind"
directory under "src" in libcxxabi.
Background:
Most architectures now use "zero cost" exceptions for C++. The zero cost means
there are no extra instructions executed if no exceptions are thrown. But if
an exception is thrown, the runtime must consult side tables and figure out how
to restore registers and "unwind" from the current stack frame to the catch
clause. That ability to modify the stack frames and cause the thread to resume
in a catch clause with all registers restored properly is the main purpose
of the unwinder.
This unwinder has two levels of API. The high level APIs are the _Unwind_*
functions which the cxa_* exception functions in libcxxabi require. The low
level APIs are the unw_* functions which are an interface defined by the the
old HP libunwind project (which shares no code with this unwinder).
llvm-svn: 192136
2013-10-07 21:39:41 +00:00
Howard Hinnant
80fe668394
Tweaks/cleanups provided by Matthew Dempsky
...
llvm-svn: 184118
2013-06-17 20:25:21 +00:00
Howard Hinnant
f2ca35cd79
Add capability to demangle invocation functions for ObjC blocks.
...
llvm-svn: 179208
2013-04-10 19:44:03 +00:00
Howard Hinnant
4ac72dd982
I've moved __cxa_terminate_handler, __cxa_unexpected_handler and __cxa_new_handler from the public header cxxabi.h into the private header cxa_handlers.hpp. During this move I've also moved them from namespace __cxxabiapple into the global namespace. They are, and have always been extern C and so the namespace (or lack of it) does not affect their ABI. In general external clients should not reference these symbols. They are atomic variables and will be changing into C++11 atomic variables in the future. However for those few clients who really need access to them, their name, mangling, size, alignment and layout will remain stable. You just may need your own declaration of them. Include guards have been added to the private header cxa_exception.hpp. The private header cxa_default_handlers.hpp has been removed and the default handlers are now file-static. Include guards have been added to the private header cxa_handlers.hpp.
...
llvm-svn: 153039
2012-03-19 16:20:34 +00:00
Howard Hinnant
baae2be624
Enable __arm__ on apple
...
llvm-svn: 152735
2012-03-14 19:30:00 +00:00
Howard Hinnant
49f28b5a47
I had originally made the handler function pointers a static internal detail, not accessible to the outside world. I did this because they must be accessed in a thread-safe manner, and the library provides thread-safe getters and setters for these. However I am at least temporarily making them public and giving them the Apple-extension names. In the future these may disappear again, and I think that would probably be a good idea.
...
llvm-svn: 151256
2012-02-23 15:32:07 +00:00
Howard Hinnant
995fcc0d49
Add (reluctantly) a namespace alias for __cxxabiv1.
...
llvm-svn: 150828
2012-02-17 18:45:44 +00:00
Howard Hinnant
eaa65afc7b
Work on restricting symbol visibility.
...
llvm-svn: 149633
2012-02-02 20:47:28 +00:00
Howard Hinnant
90ef25c05e
Add version number to this library so we can recognize when we're using it.
...
llvm-svn: 149632
2012-02-02 20:47:05 +00:00
Howard Hinnant
5bbc597f1e
Put throw() clauses back on these functions in cxxabi.h. This header must be C++03 compatible and these throw specs are consistent with the current cxxabi.h that Apple ships.
...
llvm-svn: 149249
2012-01-30 16:02:11 +00:00
Howard Hinnant
abc770690a
By changing all of the throw() specs to noexcept I've been able to compile and link all of the source files into a dylib. Prior to this substitution the changed functions were calling __cxa_call_unexpected which isn't implemented yet. However in none of these cases do we actaully want __cxa_call_unexpected to be called. Primative buildit script added.
...
llvm-svn: 148880
2012-01-24 23:42:30 +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
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
49b607a2cd
Silence some -Wall warnings pointed out by Marshall Clow
...
llvm-svn: 137047
2011-08-08 15:49:07 +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
12a10bc046
make LIBCXXABI_NORETURN be the right attribute
...
llvm-svn: 136680
2011-08-02 05:01:17 +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
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
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
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
d3da57f99b
initial import
...
llvm-svn: 130921
2011-05-05 15:27:28 +00:00