Import a slightly newer libc++, with some bugs fixed that were found by running

the test suite on FreeBSD.

Approved by:	dim (mentor)
This commit is contained in:
theraven 2012-03-14 14:40:22 +00:00
parent ff1fc6fb5c
commit eccfeea8a5
4 changed files with 20 additions and 11 deletions

View File

@ -245,6 +245,10 @@ typedef __char32_t char32_t;
#define _LIBCPP_HAS_NO_CONSTEXPR
#endif
#if __FreeBSD__
#define _LIBCPP_HAS_QUICK_EXIT
#endif
#if (__has_feature(cxx_noexcept))
# define _NOEXCEPT noexcept
# define _NOEXCEPT_(x) noexcept(x)

View File

@ -131,6 +131,10 @@ using ::mbtowc;
using ::wctomb;
using ::mbstowcs;
using ::wcstombs;
#ifdef _LIBCPP_HAS_QUICK_EXIT
using ::at_quick_exit;
using ::quick_exit;
#endif
// MSVC already has the correct prototype in <stdlib.h.h> #ifdef __cplusplus
#if !defined(_MSC_VER) && !defined(__sun__)

View File

@ -114,22 +114,26 @@ exception::~exception() _NOEXCEPT
{
}
bad_exception::~bad_exception() _NOEXCEPT
{
}
const char* exception::what() const _NOEXCEPT
{
return "std::exception";
}
#endif // _LIBCPPABI_VERSION
#endif //LIBCXXRT
#ifndef _LIBCPPABI_VERSION
bad_exception::~bad_exception() _NOEXCEPT
{
}
const char* bad_exception::what() const _NOEXCEPT
{
return "std::bad_exception";
}
#endif // _LIBCPPABI_VERSION
#endif //LIBCXXRT
#endif
exception_ptr::~exception_ptr() _NOEXCEPT
{

View File

@ -24,8 +24,6 @@
static std::new_handler __new_handler;
#endif
#if !defined (LIBCXXRT) // && !defined(_LIBCPPABI_VERSION)
// Implement all new and delete operators as weak definitions
// in this shared library, so that they can be overriden by programs
// that define non-weak copies of the functions.
@ -134,8 +132,6 @@ operator delete[] (void* ptr, const std::nothrow_t&) _NOEXCEPT
::operator delete[](ptr);
}
#endif // !_LIBCPPABI_VERSION && !LIBCXXRT
namespace std
{
@ -171,6 +167,8 @@ bad_alloc::what() const _NOEXCEPT
return "std::bad_alloc";
}
#endif //LIBCXXRT
bad_array_new_length::bad_array_new_length() _NOEXCEPT
{
}
@ -186,7 +184,6 @@ bad_array_new_length::what() const _NOEXCEPT
}
#endif
#endif //LIBCXXRT
void
__throw_bad_alloc()