On single threaded systems, turn mutexes into nops

http://reviews.llvm.org/D3386


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@208135 91177308-0d34-0410-b5e6-96231b3b80d8
Make libc++abi use the implementation of __numstr from libc++. No functionality change, just removal of duplicated code.

git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@208246 91177308-0d34-0410-b5e6-96231b3b80d8
Fix broken build from r208135

git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@208350 91177308-0d34-0410-b5e6-96231b3b80d8
Fixes more incorrect #ifs for SJ/LJ exceptions

Replaces several `#if __arm__` with `#if __USING_SJLJ_EXCEPTIONS__`.


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@208352 91177308-0d34-0410-b5e6-96231b3b80d8
Check exception specification with __cplusplus.

To allow the compilation with gcc, we can't use the
__has_feature(cxx_noexcept) to detect the default destructor
exception specification, which is noexcept(true) by default
in C++11.  We should use __cplusplus >= 201103L instead.



git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@208465 91177308-0d34-0410-b5e6-96231b3b80d8
Implement ARM EHABI exception handling.

This commit implements the ARM zero-cost exception handling
support for libc++abi.


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@208466 91177308-0d34-0410-b5e6-96231b3b80d8
PR19091: Track whether we're demangling a function template specialization to
determine whether we get a mangling for a return type, rather than trying to
figure it out based on whether the mangled name ended with a '>'.


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@208611 91177308-0d34-0410-b5e6-96231b3b80d8
Fix typo in comment.


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@208795 91177308-0d34-0410-b5e6-96231b3b80d8
Let libc++abi compile with gcc.

There was a single problem in cxa_demangle.cpp, where gcc would complain
`error: changes meaning of 'String'` about the line `typedef String String;`.
According to 3.3.7p2, this diagnostic is allowed (but not required, so clang
does not have to report this).

As a fix, make string_pair a template and pass String as template parameter.
This fixes the error with gcc and also removes some repetition from the code. 

No behavior change.


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@209909 91177308-0d34-0410-b5e6-96231b3b80d8
Add EH test cases corresponding to C++ ABI # 15.3.3

git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@209943 91177308-0d34-0410-b5e6-96231b3b80d8
Add EH test case checking that handlers in noexcept functions can still unwind

git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@209944 91177308-0d34-0410-b5e6-96231b3b80d8
Add test case for inherited exceptions

Test case written by Dana Jansens.


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@210129 91177308-0d34-0410-b5e6-96231b3b80d8
Add a FAQ section, with a question about why the std::exception class destructors live in libc++abi

git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@210661 91177308-0d34-0410-b5e6-96231b3b80d8
Start landing support for ARM EHABI unwinding.

The new code will be behind a LIBCXXABI_ARM_EHABI define (so that platforms
that don't want it can continue using e.g. SJLJ). This commit mostly just
adds the LIBCXXABI_ARM_EHABI define.


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@211739 91177308-0d34-0410-b5e6-96231b3b80d8
Land support for ARM EHABI unwinding for libunwind.

This was written by:
Albert Wong <ajwong@chromium.org>
Antoine Labour <piman@chromium.org>
Dana Jansen <danakj@chromium.org
Jonathan Roelofs <jonathan@codesourcery.com>
Nico Weber <thakis@chromium.org>


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@211743 91177308-0d34-0410-b5e6-96231b3b80d8
Update libc++abi to use the ARM EHABI unwinder from its libunwind.


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@211745 91177308-0d34-0410-b5e6-96231b3b80d8
Minor libc++abi changes to make things build better with gcc.


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@211748 91177308-0d34-0410-b5e6-96231b3b80d8
Fix building for iOS

git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@211751 91177308-0d34-0410-b5e6-96231b3b80d8
Add missing header for _LIBUNWIND_LOG().


git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@211775 91177308-0d34-0410-b5e6-96231b3b80d8
Fix linux build.

* Replace strlcpy with snprintf since strlcpy is not available
  in glibc.

* Replace __LINUX__ with __linux__.



git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@211784 91177308-0d34-0410-b5e6-96231b3b80d8