aboutsummaryrefslogtreecommitdiff
path: root/system/lib
diff options
context:
space:
mode:
Diffstat (limited to 'system/lib')
-rw-r--r--system/lib/libcxx/CREDITS.TXT10
-rw-r--r--system/lib/libcxx/algorithm.cpp1
-rw-r--r--system/lib/libcxx/debug.cpp108
-rw-r--r--system/lib/libcxx/exception.cpp104
-rw-r--r--system/lib/libcxx/future.cpp6
-rw-r--r--system/lib/libcxx/ios.cpp9
-rw-r--r--system/lib/libcxx/iostream.cpp16
-rw-r--r--system/lib/libcxx/locale.cpp49
-rw-r--r--system/lib/libcxx/mutex.cpp3
-rw-r--r--system/lib/libcxx/new.cpp54
-rw-r--r--system/lib/libcxx/optional.cpp25
-rw-r--r--system/lib/libcxx/random.cpp26
-rw-r--r--system/lib/libcxx/readme.txt2
-rw-r--r--system/lib/libcxx/shared_mutex.cpp101
-rw-r--r--system/lib/libcxx/stdexcept.cpp18
-rw-r--r--system/lib/libcxx/string.cpp4
-rw-r--r--system/lib/libcxx/strstream.cpp14
-rw-r--r--system/lib/libcxx/support/win32/locale_win32.cpp25
-rw-r--r--system/lib/libcxx/support/win32/support.cpp69
-rw-r--r--system/lib/libcxx/symbols355
-rw-r--r--system/lib/libcxx/system_error.cpp1
-rw-r--r--system/lib/libcxx/thread.cpp10
-rw-r--r--system/lib/libcxx/typeinfo.cpp15
-rw-r--r--system/lib/libcxx/valarray.cpp2
24 files changed, 695 insertions, 332 deletions
diff --git a/system/lib/libcxx/CREDITS.TXT b/system/lib/libcxx/CREDITS.TXT
index 5e4d14ec..368b526f 100644
--- a/system/lib/libcxx/CREDITS.TXT
+++ b/system/lib/libcxx/CREDITS.TXT
@@ -31,7 +31,7 @@ D: FreeBSD and Solaris ports, libcxxrt support, some atomics work.
N: Marshall Clow
E: mclow.lists@gmail.com
E: marshall@idio.com
-D: Minor patches and bug fixes.
+D: C++14 support, patches and bug fixes.
N: Bill Fisher
E: william.w.fisher@gmail.com
@@ -76,6 +76,10 @@ N: Bjorn Reese
E: breese@users.sourceforge.net
D: Initial regex prototype
+N: Nico Rieck
+E: nico.rieck@gmail.com
+D: Windows fixes
+
N: Jonathan Sauer
D: Minor patches, mostly related to constexpr
@@ -105,6 +109,10 @@ N: Zhang Xiongpang
E: zhangxiongpang@gmail.com
D: Minor patches and bug fixes.
+N: Xing Xue
+E: xingxue@ca.ibm.com
+D: AIX port
+
N: Zhihao Yuan
E: lichray@gmail.com
D: Standard compatibility fixes.
diff --git a/system/lib/libcxx/algorithm.cpp b/system/lib/libcxx/algorithm.cpp
index 6d5cf7c0..10c4c331 100644
--- a/system/lib/libcxx/algorithm.cpp
+++ b/system/lib/libcxx/algorithm.cpp
@@ -7,6 +7,7 @@
//
//===----------------------------------------------------------------------===//
+#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
#include "algorithm"
#include "random"
#include "mutex"
diff --git a/system/lib/libcxx/debug.cpp b/system/lib/libcxx/debug.cpp
index c9b09b7a..d0e86795 100644
--- a/system/lib/libcxx/debug.cpp
+++ b/system/lib/libcxx/debug.cpp
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
-#define _LIBCPP_DEBUG2 1
+#define _LIBCPP_DEBUG 1
#include "__config"
#include "__debug"
#include "functional"
@@ -118,20 +118,19 @@ void
__libcpp_db::__insert_ic(void* __i, const void* __c)
{
WLock _(mut());
- __i_node* i = __insert_iterator(__i);
- const char* errmsg =
- "Container constructed in a translation unit with debug mode disabled."
- " But it is being used in a translation unit with debug mode enabled."
- " Enable it in the other translation unit with #define _LIBCPP_DEBUG2 1";
- _LIBCPP_ASSERT(__cbeg_ != __cend_, errmsg);
+ if (__cbeg_ == __cend_)
+ return;
size_t hc = hash<const void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
__c_node* c = __cbeg_[hc];
- _LIBCPP_ASSERT(c != nullptr, errmsg);
+ if (c == nullptr)
+ return;
while (c->__c_ != __c)
{
c = c->__next_;
- _LIBCPP_ASSERT(c != nullptr, errmsg);
+ if (c == nullptr)
+ return;
}
+ __i_node* i = __insert_iterator(__i);
c->__add(i);
i->__c_ = c;
}
@@ -217,18 +216,23 @@ void
__libcpp_db::__invalidate_all(void* __c)
{
WLock _(mut());
- size_t hc = hash<void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
- __c_node* p = __cbeg_[hc];
- _LIBCPP_ASSERT(p != nullptr, "debug mode internal logic error __invalidate_all A");
- while (p->__c_ != __c)
- {
- p = p->__next_;
- _LIBCPP_ASSERT(p != nullptr, "debug mode internal logic error __invalidate_all B");
- }
- while (p->end_ != p->beg_)
+ if (__cend_ != __cbeg_)
{
- --p->end_;
- (*p->end_)->__c_ = nullptr;
+ size_t hc = hash<void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
+ __c_node* p = __cbeg_[hc];
+ if (p == nullptr)
+ return;
+ while (p->__c_ != __c)
+ {
+ p = p->__next_;
+ if (p == nullptr)
+ return;
+ }
+ while (p->end_ != p->beg_)
+ {
+ --p->end_;
+ (*p->end_)->__c_ = nullptr;
+ }
}
}
@@ -236,13 +240,26 @@ __c_node*
__libcpp_db::__find_c_and_lock(void* __c) const
{
mut().lock();
+ if (__cend_ == __cbeg_)
+ {
+ mut().unlock();
+ return nullptr;
+ }
size_t hc = hash<void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
__c_node* p = __cbeg_[hc];
- _LIBCPP_ASSERT(p != nullptr, "debug mode internal logic error __find_c_and_lock A");
+ if (p == nullptr)
+ {
+ mut().unlock();
+ return nullptr;
+ }
while (p->__c_ != __c)
{
p = p->__next_;
- _LIBCPP_ASSERT(p != nullptr, "debug mode internal logic error __find_c_and_lock B");
+ if (p == nullptr)
+ {
+ mut().unlock();
+ return nullptr;
+ }
}
return p;
}
@@ -271,28 +288,35 @@ void
__libcpp_db::__erase_c(void* __c)
{
WLock _(mut());
- size_t hc = hash<void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
- __c_node* p = __cbeg_[hc];
- __c_node* q = nullptr;
- _LIBCPP_ASSERT(p != nullptr, "debug mode internal logic error __erase_c A");
- while (p->__c_ != __c)
+ if (__cend_ != __cbeg_)
{
- q = p;
- p = p->__next_;
- _LIBCPP_ASSERT(p != nullptr, "debug mode internal logic error __erase_c B");
- }
- if (q == nullptr)
- __cbeg_[hc] = p->__next_;
- else
- q->__next_ = p->__next_;
- while (p->end_ != p->beg_)
- {
- --p->end_;
- (*p->end_)->__c_ = nullptr;
+ size_t hc = hash<void*>()(__c) % static_cast<size_t>(__cend_ - __cbeg_);
+ __c_node* p = __cbeg_[hc];
+ if (p == nullptr)
+ return;
+ __c_node* q = nullptr;
+ _LIBCPP_ASSERT(p != nullptr, "debug mode internal logic error __erase_c A");
+ while (p->__c_ != __c)
+ {
+ q = p;
+ p = p->__next_;
+ if (p == nullptr)
+ return;
+ _LIBCPP_ASSERT(p != nullptr, "debug mode internal logic error __erase_c B");
+ }
+ if (q == nullptr)
+ __cbeg_[hc] = p->__next_;
+ else
+ q->__next_ = p->__next_;
+ while (p->end_ != p->beg_)
+ {
+ --p->end_;
+ (*p->end_)->__c_ = nullptr;
+ }
+ free(p->beg_);
+ free(p);
+ --__csz_;
}
- free(p->beg_);
- free(p);
- --__csz_;
}
void
diff --git a/system/lib/libcxx/exception.cpp b/system/lib/libcxx/exception.cpp
index 3487bd8b..83f6fd19 100644
--- a/system/lib/libcxx/exception.cpp
+++ b/system/lib/libcxx/exception.cpp
@@ -10,6 +10,7 @@
#include <stdio.h>
#include "exception"
+#include "new"
#ifndef __has_include
#define __has_include(inc) 0
@@ -90,14 +91,14 @@ terminate() _NOEXCEPT
(*get_terminate())();
// handler should not return
printf("terminate_handler unexpectedly returned\n");
- ::abort ();
+ ::abort();
#ifndef _LIBCPP_NO_EXCEPTIONS
}
catch (...)
{
// handler should not throw exception
printf("terminate_handler unexpectedly threw an exception\n");
- ::abort ();
+ ::abort();
}
#endif // _LIBCPP_NO_EXCEPTIONS
}
@@ -111,12 +112,17 @@ bool uncaught_exception() _NOEXCEPT
// on Darwin, there is a helper function so __cxa_get_globals is private
return __cxa_uncaught_exception();
#else // __APPLE__
- #warning uncaught_exception not yet implemented
+# if defined(_MSC_VER) && ! defined(__clang__)
+ _LIBCPP_WARNING("uncaught_exception not yet implemented")
+# else
+# warning uncaught_exception not yet implemented
+# endif
printf("uncaught_exception not yet implemented\n");
::abort();
#endif // __APPLE__
}
+
#ifndef _LIBCPPABI_VERSION
exception::~exception() _NOEXCEPT
@@ -143,16 +149,50 @@ const char* bad_exception::what() const _NOEXCEPT
#endif
+#if defined(__GLIBCXX__)
+
+// libsupc++ does not implement the dependent EH ABI and the functionality
+// it uses to implement std::exception_ptr (which it declares as an alias of
+// std::__exception_ptr::exception_ptr) is not directly exported to clients. So
+// we have little choice but to hijack std::__exception_ptr::exception_ptr's
+// (which fortunately has the same layout as our std::exception_ptr) copy
+// constructor, assignment operator and destructor (which are part of its
+// stable ABI), and its rethrow_exception(std::__exception_ptr::exception_ptr)
+// function.
+
+namespace __exception_ptr
+{
+
+struct exception_ptr
+{
+ void* __ptr_;
+
+ exception_ptr(const exception_ptr&) _NOEXCEPT;
+ exception_ptr& operator=(const exception_ptr&) _NOEXCEPT;
+ ~exception_ptr() _NOEXCEPT;
+};
+
+}
+
+_LIBCPP_NORETURN void rethrow_exception(__exception_ptr::exception_ptr);
+
+#endif
exception_ptr::~exception_ptr() _NOEXCEPT
{
#if HAVE_DEPENDENT_EH_ABI
__cxa_decrement_exception_refcount(__ptr_);
+#elif defined(__GLIBCXX__)
+ reinterpret_cast<__exception_ptr::exception_ptr*>(this)->~exception_ptr();
#else
- #warning exception_ptr not yet implemented
+# if defined(_MSC_VER) && ! defined(__clang__)
+ _LIBCPP_WARNING("exception_ptr not yet implemented")
+# else
+# warning exception_ptr not yet implemented
+# endif
printf("exception_ptr not yet implemented\n");
::abort();
-#endif // __APPLE__
+#endif
}
exception_ptr::exception_ptr(const exception_ptr& other) _NOEXCEPT
@@ -160,11 +200,18 @@ exception_ptr::exception_ptr(const exception_ptr& other) _NOEXCEPT
{
#if HAVE_DEPENDENT_EH_ABI
__cxa_increment_exception_refcount(__ptr_);
+#elif defined(__GLIBCXX__)
+ new (reinterpret_cast<void*>(this)) __exception_ptr::exception_ptr(
+ reinterpret_cast<const __exception_ptr::exception_ptr&>(other));
#else
- #warning exception_ptr not yet implemented
+# if defined(_MSC_VER) && ! defined(__clang__)
+ _LIBCPP_WARNING("exception_ptr not yet implemented")
+# else
+# warning exception_ptr not yet implemented
+# endif
printf("exception_ptr not yet implemented\n");
::abort();
-#endif // __APPLE__
+#endif
}
exception_ptr& exception_ptr::operator=(const exception_ptr& other) _NOEXCEPT
@@ -177,11 +224,19 @@ exception_ptr& exception_ptr::operator=(const exception_ptr& other) _NOEXCEPT
__ptr_ = other.__ptr_;
}
return *this;
-#else // __APPLE__
- #warning exception_ptr not yet implemented
+#elif defined(__GLIBCXX__)
+ *reinterpret_cast<__exception_ptr::exception_ptr*>(this) =
+ reinterpret_cast<const __exception_ptr::exception_ptr&>(other);
+ return *this;
+#else
+# if defined(_MSC_VER) && ! defined(__clang__)
+ _LIBCPP_WARNING("exception_ptr not yet implemented")
+# else
+# warning exception_ptr not yet implemented
+# endif
printf("exception_ptr not yet implemented\n");
::abort();
-#endif // __APPLE__
+#endif
}
nested_exception::nested_exception() _NOEXCEPT
@@ -189,10 +244,14 @@ nested_exception::nested_exception() _NOEXCEPT
{
}
+#if !defined(__GLIBCXX__)
+
nested_exception::~nested_exception() _NOEXCEPT
{
}
+#endif
+
_LIBCPP_NORETURN
void
nested_exception::rethrow_nested() const
@@ -202,6 +261,7 @@ nested_exception::rethrow_nested() const
rethrow_exception(__ptr_);
}
+#if !defined(__GLIBCXX__)
exception_ptr current_exception() _NOEXCEPT
{
@@ -212,13 +272,19 @@ exception_ptr current_exception() _NOEXCEPT
exception_ptr ptr;
ptr.__ptr_ = __cxa_current_primary_exception();
return ptr;
-#else // __APPLE__
- #warning exception_ptr not yet implemented
+#else
+# if defined(_MSC_VER) && ! defined(__clang__)
+ _LIBCPP_WARNING( "exception_ptr not yet implemented" )
+# else
+# warning exception_ptr not yet implemented
+# endif
printf("exception_ptr not yet implemented\n");
::abort();
-#endif // __APPLE__
+#endif
}
+#endif // !__GLIBCXX__
+
_LIBCPP_NORETURN
void rethrow_exception(exception_ptr p)
{
@@ -226,10 +292,16 @@ void rethrow_exception(exception_ptr p)
__cxa_rethrow_primary_exception(p.__ptr_);
// if p.__ptr_ is NULL, above returns so we terminate
terminate();
-#else // __APPLE__
- #warning exception_ptr not yet implemented
+#elif defined(__GLIBCXX__)
+ rethrow_exception(reinterpret_cast<__exception_ptr::exception_ptr&>(p));
+#else
+# if defined(_MSC_VER) && ! defined(__clang__)
+ _LIBCPP_WARNING("exception_ptr not yet implemented")
+# else
+# warning exception_ptr not yet implemented
+# endif
printf("exception_ptr not yet implemented\n");
::abort();
-#endif // __APPLE__
+#endif
}
} // std
diff --git a/system/lib/libcxx/future.cpp b/system/lib/libcxx/future.cpp
index 7d9a5b5d..70919ab7 100644
--- a/system/lib/libcxx/future.cpp
+++ b/system/lib/libcxx/future.cpp
@@ -26,11 +26,15 @@ __future_error_category::name() const _NOEXCEPT
return "future";
}
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wswitch"
+
string
__future_error_category::message(int ev) const
{
switch (static_cast<future_errc>(ev))
{
+ case future_errc(0): // For backwards compatibility with C++11 (LWG 2056)
case future_errc::broken_promise:
return string("The associated promise has been destructed prior "
"to the associated state becoming ready.");
@@ -46,6 +50,8 @@ __future_error_category::message(int ev) const
return string("unspecified future_errc value\n");
}
+#pragma clang diagnostic pop
+
const error_category&
future_category() _NOEXCEPT
{
diff --git a/system/lib/libcxx/ios.cpp b/system/lib/libcxx/ios.cpp
index 732a61bb..004d3183 100644
--- a/system/lib/libcxx/ios.cpp
+++ b/system/lib/libcxx/ios.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
+
#include "ios"
#include "streambuf"
#include "istream"
@@ -61,7 +63,7 @@ __iostream_category::message(int ev) const
}
const error_category&
-iostream_category()
+iostream_category() _NOEXCEPT
{
static __iostream_category s;
return s;
@@ -147,8 +149,11 @@ ios_base::getloc() const
}
// xalloc
-
+#if __has_feature(cxx_atomic) && !defined(__EMSCRIPTEN__)
+atomic<int> ios_base::__xindex_ = ATOMIC_VAR_INIT(0);
+#else
int ios_base::__xindex_ = 0;
+#endif
int
ios_base::xalloc()
diff --git a/system/lib/libcxx/iostream.cpp b/system/lib/libcxx/iostream.cpp
index f413681f..7102e438 100644
--- a/system/lib/libcxx/iostream.cpp
+++ b/system/lib/libcxx/iostream.cpp
@@ -22,14 +22,14 @@ _ALIGNAS_TYPE (__stdinbuf<wchar_t> ) static char __wcin [sizeof(__stdinbuf <wcha
_ALIGNAS_TYPE (__stdoutbuf<wchar_t>) static char __wcout[sizeof(__stdoutbuf<wchar_t>)];
_ALIGNAS_TYPE (__stdoutbuf<wchar_t>) static char __wcerr[sizeof(__stdoutbuf<wchar_t>)];
-_ALIGNAS_TYPE (istream) char cin [sizeof(istream)];
-_ALIGNAS_TYPE (ostream) char cout[sizeof(ostream)];
-_ALIGNAS_TYPE (ostream) char cerr[sizeof(ostream)];
-_ALIGNAS_TYPE (ostream) char clog[sizeof(ostream)];
-_ALIGNAS_TYPE (wistream) char wcin [sizeof(wistream)];
-_ALIGNAS_TYPE (wostream) char wcout[sizeof(wostream)];
-_ALIGNAS_TYPE (wostream) char wcerr[sizeof(wostream)];
-_ALIGNAS_TYPE (wostream) char wclog[sizeof(wostream)];
+_ALIGNAS_TYPE (istream) _LIBCPP_FUNC_VIS char cin [sizeof(istream)];
+_ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char cout[sizeof(ostream)];
+_ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char cerr[sizeof(ostream)];
+_ALIGNAS_TYPE (ostream) _LIBCPP_FUNC_VIS char clog[sizeof(ostream)];
+_ALIGNAS_TYPE (wistream) _LIBCPP_FUNC_VIS char wcin [sizeof(wistream)];
+_ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wcout[sizeof(wostream)];
+_ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wcerr[sizeof(wostream)];
+_ALIGNAS_TYPE (wostream) _LIBCPP_FUNC_VIS char wclog[sizeof(wostream)];
ios_base::Init __start_std_streams;
diff --git a/system/lib/libcxx/locale.cpp b/system/lib/libcxx/locale.cpp
index ad64668f..a326323a 100644
--- a/system/lib/libcxx/locale.cpp
+++ b/system/lib/libcxx/locale.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
+
// On Solaris, we need to define something to make the C99 parts of localeconv
// visible.
#ifdef __sun__
@@ -26,7 +28,7 @@
#include "cstring"
#include "cwctype"
#include "__sso_allocator"
-#ifdef _LIBCPP_MSVCRT
+#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
#include <support/win32/locale_win32.h>
#else // _LIBCPP_MSVCRT
#include <langinfo.h>
@@ -36,7 +38,9 @@
// On Linux, wint_t and wchar_t have different signed-ness, and this causes
// lots of noise in the build log, but no bugs that I know of.
+#if defined(__clang__)
#pragma clang diagnostic ignored "-Wsign-conversion"
+#endif
_LIBCPP_BEGIN_NAMESPACE_STD
@@ -107,6 +111,11 @@ countof(const T * const begin, const T * const end)
}
+#if defined(_AIX)
+// Set priority to INT_MIN + 256 + 150
+# pragma priority ( -2147483242 )
+#endif
+
const locale::category locale::none;
const locale::category locale::collate;
const locale::category locale::ctype;
@@ -116,14 +125,23 @@ const locale::category locale::time;
const locale::category locale::messages;
const locale::category locale::all;
+#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wpadded"
+#endif
class _LIBCPP_HIDDEN locale::__imp
: public facet
{
enum {N = 28};
+#if defined(_LIBCPP_MSVC)
+// FIXME: MSVC doesn't support aligned parameters by value.
+// I can't get the __sso_allocator to work here
+// for MSVC I think for this reason.
+ vector<facet*> facets_;
+#else
vector<facet*, __sso_allocator<facet*, N> > facets_;
+#endif
string name_;
public:
explicit __imp(size_t refs = 0);
@@ -147,7 +165,9 @@ private:
template <class F> void install_from(const __imp& other);
};
+#if defined(__clang__)
#pragma clang diagnostic pop
+#endif
locale::__imp::__imp(size_t refs)
: facet(refs),
@@ -757,7 +777,7 @@ ctype<wchar_t>::~ctype()
bool
ctype<wchar_t>::do_is(mask m, char_type c) const
{
- return isascii(c) ? ctype<char>::classic_table()[c] & m : false;
+ return isascii(c) ? (ctype<char>::classic_table()[c] & m) != 0 : false;
}
const wchar_t*
@@ -1009,12 +1029,14 @@ ctype<char>::classic_table() _NOEXCEPT
return __cloc()->__ctype_b;
#elif __sun__
return __ctype_mask;
-#elif defined(_LIBCPP_MSVCRT)
+#elif defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
return _ctype+1; // internal ctype mask table defined in msvcrt.dll
// This is assumed to be safe, which is a nonsense assumption because we're
// going to end up dereferencing it later...
#elif defined(__EMSCRIPTEN__)
return *__ctype_b_loc();
+#elif defined(_AIX)
+ return (const unsigned long *)__lc_ctype_ptr->obj->mask;
#else
// Platform not supported: abort so the person doing the port knows what to
// fix
@@ -4350,7 +4372,7 @@ __num_put_base::__format_float(char* __fmtp, const char* __len,
if (__flags & ios_base::showpoint)
*__fmtp++ = '#';
ios_base::fmtflags floatfield = __flags & ios_base::floatfield;
- bool uppercase = __flags & ios_base::uppercase;
+ bool uppercase = (__flags & ios_base::uppercase) != 0;
if (floatfield == (ios_base::fixed | ios_base::scientific))
specify_precision = false;
else
@@ -4681,9 +4703,12 @@ __time_get::~__time_get()
{
freelocale(__loc_);
}
-
+#if defined(__clang__)
#pragma clang diagnostic ignored "-Wmissing-field-initializers"
+#endif
+#if defined(__GNUG__)
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
template <>
string
@@ -4829,7 +4854,9 @@ __time_get_storage<char>::__analyze(char fmt, const ctype<char>& ct)
return result;
}
+#if defined(__clang__)
#pragma clang diagnostic ignored "-Wmissing-braces"
+#endif
template <>
wstring
@@ -5848,7 +5875,7 @@ moneypunct_byname<char, true>::init(const char* nm)
__frac_digits_ = lc->int_frac_digits;
else
__frac_digits_ = base::do_frac_digits();
-#ifdef _LIBCPP_MSVCRT
+#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
if (lc->p_sign_posn == 0)
#else // _LIBCPP_MSVCRT
if (lc->int_p_sign_posn == 0)
@@ -5856,7 +5883,7 @@ moneypunct_byname<char, true>::init(const char* nm)
__positive_sign_ = "()";
else
__positive_sign_ = lc->positive_sign;
-#ifdef _LIBCPP_MSVCRT
+#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
if(lc->n_sign_posn == 0)
#else // _LIBCPP_MSVCRT
if (lc->int_n_sign_posn == 0)
@@ -5868,7 +5895,7 @@ moneypunct_byname<char, true>::init(const char* nm)
// the same places in curr_symbol since there's no way to
// represent anything else.
string_type __dummy_curr_symbol = __curr_symbol_;
-#ifdef _LIBCPP_MSVCRT
+#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
__init_pat(__pos_format_, __dummy_curr_symbol, true,
lc->p_cs_precedes, lc->p_sep_by_space, lc->p_sign_posn, ' ');
__init_pat(__neg_format_, __curr_symbol_, true,
@@ -6007,7 +6034,7 @@ moneypunct_byname<wchar_t, true>::init(const char* nm)
__frac_digits_ = lc->int_frac_digits;
else
__frac_digits_ = base::do_frac_digits();
-#ifdef _LIBCPP_MSVCRT
+#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
if (lc->p_sign_posn == 0)
#else // _LIBCPP_MSVCRT
if (lc->int_p_sign_posn == 0)
@@ -6027,7 +6054,7 @@ moneypunct_byname<wchar_t, true>::init(const char* nm)
wbe = wbuf + j;
__positive_sign_.assign(wbuf, wbe);
}
-#ifdef _LIBCPP_MSVCRT
+#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
if (lc->n_sign_posn == 0)
#else // _LIBCPP_MSVCRT
if (lc->int_n_sign_posn == 0)
@@ -6051,7 +6078,7 @@ moneypunct_byname<wchar_t, true>::init(const char* nm)
// the same places in curr_symbol since there's no way to
// represent anything else.
string_type __dummy_curr_symbol = __curr_symbol_;
-#ifdef _LIBCPP_MSVCRT
+#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
__init_pat(__pos_format_, __dummy_curr_symbol, true,
lc->p_cs_precedes, lc->p_sep_by_space, lc->p_sign_posn, L' ');
__init_pat(__neg_format_, __curr_symbol_, true,
diff --git a/system/lib/libcxx/mutex.cpp b/system/lib/libcxx/mutex.cpp
index 42195aa8..07678978 100644
--- a/system/lib/libcxx/mutex.cpp
+++ b/system/lib/libcxx/mutex.cpp
@@ -42,6 +42,7 @@ void
mutex::unlock() _NOEXCEPT
{
int ec = pthread_mutex_unlock(&__m_);
+ (void)ec;
assert(ec == 0);
}
@@ -79,6 +80,7 @@ fail:
recursive_mutex::~recursive_mutex()
{
int e = pthread_mutex_destroy(&__m_);
+ (void)e;
assert(e == 0);
}
@@ -94,6 +96,7 @@ void
recursive_mutex::unlock() _NOEXCEPT
{
int e = pthread_mutex_unlock(&__m_);
+ (void)e;
assert(e == 0);
}
diff --git a/system/lib/libcxx/new.cpp b/system/lib/libcxx/new.cpp
index b23a516f..fa0331a8 100644
--- a/system/lib/libcxx/new.cpp
+++ b/system/lib/libcxx/new.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+#define _LIBCPP_BUILDING_NEW
+
#include <stdlib.h>
#include "new"
@@ -28,16 +30,18 @@
#if defined(LIBCXXRT) || __has_include(<cxxabi.h>)
#include <cxxabi.h>
#endif // __has_include(<cxxabi.h>)
- #ifndef _LIBCPPABI_VERSION
+ #if !defined(_LIBCPPABI_VERSION) && !defined(__GLIBCXX__)
static std::new_handler __new_handler;
#endif // _LIBCPPABI_VERSION
#endif
+#ifndef __GLIBCXX__
+
// 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.
-__attribute__((__weak__, __visibility__("default")))
+_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
void *
operator new(std::size_t size)
#if !__has_feature(cxx_noexcept)
@@ -64,7 +68,7 @@ operator new(std::size_t size)
return p;
}
-__attribute__((__weak__, __visibility__("default")))
+_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
void*
operator new(size_t size, const std::nothrow_t&) _NOEXCEPT
{
@@ -83,7 +87,7 @@ operator new(size_t size, const std::nothrow_t&) _NOEXCEPT
return p;
}
-__attribute__((__weak__, __visibility__("default")))
+_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
void*
operator new[](size_t size)
#if !__has_feature(cxx_noexcept)
@@ -93,7 +97,7 @@ operator new[](size_t size)
return ::operator new(size);
}
-__attribute__((__weak__, __visibility__("default")))
+_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
void*
operator new[](size_t size, const std::nothrow_t&) _NOEXCEPT
{
@@ -112,7 +116,7 @@ operator new[](size_t size, const std::nothrow_t&) _NOEXCEPT
return p;
}
-__attribute__((__weak__, __visibility__("default")))
+_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
void
operator delete(void* ptr) _NOEXCEPT
{
@@ -120,34 +124,40 @@ operator delete(void* ptr) _NOEXCEPT
::free(ptr);
}
-__attribute__((__weak__, __visibility__("default")))
+_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
void
operator delete(void* ptr, const std::nothrow_t&) _NOEXCEPT
{
::operator delete(ptr);
}
-__attribute__((__weak__, __visibility__("default")))
+_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
void
operator delete[] (void* ptr) _NOEXCEPT
{
::operator delete (ptr);
}
-__attribute__((__weak__, __visibility__("default")))
+_LIBCPP_WEAK _LIBCPP_NEW_DELETE_VIS
void
operator delete[] (void* ptr, const std::nothrow_t&) _NOEXCEPT
{
::operator delete[](ptr);
}
+#endif // !__GLIBCXX__
+
namespace std
{
+#ifndef __GLIBCXX__
const nothrow_t nothrow = {};
+#endif
#ifndef _LIBCPPABI_VERSION
+#ifndef __GLIBCXX__
+
new_handler
set_new_handler(new_handler handler) _NOEXCEPT
{
@@ -160,12 +170,16 @@ get_new_handler() _NOEXCEPT
return __sync_fetch_and_add(&__new_handler, (new_handler)0);
}
+#endif // !__GLIBCXX__
+
#ifndef LIBCXXRT
bad_alloc::bad_alloc() _NOEXCEPT
{
}
+#ifndef __GLIBCXX__
+
bad_alloc::~bad_alloc() _NOEXCEPT
{
}
@@ -176,6 +190,8 @@ bad_alloc::what() const _NOEXCEPT
return "std::bad_alloc";
}
+#endif // !__GLIBCXX__
+
#endif //LIBCXXRT
bad_array_new_length::bad_array_new_length() _NOEXCEPT
@@ -187,12 +203,28 @@ bad_array_new_length::~bad_array_new_length() _NOEXCEPT
}
const char*
+bad_array_length::what() const _NOEXCEPT
+{
+ return "bad_array_length";
+}
+
+bad_array_length::bad_array_length() _NOEXCEPT
+{
+}
+
+bad_array_length::~bad_array_length() _NOEXCEPT
+{
+}
+
+const char*
bad_array_new_length::what() const _NOEXCEPT
{
return "bad_array_new_length";
}
-#endif
+#endif // _LIBCPPABI_VERSION
+
+#ifndef LIBSTDCXX
void
__throw_bad_alloc()
@@ -202,4 +234,6 @@ __throw_bad_alloc()
#endif
}
+#endif // !LIBSTDCXX
+
} // std
diff --git a/system/lib/libcxx/optional.cpp b/system/lib/libcxx/optional.cpp
new file mode 100644
index 00000000..fde071c9
--- /dev/null
+++ b/system/lib/libcxx/optional.cpp
@@ -0,0 +1,25 @@
+//===------------------------ optional.cpp --------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "optional"
+
+namespace std // purposefully not using versioning namespace
+{
+
+#ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
+
+bad_optional_access::~bad_optional_access() _NOEXCEPT {}
+
+#else
+
+bad_optional_access::~bad_optional_access() _NOEXCEPT = default;
+
+#endif
+
+} // std
diff --git a/system/lib/libcxx/random.cpp b/system/lib/libcxx/random.cpp
index 97a40c50..47cdee40 100644
--- a/system/lib/libcxx/random.cpp
+++ b/system/lib/libcxx/random.cpp
@@ -7,6 +7,12 @@
//
//===----------------------------------------------------------------------===//
+#if defined(_WIN32)
+// Must be defined before including stdlib.h to enable rand_s().
+#define _CRT_RAND_S
+#include <stdio.h>
+#endif
+
#include "random"
#include "system_error"
@@ -19,6 +25,25 @@
_LIBCPP_BEGIN_NAMESPACE_STD
+#if defined(_WIN32)
+random_device::random_device(const string&)
+{
+}
+
+random_device::~random_device()
+{
+}
+
+unsigned
+random_device::operator()()
+{
+ unsigned r;
+ errno_t err = rand_s(&r);
+ if (err)
+ __throw_system_error(err, "random_device rand_s failed.");
+ return r;
+}
+#else
random_device::random_device(const string& __token)
: __f_(open(__token.c_str(), O_RDONLY))
{
@@ -38,6 +63,7 @@ random_device::operator()()
read(__f_, &r, sizeof(r));
return r;
}
+#endif // defined(_WIN32)
double
random_device::entropy() const _NOEXCEPT
diff --git a/system/lib/libcxx/readme.txt b/system/lib/libcxx/readme.txt
index 7687e5b2..ae8090fd 100644
--- a/system/lib/libcxx/readme.txt
+++ b/system/lib/libcxx/readme.txt
@@ -1 +1 @@
-These files are from libc++, svn revision 187959, 2013-08-08.
+These files are from libc++, svn revision 194185, 2013-11-07.
diff --git a/system/lib/libcxx/shared_mutex.cpp b/system/lib/libcxx/shared_mutex.cpp
new file mode 100644
index 00000000..5fb22e44
--- /dev/null
+++ b/system/lib/libcxx/shared_mutex.cpp
@@ -0,0 +1,101 @@
+//===---------------------- shared_mutex.cpp ------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#define _LIBCPP_BUILDING_SHARED_MUTEX
+#include "shared_mutex"
+
+_LIBCPP_BEGIN_NAMESPACE_STD
+
+shared_mutex::shared_mutex()
+ : __state_(0)
+{
+}
+
+// Exclusive ownership
+
+void
+shared_mutex::lock()
+{
+ unique_lock<mutex> lk(__mut_);
+ while (__state_ & __write_entered_)
+ __gate1_.wait(lk);
+ __state_ |= __write_entered_;
+ while (__state_ & __n_readers_)
+ __gate2_.wait(lk);
+}
+
+bool
+shared_mutex::try_lock()
+{
+ unique_lock<mutex> lk(__mut_);
+ if (__state_ == 0)
+ {
+ __state_ = __write_entered_;
+ return true;
+ }
+ return false;
+}
+
+void
+shared_mutex::unlock()
+{
+ lock_guard<mutex> _(__mut_);
+ __state_ = 0;
+ __gate1_.notify_all();
+}
+
+// Shared ownership
+
+void
+shared_mutex::lock_shared()
+{
+ unique_lock<mutex> lk(__mut_);
+ while ((__state_ & __write_entered_) || (__state_ & __n_readers_) == __n_readers_)
+ __gate1_.wait(lk);
+ unsigned num_readers = (__state_ & __n_readers_) + 1;
+ __state_ &= ~__n_readers_;
+ __state_ |= num_readers;
+}
+
+bool
+shared_mutex::try_lock_shared()
+{
+ unique_lock<mutex> lk(__mut_);
+ unsigned num_readers = __state_ & __n_readers_;
+ if (!(__state_ & __write_entered_) && num_readers != __n_readers_)
+ {
+ ++num_readers;
+ __state_ &= ~__n_readers_;
+ __state_ |= num_readers;
+ return true;
+ }
+ return false;
+}
+
+void
+shared_mutex::unlock_shared()
+{
+ lock_guard<mutex> _(__mut_);
+ unsigned num_readers = (__state_ & __n_readers_) - 1;
+ __state_ &= ~__n_readers_;
+ __state_ |= num_readers;
+ if (__state_ & __write_entered_)
+ {
+ if (num_readers == 0)
+ __gate2_.notify_one();
+ }
+ else
+ {
+ if (num_readers == __n_readers_ - 1)
+ __gate1_.notify_one();
+ }
+}
+
+
+_LIBCPP_END_NAMESPACE_STD
diff --git a/system/lib/libcxx/stdexcept.cpp b/system/lib/libcxx/stdexcept.cpp
index 8d25f3ee..a4207d60 100644
--- a/system/lib/libcxx/stdexcept.cpp
+++ b/system/lib/libcxx/stdexcept.cpp
@@ -28,7 +28,9 @@
// Note: optimize for size
+#if ! defined(_LIBCPP_MSVC)
#pragma GCC visibility push(hidden)
+#endif
namespace
{
@@ -47,9 +49,9 @@ private:
count_t& count() const _NOEXCEPT {return (count_t&)(*(str_ - sizeof(count_t)));}
public:
explicit __libcpp_nmstr(const char* msg);
- __libcpp_nmstr(const __libcpp_nmstr& s) _LIBCPP_CANTTHROW;
- __libcpp_nmstr& operator=(const __libcpp_nmstr& s) _LIBCPP_CANTTHROW;
- ~__libcpp_nmstr() _LIBCPP_CANTTHROW;
+ __libcpp_nmstr(const __libcpp_nmstr& s) _NOEXCEPT;
+ __libcpp_nmstr& operator=(const __libcpp_nmstr& s) _NOEXCEPT;
+ ~__libcpp_nmstr();
const char* c_str() const _NOEXCEPT {return str_;}
};
@@ -65,14 +67,14 @@ __libcpp_nmstr::__libcpp_nmstr(const char* msg)
}
inline
-__libcpp_nmstr::__libcpp_nmstr(const __libcpp_nmstr& s)
+__libcpp_nmstr::__libcpp_nmstr(const __libcpp_nmstr& s) _NOEXCEPT
: str_(s.str_)
{
__sync_add_and_fetch(&count(), 1);
}
__libcpp_nmstr&
-__libcpp_nmstr::operator=(const __libcpp_nmstr& s)
+__libcpp_nmstr::operator=(const __libcpp_nmstr& s) _NOEXCEPT
{
const char* p = str_;
str_ = s.str_;
@@ -91,7 +93,9 @@ __libcpp_nmstr::~__libcpp_nmstr()
}
+#if ! defined(_LIBCPP_MSVC)
#pragma GCC visibility pop
+#endif
namespace std // purposefully not using versioning namespace
{
@@ -123,7 +127,7 @@ logic_error::operator=(const logic_error& le) _NOEXCEPT
return *this;
}
-#ifndef _LIBCPPABI_VERSION
+#if !defined(_LIBCPPABI_VERSION) && !defined(LIBSTDCXX)
logic_error::~logic_error() _NOEXCEPT
{
@@ -167,7 +171,7 @@ runtime_error::operator=(const runtime_error& le) _NOEXCEPT
return *this;
}
-#ifndef _LIBCPPABI_VERSION
+#if !defined(_LIBCPPABI_VERSION) && !defined(LIBSTDCXX)
runtime_error::~runtime_error() _NOEXCEPT
{
diff --git a/system/lib/libcxx/string.cpp b/system/lib/libcxx/string.cpp
index 5a869116..fde52129 100644
--- a/system/lib/libcxx/string.cpp
+++ b/system/lib/libcxx/string.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
+
#include "string"
#include "cstdlib"
#include "cwchar"
@@ -89,7 +91,7 @@ inline
int
as_integer(const string& func, const string& s, size_t* idx, int base )
{
- // Use long as no Stantard string to integer exists.
+ // Use long as no Standard string to integer exists.
long r = as_integer_helper<long>( func, s, idx, base, strtol );
if (r < numeric_limits<int>::min() || numeric_limits<int>::max() < r)
throw_from_string_out_of_range(func);
diff --git a/system/lib/libcxx/strstream.cpp b/system/lib/libcxx/strstream.cpp
index 518422bd..c1965ea3 100644
--- a/system/lib/libcxx/strstream.cpp
+++ b/system/lib/libcxx/strstream.cpp
@@ -156,13 +156,13 @@ strstreambuf::overflow(int_type __c)
{
if ((__strmode_ & __dynamic) == 0 || (__strmode_ & __frozen) != 0)
return int_type(EOF);
- streamsize old_size = (epptr() ? epptr() : egptr()) - eback();
- streamsize new_size = max<streamsize>(__alsize_, 2*old_size);
+ size_t old_size = static_cast<size_t> ((epptr() ? epptr() : egptr()) - eback());
+ size_t new_size = max<size_t>(static_cast<size_t>(__alsize_), 2*old_size);
if (new_size == 0)
new_size = __default_alsize;
char* buf = nullptr;
if (__palloc_)
- buf = static_cast<char*>(__palloc_(static_cast<size_t>(new_size)));
+ buf = static_cast<char*>(__palloc_(new_size));
else
buf = new char[new_size];
if (buf == nullptr)
@@ -229,8 +229,8 @@ strstreambuf::pos_type
strstreambuf::seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __which)
{
off_type __p(-1);
- bool pos_in = __which & ios::in;
- bool pos_out = __which & ios::out;
+ bool pos_in = (__which & ios::in) != 0;
+ bool pos_out = (__which & ios::out) != 0;
bool legal = false;
switch (__way)
{
@@ -287,8 +287,8 @@ strstreambuf::pos_type
strstreambuf::seekpos(pos_type __sp, ios_base::openmode __which)
{
off_type __p(-1);
- bool pos_in = __which & ios::in;
- bool pos_out = __which & ios::out;
+ bool pos_in = (__which & ios::in) != 0;
+ bool pos_out = (__which & ios::out) != 0;
if (pos_in || pos_out)
{
if (!((pos_in && gptr() == nullptr) || (pos_out && pptr() == nullptr)))
diff --git a/system/lib/libcxx/support/win32/locale_win32.cpp b/system/lib/libcxx/support/win32/locale_win32.cpp
index a639ade4..1729d84a 100644
--- a/system/lib/libcxx/support/win32/locale_win32.cpp
+++ b/system/lib/libcxx/support/win32/locale_win32.cpp
@@ -8,9 +8,8 @@
//
//===----------------------------------------------------------------------===//
-#include "support/win32/locale_win32.h"
+#include <locale>
#include <cstdarg> // va_start, va_end
-#include <cwchar> // mbstate_t
// FIXME: base currently unused. Needs manual work to construct the new locale
locale_t newlocale( int mask, const char * locale, locale_t /*base*/ )
@@ -34,38 +33,38 @@ lconv *localeconv_l( locale_t loc )
__locale_raii __current( uselocale(loc), uselocale );
return localeconv();
}
-size_t mbrlen_l( const char *__restrict__ s, size_t n,
- mbstate_t *__restrict__ ps, locale_t loc )
+size_t mbrlen_l( const char *__restrict s, size_t n,
+ mbstate_t *__restrict ps, locale_t loc )
{
__locale_raii __current( uselocale(loc), uselocale );
return mbrlen( s, n, ps );
}
-size_t mbsrtowcs_l( wchar_t *__restrict__ dst, const char **__restrict__ src,
- size_t len, mbstate_t *__restrict__ ps, locale_t loc )
+size_t mbsrtowcs_l( wchar_t *__restrict dst, const char **__restrict src,
+ size_t len, mbstate_t *__restrict ps, locale_t loc )
{
__locale_raii __current( uselocale(loc), uselocale );
return mbsrtowcs( dst, src, len, ps );
}
-size_t wcrtomb_l( char *__restrict__ s, wchar_t wc, mbstate_t *__restrict__ ps,
+size_t wcrtomb_l( char *__restrict s, wchar_t wc, mbstate_t *__restrict ps,
locale_t loc )
{
__locale_raii __current( uselocale(loc), uselocale );
return wcrtomb( s, wc, ps );
}
-size_t mbrtowc_l( wchar_t *__restrict__ pwc, const char *__restrict__ s,
- size_t n, mbstate_t *__restrict__ ps, locale_t loc )
+size_t mbrtowc_l( wchar_t *__restrict pwc, const char *__restrict s,
+ size_t n, mbstate_t *__restrict ps, locale_t loc )
{
__locale_raii __current( uselocale(loc), uselocale );
return mbrtowc( pwc, s, n, ps );
}
-size_t mbsnrtowcs_l( wchar_t *__restrict__ dst, const char **__restrict__ src,
- size_t nms, size_t len, mbstate_t *__restrict__ ps, locale_t loc )
+size_t mbsnrtowcs_l( wchar_t *__restrict dst, const char **__restrict src,
+ size_t nms, size_t len, mbstate_t *__restrict ps, locale_t loc )
{
__locale_raii __current( uselocale(loc), uselocale );
return mbsnrtowcs( dst, src, nms, len, ps );
}
-size_t wcsnrtombs_l( char *__restrict__ dst, const wchar_t **__restrict__ src,
- size_t nwc, size_t len, mbstate_t *__restrict__ ps, locale_t loc )
+size_t wcsnrtombs_l( char *__restrict dst, const wchar_t **__restrict src,
+ size_t nwc, size_t len, mbstate_t *__restrict ps, locale_t loc )
{
__locale_raii __current( uselocale(loc), uselocale );
return wcsnrtombs( dst, src, nwc, len, ps );
diff --git a/system/lib/libcxx/support/win32/support.cpp b/system/lib/libcxx/support/win32/support.cpp
index 4215a700..6ee31e0c 100644
--- a/system/lib/libcxx/support/win32/support.cpp
+++ b/system/lib/libcxx/support/win32/support.cpp
@@ -14,14 +14,7 @@
#include <cstdio> // vsprintf, vsnprintf
#include <cstring> // strcpy, wcsncpy
#include <cwchar> // mbstate_t
-#include <memory> // unique_ptr
-namespace { // Private
-
- struct free_deleter {
- inline void operator()(char* p) { free(p); }
- };
-}
// Some of these functions aren't standard or if they conform, the name does not.
int asprintf(char **sptr, const char *__restrict format, ...)
@@ -29,44 +22,44 @@ int asprintf(char **sptr, const char *__restrict format, ...)
va_list ap;
va_start(ap, format);
int result;
-#ifndef _LIBCPP_NO_EXCEPTIONS
- try {
-#endif
- result = vasprintf(sptr, format, ap);
-#ifndef _LIBCPP_NO_EXCEPTIONS
- } catch( ... ) {
- va_end(ap);
- throw;
- }
-#endif
+ result = vasprintf(sptr, format, ap);
va_end(ap);
return result;
}
-// Like sprintf, but when return value >= 0 it returns a pointer to a malloc'd string in *sptr.
+// Like sprintf, but when return value >= 0 it returns
+// a pointer to a malloc'd string in *sptr.
// If return >= 0, use free to delete *sptr.
int vasprintf( char **sptr, const char *__restrict format, va_list ap )
{
*sptr = NULL;
- int count = _vsnprintf( NULL, 0, format, ap ); // Query the buffer size required.
- if( count >= 0 ) {
- std::unique_ptr<char, free_deleter> p( static_cast<char*>(malloc(count+1)) );
- if ( ! p )
- return -1;
- if ( vsnprintf( p.get(), count+1, format, ap ) == count ) // We should have used exactly what was required.
- *sptr = p.release();
- else // Otherwise something is wrong, likely a bug in vsnprintf. If so free the memory and report the error.
- return -1; // Pointer will get automaticlaly deleted.
+ // Query the count required.
+ int count = _vsnprintf( NULL, 0, format, ap );
+ if (count < 0)
+ return count;
+ size_t buffer_size = static_cast<size_t>(count) + 1;
+ char* p = static_cast<char*>(malloc(buffer_size));
+ if ( ! p )
+ return -1;
+ // If we haven't used exactly what was required, something is wrong.
+ // Maybe bug in vsnprintf. Report the error and return.
+ if (_vsnprintf(p, buffer_size, format, ap) != count) {
+ free(p);
+ return -1;
}
-
+ // All good. This is returning memory to the caller not freeing it.
+ *sptr = p;
return count;
}
-// Returns >= 0: the number of wide characters found in the multi byte sequence src (of src_size_bytes),
-// that fit in the buffer dst (of max_dest_chars elements size). The count returned excludes the null terminator.
-// When dst is NULL, no characters are copied and no "out" parameters are updated.
+// Returns >= 0: the number of wide characters found in the
+// multi byte sequence src (of src_size_bytes), that fit in the buffer dst
+// (of max_dest_chars elements size). The count returned excludes the
+// null terminator. When dst is NULL, no characters are copied
+// and no "out" parameters are updated.
// Returns (size_t) -1: an incomplete sequence encountered.
-// Leaves *src pointing the next character to convert or NULL if a null character was converted from *src.
+// Leaves *src pointing the next character to convert or NULL
+// if a null character was converted from *src.
size_t mbsnrtowcs( wchar_t *__restrict dst, const char **__restrict src,
size_t src_size_bytes, size_t max_dest_chars, mbstate_t *__restrict ps )
{
@@ -112,10 +105,13 @@ size_t mbsnrtowcs( wchar_t *__restrict dst, const char **__restrict src,
}
// Converts max_source_chars from the wide character buffer pointer to by *src,
-// into the multi byte character sequence buffer stored at dst which must be dst_size_bytes bytes in size.
-// Returns >= 0: the number of bytes in the sequence sequence converted frome *src, excluding the null terminator.
+// into the multi byte character sequence buffer stored at dst which must be
+// dst_size_bytes bytes in size.
+// Returns >= 0: the number of bytes in the sequence sequence
+// converted frome *src, excluding the null terminator.
// Returns size_t(-1) if an error occurs, also sets errno.
-// If dst is NULL dst_size_bytes is ignored and no bytes are copied to dst and no "out" parameters are updated.
+// If dst is NULL dst_size_bytes is ignored and no bytes are copied to dst
+// and no "out" parameters are updated.
size_t wcsnrtombs( char *__restrict dst, const wchar_t **__restrict src,
size_t max_source_chars, size_t dst_size_bytes, mbstate_t *__restrict ps )
{
@@ -138,7 +134,8 @@ size_t wcsnrtombs( char *__restrict dst, const wchar_t **__restrict src,
result = wcrtomb_s( &char_size, dst + dest_converted, dest_remaining, c, ps);
else
result = wcrtomb_s( &char_size, NULL, 0, c, ps);
- // If result is zero there is no error and char_size contains the size of the multi-byte-sequence converted.
+ // If result is zero there is no error and char_size contains the
+ // size of the multi-byte-sequence converted.
// Otherwise result indicates an errno type error.
if ( result == no_error ) {
if ( c == L'\0' ) {
diff --git a/system/lib/libcxx/symbols b/system/lib/libcxx/symbols
index 92a665d8..51368bce 100644
--- a/system/lib/libcxx/symbols
+++ b/system/lib/libcxx/symbols
@@ -235,27 +235,27 @@
W _ZNKSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentrycvbEv
W _ZNKSt3__113basic_ostreamIwNS_11char_traitsIwEEE6sentrycvbEv
T _ZNKSt3__113random_device7entropyEv
- T _ZNKSt3__114__codecvt_utf8IDiE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__114__codecvt_utf8IDiE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__114__codecvt_utf8IDiE11do_encodingEv
T _ZNKSt3__114__codecvt_utf8IDiE13do_max_lengthEv
T _ZNKSt3__114__codecvt_utf8IDiE16do_always_noconvEv
- T _ZNKSt3__114__codecvt_utf8IDiE5do_inER10_mbstate_tPKcS5_RS5_PDiS7_RS7_
- T _ZNKSt3__114__codecvt_utf8IDiE6do_outER10_mbstate_tPKDiS5_RS5_PcS7_RS7_
- T _ZNKSt3__114__codecvt_utf8IDiE9do_lengthER10_mbstate_tPKcS5_j
- T _ZNKSt3__114__codecvt_utf8IDsE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__114__codecvt_utf8IDiE5do_inER11__mbstate_tPKcS5_RS5_PDiS7_RS7_
+ T _ZNKSt3__114__codecvt_utf8IDiE6do_outER11__mbstate_tPKDiS5_RS5_PcS7_RS7_
+ T _ZNKSt3__114__codecvt_utf8IDiE9do_lengthER11__mbstate_tPKcS5_j
+ T _ZNKSt3__114__codecvt_utf8IDsE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__114__codecvt_utf8IDsE11do_encodingEv
T _ZNKSt3__114__codecvt_utf8IDsE13do_max_lengthEv
T _ZNKSt3__114__codecvt_utf8IDsE16do_always_noconvEv
- T _ZNKSt3__114__codecvt_utf8IDsE5do_inER10_mbstate_tPKcS5_RS5_PDsS7_RS7_
- T _ZNKSt3__114__codecvt_utf8IDsE6do_outER10_mbstate_tPKDsS5_RS5_PcS7_RS7_
- T _ZNKSt3__114__codecvt_utf8IDsE9do_lengthER10_mbstate_tPKcS5_j
- T _ZNKSt3__114__codecvt_utf8IwE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__114__codecvt_utf8IDsE5do_inER11__mbstate_tPKcS5_RS5_PDsS7_RS7_
+ T _ZNKSt3__114__codecvt_utf8IDsE6do_outER11__mbstate_tPKDsS5_RS5_PcS7_RS7_
+ T _ZNKSt3__114__codecvt_utf8IDsE9do_lengthER11__mbstate_tPKcS5_j
+ T _ZNKSt3__114__codecvt_utf8IwE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__114__codecvt_utf8IwE11do_encodingEv
T _ZNKSt3__114__codecvt_utf8IwE13do_max_lengthEv
T _ZNKSt3__114__codecvt_utf8IwE16do_always_noconvEv
- T _ZNKSt3__114__codecvt_utf8IwE5do_inER10_mbstate_tPKcS5_RS5_PwS7_RS7_
- T _ZNKSt3__114__codecvt_utf8IwE6do_outER10_mbstate_tPKwS5_RS5_PcS7_RS7_
- T _ZNKSt3__114__codecvt_utf8IwE9do_lengthER10_mbstate_tPKcS5_j
+ T _ZNKSt3__114__codecvt_utf8IwE5do_inER11__mbstate_tPKcS5_RS5_PwS7_RS7_
+ T _ZNKSt3__114__codecvt_utf8IwE6do_outER11__mbstate_tPKwS5_RS5_PcS7_RS7_
+ T _ZNKSt3__114__codecvt_utf8IwE9do_lengthER11__mbstate_tPKcS5_j
T _ZNKSt3__114collate_bynameIcE10do_compareEPKcS3_S3_S3_
T _ZNKSt3__114collate_bynameIcE12do_transformEPKcS3_
T _ZNKSt3__114collate_bynameIwE10do_compareEPKwS3_S3_S3_
@@ -263,48 +263,48 @@
T _ZNKSt3__114error_category10equivalentERKNS_10error_codeEi
T _ZNKSt3__114error_category10equivalentEiRKNS_15error_conditionE
T _ZNKSt3__114error_category23default_error_conditionEi
- T _ZNKSt3__115__codecvt_utf16IDiLb0EE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__115__codecvt_utf16IDiLb0EE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__115__codecvt_utf16IDiLb0EE11do_encodingEv
T _ZNKSt3__115__codecvt_utf16IDiLb0EE13do_max_lengthEv
T _ZNKSt3__115__codecvt_utf16IDiLb0EE16do_always_noconvEv
- T _ZNKSt3__115__codecvt_utf16IDiLb0EE5do_inER10_mbstate_tPKcS5_RS5_PDiS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IDiLb0EE6do_outER10_mbstate_tPKDiS5_RS5_PcS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IDiLb0EE9do_lengthER10_mbstate_tPKcS5_j
- T _ZNKSt3__115__codecvt_utf16IDiLb1EE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__115__codecvt_utf16IDiLb0EE5do_inER11__mbstate_tPKcS5_RS5_PDiS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IDiLb0EE6do_outER11__mbstate_tPKDiS5_RS5_PcS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IDiLb0EE9do_lengthER11__mbstate_tPKcS5_j
+ T _ZNKSt3__115__codecvt_utf16IDiLb1EE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__115__codecvt_utf16IDiLb1EE11do_encodingEv
T _ZNKSt3__115__codecvt_utf16IDiLb1EE13do_max_lengthEv
T _ZNKSt3__115__codecvt_utf16IDiLb1EE16do_always_noconvEv
- T _ZNKSt3__115__codecvt_utf16IDiLb1EE5do_inER10_mbstate_tPKcS5_RS5_PDiS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IDiLb1EE6do_outER10_mbstate_tPKDiS5_RS5_PcS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IDiLb1EE9do_lengthER10_mbstate_tPKcS5_j
- T _ZNKSt3__115__codecvt_utf16IDsLb0EE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__115__codecvt_utf16IDiLb1EE5do_inER11__mbstate_tPKcS5_RS5_PDiS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IDiLb1EE6do_outER11__mbstate_tPKDiS5_RS5_PcS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IDiLb1EE9do_lengthER11__mbstate_tPKcS5_j
+ T _ZNKSt3__115__codecvt_utf16IDsLb0EE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__115__codecvt_utf16IDsLb0EE11do_encodingEv
T _ZNKSt3__115__codecvt_utf16IDsLb0EE13do_max_lengthEv
T _ZNKSt3__115__codecvt_utf16IDsLb0EE16do_always_noconvEv
- T _ZNKSt3__115__codecvt_utf16IDsLb0EE5do_inER10_mbstate_tPKcS5_RS5_PDsS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IDsLb0EE6do_outER10_mbstate_tPKDsS5_RS5_PcS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IDsLb0EE9do_lengthER10_mbstate_tPKcS5_j
- T _ZNKSt3__115__codecvt_utf16IDsLb1EE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__115__codecvt_utf16IDsLb0EE5do_inER11__mbstate_tPKcS5_RS5_PDsS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IDsLb0EE6do_outER11__mbstate_tPKDsS5_RS5_PcS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IDsLb0EE9do_lengthER11__mbstate_tPKcS5_j
+ T _ZNKSt3__115__codecvt_utf16IDsLb1EE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__115__codecvt_utf16IDsLb1EE11do_encodingEv
T _ZNKSt3__115__codecvt_utf16IDsLb1EE13do_max_lengthEv
T _ZNKSt3__115__codecvt_utf16IDsLb1EE16do_always_noconvEv
- T _ZNKSt3__115__codecvt_utf16IDsLb1EE5do_inER10_mbstate_tPKcS5_RS5_PDsS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IDsLb1EE6do_outER10_mbstate_tPKDsS5_RS5_PcS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IDsLb1EE9do_lengthER10_mbstate_tPKcS5_j
- T _ZNKSt3__115__codecvt_utf16IwLb0EE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__115__codecvt_utf16IDsLb1EE5do_inER11__mbstate_tPKcS5_RS5_PDsS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IDsLb1EE6do_outER11__mbstate_tPKDsS5_RS5_PcS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IDsLb1EE9do_lengthER11__mbstate_tPKcS5_j
+ T _ZNKSt3__115__codecvt_utf16IwLb0EE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__115__codecvt_utf16IwLb0EE11do_encodingEv
T _ZNKSt3__115__codecvt_utf16IwLb0EE13do_max_lengthEv
T _ZNKSt3__115__codecvt_utf16IwLb0EE16do_always_noconvEv
- T _ZNKSt3__115__codecvt_utf16IwLb0EE5do_inER10_mbstate_tPKcS5_RS5_PwS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IwLb0EE6do_outER10_mbstate_tPKwS5_RS5_PcS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IwLb0EE9do_lengthER10_mbstate_tPKcS5_j
- T _ZNKSt3__115__codecvt_utf16IwLb1EE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__115__codecvt_utf16IwLb0EE5do_inER11__mbstate_tPKcS5_RS5_PwS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IwLb0EE6do_outER11__mbstate_tPKwS5_RS5_PcS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IwLb0EE9do_lengthER11__mbstate_tPKcS5_j
+ T _ZNKSt3__115__codecvt_utf16IwLb1EE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__115__codecvt_utf16IwLb1EE11do_encodingEv
T _ZNKSt3__115__codecvt_utf16IwLb1EE13do_max_lengthEv
T _ZNKSt3__115__codecvt_utf16IwLb1EE16do_always_noconvEv
- T _ZNKSt3__115__codecvt_utf16IwLb1EE5do_inER10_mbstate_tPKcS5_RS5_PwS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IwLb1EE6do_outER10_mbstate_tPKwS5_RS5_PcS7_RS7_
- T _ZNKSt3__115__codecvt_utf16IwLb1EE9do_lengthER10_mbstate_tPKcS5_j
+ T _ZNKSt3__115__codecvt_utf16IwLb1EE5do_inER11__mbstate_tPKcS5_RS5_PwS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IwLb1EE6do_outER11__mbstate_tPKwS5_RS5_PcS7_RS7_
+ T _ZNKSt3__115__codecvt_utf16IwLb1EE9do_lengthER11__mbstate_tPKcS5_j
W _ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE4gptrEv
W _ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE4pptrEv
W _ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE5ebackEv
@@ -377,27 +377,27 @@
T _ZNKSt3__119__iostream_category4nameEv
T _ZNKSt3__119__iostream_category7messageEi
T _ZNKSt3__119__shared_weak_count13__get_deleterERKSt9type_info
- T _ZNKSt3__120__codecvt_utf8_utf16IDiE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__120__codecvt_utf8_utf16IDiE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__120__codecvt_utf8_utf16IDiE11do_encodingEv
T _ZNKSt3__120__codecvt_utf8_utf16IDiE13do_max_lengthEv
T _ZNKSt3__120__codecvt_utf8_utf16IDiE16do_always_noconvEv
- T _ZNKSt3__120__codecvt_utf8_utf16IDiE5do_inER10_mbstate_tPKcS5_RS5_PDiS7_RS7_
- T _ZNKSt3__120__codecvt_utf8_utf16IDiE6do_outER10_mbstate_tPKDiS5_RS5_PcS7_RS7_
- T _ZNKSt3__120__codecvt_utf8_utf16IDiE9do_lengthER10_mbstate_tPKcS5_j
- T _ZNKSt3__120__codecvt_utf8_utf16IDsE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__120__codecvt_utf8_utf16IDiE5do_inER11__mbstate_tPKcS5_RS5_PDiS7_RS7_
+ T _ZNKSt3__120__codecvt_utf8_utf16IDiE6do_outER11__mbstate_tPKDiS5_RS5_PcS7_RS7_
+ T _ZNKSt3__120__codecvt_utf8_utf16IDiE9do_lengthER11__mbstate_tPKcS5_j
+ T _ZNKSt3__120__codecvt_utf8_utf16IDsE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__120__codecvt_utf8_utf16IDsE11do_encodingEv
T _ZNKSt3__120__codecvt_utf8_utf16IDsE13do_max_lengthEv
T _ZNKSt3__120__codecvt_utf8_utf16IDsE16do_always_noconvEv
- T _ZNKSt3__120__codecvt_utf8_utf16IDsE5do_inER10_mbstate_tPKcS5_RS5_PDsS7_RS7_
- T _ZNKSt3__120__codecvt_utf8_utf16IDsE6do_outER10_mbstate_tPKDsS5_RS5_PcS7_RS7_
- T _ZNKSt3__120__codecvt_utf8_utf16IDsE9do_lengthER10_mbstate_tPKcS5_j
- T _ZNKSt3__120__codecvt_utf8_utf16IwE10do_unshiftER10_mbstate_tPcS4_RS4_
+ T _ZNKSt3__120__codecvt_utf8_utf16IDsE5do_inER11__mbstate_tPKcS5_RS5_PDsS7_RS7_
+ T _ZNKSt3__120__codecvt_utf8_utf16IDsE6do_outER11__mbstate_tPKDsS5_RS5_PcS7_RS7_
+ T _ZNKSt3__120__codecvt_utf8_utf16IDsE9do_lengthER11__mbstate_tPKcS5_j
+ T _ZNKSt3__120__codecvt_utf8_utf16IwE10do_unshiftER11__mbstate_tPcS4_RS4_
T _ZNKSt3__120__codecvt_utf8_utf16IwE11do_encodingEv
T _ZNKSt3__120__codecvt_utf8_utf16IwE13do_max_lengthEv
T _ZNKSt3__120__codecvt_utf8_utf16IwE16do_always_noconvEv
- T _ZNKSt3__120__codecvt_utf8_utf16IwE5do_inER10_mbstate_tPKcS5_RS5_PwS7_RS7_
- T _ZNKSt3__120__codecvt_utf8_utf16IwE6do_outER10_mbstate_tPKwS5_RS5_PcS7_RS7_
- T _ZNKSt3__120__codecvt_utf8_utf16IwE9do_lengthER10_mbstate_tPKcS5_j
+ T _ZNKSt3__120__codecvt_utf8_utf16IwE5do_inER11__mbstate_tPKcS5_RS5_PwS7_RS7_
+ T _ZNKSt3__120__codecvt_utf8_utf16IwE6do_outER11__mbstate_tPKwS5_RS5_PcS7_RS7_
+ T _ZNKSt3__120__codecvt_utf8_utf16IwE9do_lengthER11__mbstate_tPKcS5_j
T _ZNKSt3__120__time_get_c_storageIcE3__XEv
T _ZNKSt3__120__time_get_c_storageIcE3__cEv
T _ZNKSt3__120__time_get_c_storageIcE3__rEv
@@ -450,34 +450,34 @@
T _ZNKSt3__16locale9has_facetERNS0_2idE
T _ZNKSt3__16locale9use_facetERNS0_2idE
T _ZNKSt3__16localeeqERKS0_
- T _ZNKSt3__17codecvtIDic10_mbstate_tE10do_unshiftERS1_PcS4_RS4_
- T _ZNKSt3__17codecvtIDic10_mbstate_tE11do_encodingEv
- T _ZNKSt3__17codecvtIDic10_mbstate_tE13do_max_lengthEv
- T _ZNKSt3__17codecvtIDic10_mbstate_tE16do_always_noconvEv
- T _ZNKSt3__17codecvtIDic10_mbstate_tE5do_inERS1_PKcS5_RS5_PDiS7_RS7_
- T _ZNKSt3__17codecvtIDic10_mbstate_tE6do_outERS1_PKDiS5_RS5_PcS7_RS7_
- T _ZNKSt3__17codecvtIDic10_mbstate_tE9do_lengthERS1_PKcS5_j
- T _ZNKSt3__17codecvtIDsc10_mbstate_tE10do_unshiftERS1_PcS4_RS4_
- T _ZNKSt3__17codecvtIDsc10_mbstate_tE11do_encodingEv
- T _ZNKSt3__17codecvtIDsc10_mbstate_tE13do_max_lengthEv
- T _ZNKSt3__17codecvtIDsc10_mbstate_tE16do_always_noconvEv
- T _ZNKSt3__17codecvtIDsc10_mbstate_tE5do_inERS1_PKcS5_RS5_PDsS7_RS7_
- T _ZNKSt3__17codecvtIDsc10_mbstate_tE6do_outERS1_PKDsS5_RS5_PcS7_RS7_
- T _ZNKSt3__17codecvtIDsc10_mbstate_tE9do_lengthERS1_PKcS5_j
- T _ZNKSt3__17codecvtIcc10_mbstate_tE10do_unshiftERS1_PcS4_RS4_
- T _ZNKSt3__17codecvtIcc10_mbstate_tE11do_encodingEv
- T _ZNKSt3__17codecvtIcc10_mbstate_tE13do_max_lengthEv
- T _ZNKSt3__17codecvtIcc10_mbstate_tE16do_always_noconvEv
- T _ZNKSt3__17codecvtIcc10_mbstate_tE5do_inERS1_PKcS5_RS5_PcS7_RS7_
- T _ZNKSt3__17codecvtIcc10_mbstate_tE6do_outERS1_PKcS5_RS5_PcS7_RS7_
- T _ZNKSt3__17codecvtIcc10_mbstate_tE9do_lengthERS1_PKcS5_j
- T _ZNKSt3__17codecvtIwc10_mbstate_tE10do_unshiftERS1_PcS4_RS4_
- T _ZNKSt3__17codecvtIwc10_mbstate_tE11do_encodingEv
- T _ZNKSt3__17codecvtIwc10_mbstate_tE13do_max_lengthEv
- T _ZNKSt3__17codecvtIwc10_mbstate_tE16do_always_noconvEv
- T _ZNKSt3__17codecvtIwc10_mbstate_tE5do_inERS1_PKcS5_RS5_PwS7_RS7_
- T _ZNKSt3__17codecvtIwc10_mbstate_tE6do_outERS1_PKwS5_RS5_PcS7_RS7_
- T _ZNKSt3__17codecvtIwc10_mbstate_tE9do_lengthERS1_PKcS5_j
+ T _ZNKSt3__17codecvtIDic11__mbstate_tE10do_unshiftERS1_PcS4_RS4_
+ T _ZNKSt3__17codecvtIDic11__mbstate_tE11do_encodingEv
+ T _ZNKSt3__17codecvtIDic11__mbstate_tE13do_max_lengthEv
+ T _ZNKSt3__17codecvtIDic11__mbstate_tE16do_always_noconvEv
+ T _ZNKSt3__17codecvtIDic11__mbstate_tE5do_inERS1_PKcS5_RS5_PDiS7_RS7_
+ T _ZNKSt3__17codecvtIDic11__mbstate_tE6do_outERS1_PKDiS5_RS5_PcS7_RS7_
+ T _ZNKSt3__17codecvtIDic11__mbstate_tE9do_lengthERS1_PKcS5_j
+ T _ZNKSt3__17codecvtIDsc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_
+ T _ZNKSt3__17codecvtIDsc11__mbstate_tE11do_encodingEv
+ T _ZNKSt3__17codecvtIDsc11__mbstate_tE13do_max_lengthEv
+ T _ZNKSt3__17codecvtIDsc11__mbstate_tE16do_always_noconvEv
+ T _ZNKSt3__17codecvtIDsc11__mbstate_tE5do_inERS1_PKcS5_RS5_PDsS7_RS7_
+ T _ZNKSt3__17codecvtIDsc11__mbstate_tE6do_outERS1_PKDsS5_RS5_PcS7_RS7_
+ T _ZNKSt3__17codecvtIDsc11__mbstate_tE9do_lengthERS1_PKcS5_j
+ T _ZNKSt3__17codecvtIcc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_
+ T _ZNKSt3__17codecvtIcc11__mbstate_tE11do_encodingEv
+ T _ZNKSt3__17codecvtIcc11__mbstate_tE13do_max_lengthEv
+ T _ZNKSt3__17codecvtIcc11__mbstate_tE16do_always_noconvEv
+ T _ZNKSt3__17codecvtIcc11__mbstate_tE5do_inERS1_PKcS5_RS5_PcS7_RS7_
+ T _ZNKSt3__17codecvtIcc11__mbstate_tE6do_outERS1_PKcS5_RS5_PcS7_RS7_
+ T _ZNKSt3__17codecvtIcc11__mbstate_tE9do_lengthERS1_PKcS5_j
+ T _ZNKSt3__17codecvtIwc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_
+ T _ZNKSt3__17codecvtIwc11__mbstate_tE11do_encodingEv
+ T _ZNKSt3__17codecvtIwc11__mbstate_tE13do_max_lengthEv
+ T _ZNKSt3__17codecvtIwc11__mbstate_tE16do_always_noconvEv
+ T _ZNKSt3__17codecvtIwc11__mbstate_tE5do_inERS1_PKcS5_RS5_PwS7_RS7_
+ T _ZNKSt3__17codecvtIwc11__mbstate_tE6do_outERS1_PKwS5_RS5_PcS7_RS7_
+ T _ZNKSt3__17codecvtIwc11__mbstate_tE9do_lengthERS1_PKcS5_j
W _ZNKSt3__17collateIcE10do_compareEPKcS3_S3_S3_
W _ZNKSt3__17collateIcE12do_transformEPKcS3_
W _ZNKSt3__17collateIcE4hashEPKcS3_
@@ -490,6 +490,15 @@
W _ZNKSt3__17collateIwE7compareEPKwS3_S3_S3_
W _ZNKSt3__17collateIwE7do_hashEPKwS3_
W _ZNKSt3__17collateIwE9transformEPKwS3_
+ C _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_
W _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjRPv
W _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjRb
W _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjRd
@@ -512,6 +521,15 @@
W _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRx
W _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRy
W _ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_
+ C _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_
+ C _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_
W _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjRPv
W _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjRb
W _ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjRd
@@ -751,21 +769,21 @@
T _ZNSt16nested_exceptionD0Ev
T _ZNSt16nested_exceptionD1Ev
T _ZNSt16nested_exceptionD2Ev
- C _ZNSt3__110__sscanf_lEPKcPvS1_z
+ C _ZNSt3__110__sscanf_lEPKcP15__locale_structS1_z
C _ZNSt3__110__stdinbufIcE5imbueERKNS_6localeE
C _ZNSt3__110__stdinbufIcE5uflowEv
C _ZNSt3__110__stdinbufIcE9__getcharEb
C _ZNSt3__110__stdinbufIcE9pbackfailEi
C _ZNSt3__110__stdinbufIcE9underflowEv
- C _ZNSt3__110__stdinbufIcEC2EP7__sFILEP10_mbstate_t
+ C _ZNSt3__110__stdinbufIcEC2EP8_IO_FILEP11__mbstate_t
C _ZNSt3__110__stdinbufIcED0Ev
C _ZNSt3__110__stdinbufIcED1Ev
C _ZNSt3__110__stdinbufIwE5imbueERKNS_6localeE
C _ZNSt3__110__stdinbufIwE5uflowEv
C _ZNSt3__110__stdinbufIwE9__getcharEb
- C _ZNSt3__110__stdinbufIwE9pbackfailEi
+ C _ZNSt3__110__stdinbufIwE9pbackfailEj
C _ZNSt3__110__stdinbufIwE9underflowEv
- C _ZNSt3__110__stdinbufIwEC2EP7__sFILEP10_mbstate_t
+ C _ZNSt3__110__stdinbufIwEC2EP8_IO_FILEP11__mbstate_t
C _ZNSt3__110__stdinbufIwED0Ev
C _ZNSt3__110__stdinbufIwED1Ev
T _ZNSt3__110__time_getC1EPKc
@@ -867,12 +885,14 @@
W _ZNSt3__111__money_putIwEC2Ev
C _ZNSt3__111__stdoutbufIcE4syncEv
C _ZNSt3__111__stdoutbufIcE5imbueERKNS_6localeE
+ C _ZNSt3__111__stdoutbufIcE6xsputnEPKci
C _ZNSt3__111__stdoutbufIcE8overflowEi
C _ZNSt3__111__stdoutbufIcED0Ev
C _ZNSt3__111__stdoutbufIcED1Ev
C _ZNSt3__111__stdoutbufIwE4syncEv
C _ZNSt3__111__stdoutbufIwE5imbueERKNS_6localeE
- C _ZNSt3__111__stdoutbufIwE8overflowEi
+ C _ZNSt3__111__stdoutbufIwE6xsputnEPKwi
+ C _ZNSt3__111__stdoutbufIwE8overflowEj
C _ZNSt3__111__stdoutbufIwED0Ev
C _ZNSt3__111__stdoutbufIwED1Ev
T _ZNSt3__111regex_errorC1ENS_15regex_constants10error_typeE
@@ -889,7 +909,7 @@
T _ZNSt3__111timed_mutexD1Ev
T _ZNSt3__111timed_mutexD2Ev
D _ZNSt3__111try_to_lockE
- C _ZNSt3__112__asprintf_lEPPcPvPKcz
+ C _ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz
C _ZNSt3__112__do_messageD0Ev
C _ZNSt3__112__do_messageD1Ev
T _ZNSt3__112__do_nothingEPv
@@ -903,7 +923,7 @@
T _ZNSt3__112__rs_defaultD1Ev
T _ZNSt3__112__rs_defaultD2Ev
T _ZNSt3__112__rs_defaultclEv
- C _ZNSt3__112__snprintf_lEPcjPvPKcz
+ C _ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz
T _ZNSt3__112bad_weak_ptrD0Ev
T _ZNSt3__112bad_weak_ptrD1Ev
T _ZNSt3__112bad_weak_ptrD2Ev
@@ -1190,7 +1210,7 @@
T _ZNSt3__112strstreambuf6__initEPciS1_
T _ZNSt3__112strstreambuf6freezeEb
T _ZNSt3__112strstreambuf7seekoffExNS_8ios_base7seekdirEj
- T _ZNSt3__112strstreambuf7seekposENS_4fposI10_mbstate_tEEj
+ T _ZNSt3__112strstreambuf7seekposENS_4fposI11__mbstate_tEEj
T _ZNSt3__112strstreambuf8overflowEi
T _ZNSt3__112strstreambuf9pbackfailEi
T _ZNSt3__112strstreambuf9underflowEv
@@ -1240,7 +1260,7 @@
W _ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE4readEPci
W _ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE4swapERS3_
W _ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE4syncEv
- W _ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE5seekgENS_4fposI10_mbstate_tEE
+ W _ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE5seekgENS_4fposI11__mbstate_tEE
W _ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE5seekgExNS_8ios_base7seekdirE
W _ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE5tellgEv
W _ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE5ungetEv
@@ -1286,11 +1306,11 @@
W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE4readEPwi
W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE4swapERS3_
W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE4syncEv
- W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE5seekgENS_4fposI10_mbstate_tEE
+ W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE5seekgENS_4fposI11__mbstate_tEE
W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE5seekgExNS_8ios_base7seekdirE
W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE5tellgEv
W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE5ungetEv
- W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE6ignoreEii
+ W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE6ignoreEij
W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE6sentryC1ERS3_b
W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE6sentryC2ERS3_b
W _ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE7getlineEPwi
@@ -1325,7 +1345,7 @@
W _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc
W _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE4swapERS3_
W _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv
- W _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5seekpENS_4fposI10_mbstate_tEE
+ W _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5seekpENS_4fposI11__mbstate_tEE
W _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5seekpExNS_8ios_base7seekdirE
W _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5tellpEv
W _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5writeEPKci
@@ -1363,7 +1383,7 @@
W _ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE3putEw
W _ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE4swapERS3_
W _ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5flushEv
- W _ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5seekpENS_4fposI10_mbstate_tEE
+ W _ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5seekpENS_4fposI11__mbstate_tEE
W _ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5seekpExNS_8ios_base7seekdirE
W _ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5tellpEv
W _ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5writeEPKwi
@@ -1436,34 +1456,34 @@
W _ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev
W _ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev
W _ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEEaSEOS3_
- W _ZNSt3__114codecvt_bynameIDic10_mbstate_tEC1EPKcj
- W _ZNSt3__114codecvt_bynameIDic10_mbstate_tEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
- W _ZNSt3__114codecvt_bynameIDic10_mbstate_tEC2EPKcj
- W _ZNSt3__114codecvt_bynameIDic10_mbstate_tEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
- W _ZNSt3__114codecvt_bynameIDic10_mbstate_tED0Ev
- W _ZNSt3__114codecvt_bynameIDic10_mbstate_tED1Ev
- W _ZNSt3__114codecvt_bynameIDic10_mbstate_tED2Ev
- W _ZNSt3__114codecvt_bynameIDsc10_mbstate_tEC1EPKcj
- W _ZNSt3__114codecvt_bynameIDsc10_mbstate_tEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
- W _ZNSt3__114codecvt_bynameIDsc10_mbstate_tEC2EPKcj
- W _ZNSt3__114codecvt_bynameIDsc10_mbstate_tEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
- W _ZNSt3__114codecvt_bynameIDsc10_mbstate_tED0Ev
- W _ZNSt3__114codecvt_bynameIDsc10_mbstate_tED1Ev
- W _ZNSt3__114codecvt_bynameIDsc10_mbstate_tED2Ev
- W _ZNSt3__114codecvt_bynameIcc10_mbstate_tEC1EPKcj
- W _ZNSt3__114codecvt_bynameIcc10_mbstate_tEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
- W _ZNSt3__114codecvt_bynameIcc10_mbstate_tEC2EPKcj
- W _ZNSt3__114codecvt_bynameIcc10_mbstate_tEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
- W _ZNSt3__114codecvt_bynameIcc10_mbstate_tED0Ev
- W _ZNSt3__114codecvt_bynameIcc10_mbstate_tED1Ev
- W _ZNSt3__114codecvt_bynameIcc10_mbstate_tED2Ev
- W _ZNSt3__114codecvt_bynameIwc10_mbstate_tEC1EPKcj
- W _ZNSt3__114codecvt_bynameIwc10_mbstate_tEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
- W _ZNSt3__114codecvt_bynameIwc10_mbstate_tEC2EPKcj
- W _ZNSt3__114codecvt_bynameIwc10_mbstate_tEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
- W _ZNSt3__114codecvt_bynameIwc10_mbstate_tED0Ev
- W _ZNSt3__114codecvt_bynameIwc10_mbstate_tED1Ev
- W _ZNSt3__114codecvt_bynameIwc10_mbstate_tED2Ev
+ W _ZNSt3__114codecvt_bynameIDic11__mbstate_tEC1EPKcj
+ W _ZNSt3__114codecvt_bynameIDic11__mbstate_tEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
+ W _ZNSt3__114codecvt_bynameIDic11__mbstate_tEC2EPKcj
+ W _ZNSt3__114codecvt_bynameIDic11__mbstate_tEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
+ W _ZNSt3__114codecvt_bynameIDic11__mbstate_tED0Ev
+ W _ZNSt3__114codecvt_bynameIDic11__mbstate_tED1Ev
+ W _ZNSt3__114codecvt_bynameIDic11__mbstate_tED2Ev
+ W _ZNSt3__114codecvt_bynameIDsc11__mbstate_tEC1EPKcj
+ W _ZNSt3__114codecvt_bynameIDsc11__mbstate_tEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
+ W _ZNSt3__114codecvt_bynameIDsc11__mbstate_tEC2EPKcj
+ W _ZNSt3__114codecvt_bynameIDsc11__mbstate_tEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
+ W _ZNSt3__114codecvt_bynameIDsc11__mbstate_tED0Ev
+ W _ZNSt3__114codecvt_bynameIDsc11__mbstate_tED1Ev
+ W _ZNSt3__114codecvt_bynameIDsc11__mbstate_tED2Ev
+ W _ZNSt3__114codecvt_bynameIcc11__mbstate_tEC1EPKcj
+ W _ZNSt3__114codecvt_bynameIcc11__mbstate_tEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
+ W _ZNSt3__114codecvt_bynameIcc11__mbstate_tEC2EPKcj
+ W _ZNSt3__114codecvt_bynameIcc11__mbstate_tEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
+ W _ZNSt3__114codecvt_bynameIcc11__mbstate_tED0Ev
+ W _ZNSt3__114codecvt_bynameIcc11__mbstate_tED1Ev
+ W _ZNSt3__114codecvt_bynameIcc11__mbstate_tED2Ev
+ W _ZNSt3__114codecvt_bynameIwc11__mbstate_tEC1EPKcj
+ W _ZNSt3__114codecvt_bynameIwc11__mbstate_tEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
+ W _ZNSt3__114codecvt_bynameIwc11__mbstate_tEC2EPKcj
+ W _ZNSt3__114codecvt_bynameIwc11__mbstate_tEC2ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
+ W _ZNSt3__114codecvt_bynameIwc11__mbstate_tED0Ev
+ W _ZNSt3__114codecvt_bynameIwc11__mbstate_tED1Ev
+ W _ZNSt3__114codecvt_bynameIwc11__mbstate_tED2Ev
T _ZNSt3__114collate_bynameIcEC1EPKcj
T _ZNSt3__114collate_bynameIcEC1ERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEj
T _ZNSt3__114collate_bynameIcEC2EPKcj
@@ -1509,7 +1529,7 @@
C _ZNSt3__115__time_get_tempIwED0Ev
C _ZNSt3__115__time_get_tempIwED1Ev
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE10pubseekoffExNS_8ios_base7seekdirEj
- W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE10pubseekposENS_4fposI10_mbstate_tEEj
+ W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE10pubseekposENS_4fposI11__mbstate_tEEj
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4setgEPcS4_S4_
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4setpEPcS4_
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4swapERS3_
@@ -1529,7 +1549,7 @@
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsputnEPKci
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7pubsyncEv
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7seekoffExNS_8ios_base7seekdirEj
- W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7seekposENS_4fposI10_mbstate_tEEj
+ W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7seekposENS_4fposI11__mbstate_tEEj
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7sungetcEv
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE8in_availEv
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE8overflowEi
@@ -1548,7 +1568,7 @@
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev
W _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEaSERKS3_
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE10pubseekoffExNS_8ios_base7seekdirEj
- W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE10pubseekposENS_4fposI10_mbstate_tEEj
+ W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE10pubseekposENS_4fposI11__mbstate_tEEj
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4setgEPwS4_S4_
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4setpEPwS4_
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4swapERS3_
@@ -1568,12 +1588,12 @@
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6xsputnEPKwi
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7pubsyncEv
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7seekoffExNS_8ios_base7seekdirEj
- W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7seekposENS_4fposI10_mbstate_tEEj
+ W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7seekposENS_4fposI11__mbstate_tEEj
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7sungetcEv
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8in_availEv
- W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8overflowEi
+ W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8overflowEj
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8pubimbueERKNS_6localeE
- W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9pbackfailEi
+ W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9pbackfailEj
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9pubsetbufEPwi
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9showmanycEv
W _ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9sputbackcEw
@@ -1956,26 +1976,26 @@
C _ZNSt3__17__sort5IRNS_6__lessIwwEEPwEEjT0_S5_S5_S5_S5_T_
C _ZNSt3__17__sort5IRNS_6__lessIxxEEPxEEjT0_S5_S5_S5_S5_T_
C _ZNSt3__17__sort5IRNS_6__lessIyyEEPyEEjT0_S5_S5_S5_S5_T_
- D _ZNSt3__17codecvtIDic10_mbstate_tE2idE
- T _ZNSt3__17codecvtIDic10_mbstate_tED0Ev
- T _ZNSt3__17codecvtIDic10_mbstate_tED1Ev
- T _ZNSt3__17codecvtIDic10_mbstate_tED2Ev
- D _ZNSt3__17codecvtIDsc10_mbstate_tE2idE
- T _ZNSt3__17codecvtIDsc10_mbstate_tED0Ev
- T _ZNSt3__17codecvtIDsc10_mbstate_tED1Ev
- T _ZNSt3__17codecvtIDsc10_mbstate_tED2Ev
- D _ZNSt3__17codecvtIcc10_mbstate_tE2idE
- T _ZNSt3__17codecvtIcc10_mbstate_tED0Ev
- T _ZNSt3__17codecvtIcc10_mbstate_tED1Ev
- T _ZNSt3__17codecvtIcc10_mbstate_tED2Ev
- D _ZNSt3__17codecvtIwc10_mbstate_tE2idE
- T _ZNSt3__17codecvtIwc10_mbstate_tEC1EPKcj
- T _ZNSt3__17codecvtIwc10_mbstate_tEC1Ej
- T _ZNSt3__17codecvtIwc10_mbstate_tEC2EPKcj
- T _ZNSt3__17codecvtIwc10_mbstate_tEC2Ej
- T _ZNSt3__17codecvtIwc10_mbstate_tED0Ev
- T _ZNSt3__17codecvtIwc10_mbstate_tED1Ev
- T _ZNSt3__17codecvtIwc10_mbstate_tED2Ev
+ D _ZNSt3__17codecvtIDic11__mbstate_tE2idE
+ T _ZNSt3__17codecvtIDic11__mbstate_tED0Ev
+ T _ZNSt3__17codecvtIDic11__mbstate_tED1Ev
+ T _ZNSt3__17codecvtIDic11__mbstate_tED2Ev
+ D _ZNSt3__17codecvtIDsc11__mbstate_tE2idE
+ T _ZNSt3__17codecvtIDsc11__mbstate_tED0Ev
+ T _ZNSt3__17codecvtIDsc11__mbstate_tED1Ev
+ T _ZNSt3__17codecvtIDsc11__mbstate_tED2Ev
+ D _ZNSt3__17codecvtIcc11__mbstate_tE2idE
+ T _ZNSt3__17codecvtIcc11__mbstate_tED0Ev
+ T _ZNSt3__17codecvtIcc11__mbstate_tED1Ev
+ T _ZNSt3__17codecvtIcc11__mbstate_tED2Ev
+ D _ZNSt3__17codecvtIwc11__mbstate_tE2idE
+ T _ZNSt3__17codecvtIwc11__mbstate_tEC1EPKcj
+ T _ZNSt3__17codecvtIwc11__mbstate_tEC1Ej
+ T _ZNSt3__17codecvtIwc11__mbstate_tEC2EPKcj
+ T _ZNSt3__17codecvtIwc11__mbstate_tEC2Ej
+ T _ZNSt3__17codecvtIwc11__mbstate_tED0Ev
+ T _ZNSt3__17codecvtIwc11__mbstate_tED1Ev
+ T _ZNSt3__17codecvtIwc11__mbstate_tED2Ev
W _ZNSt3__17collateIcE2idE
W _ZNSt3__17collateIcEC1Ej
W _ZNSt3__17collateIcEC2Ej
@@ -2241,7 +2261,6 @@
T _ZNSt3__19to_stringEx
T _ZNSt3__19to_stringEy
W _ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_
- C _ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EERKS9_PKS6_
T _ZSt10unexpectedv
T _ZSt13get_terminatev
T _ZSt13set_terminatePFvvE
@@ -2295,10 +2314,10 @@
C _ZTINSt3__114__num_put_baseE
D _ZTINSt3__114__shared_countE
W _ZTINSt3__114basic_iostreamIcNS_11char_traitsIcEEEE
- W _ZTINSt3__114codecvt_bynameIDic10_mbstate_tEE
- W _ZTINSt3__114codecvt_bynameIDsc10_mbstate_tEE
- W _ZTINSt3__114codecvt_bynameIcc10_mbstate_tEE
- W _ZTINSt3__114codecvt_bynameIwc10_mbstate_tEE
+ W _ZTINSt3__114codecvt_bynameIDic11__mbstate_tEE
+ W _ZTINSt3__114codecvt_bynameIDsc11__mbstate_tEE
+ W _ZTINSt3__114codecvt_bynameIcc11__mbstate_tEE
+ W _ZTINSt3__114codecvt_bynameIwc11__mbstate_tEE
D _ZTINSt3__114collate_bynameIcEE
D _ZTINSt3__114collate_bynameIwEE
D _ZTINSt3__114error_categoryE
@@ -2345,10 +2364,10 @@
D _ZTINSt3__15ctypeIwEE
D _ZTINSt3__16locale5__impE
D _ZTINSt3__16locale5facetE
- D _ZTINSt3__17codecvtIDic10_mbstate_tEE
- D _ZTINSt3__17codecvtIDsc10_mbstate_tEE
- D _ZTINSt3__17codecvtIcc10_mbstate_tEE
- D _ZTINSt3__17codecvtIwc10_mbstate_tEE
+ D _ZTINSt3__17codecvtIDic11__mbstate_tEE
+ D _ZTINSt3__17codecvtIDsc11__mbstate_tEE
+ D _ZTINSt3__17codecvtIcc11__mbstate_tEE
+ D _ZTINSt3__17codecvtIwc11__mbstate_tEE
W _ZTINSt3__17collateIcEE
W _ZTINSt3__17collateIwEE
W _ZTINSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE
@@ -2429,10 +2448,10 @@
C _ZTSNSt3__114__num_put_baseE
D _ZTSNSt3__114__shared_countE
W _ZTSNSt3__114basic_iostreamIcNS_11char_traitsIcEEEE
- W _ZTSNSt3__114codecvt_bynameIDic10_mbstate_tEE
- W _ZTSNSt3__114codecvt_bynameIDsc10_mbstate_tEE
- W _ZTSNSt3__114codecvt_bynameIcc10_mbstate_tEE
- W _ZTSNSt3__114codecvt_bynameIwc10_mbstate_tEE
+ W _ZTSNSt3__114codecvt_bynameIDic11__mbstate_tEE
+ W _ZTSNSt3__114codecvt_bynameIDsc11__mbstate_tEE
+ W _ZTSNSt3__114codecvt_bynameIcc11__mbstate_tEE
+ W _ZTSNSt3__114codecvt_bynameIwc11__mbstate_tEE
D _ZTSNSt3__114collate_bynameIcEE
D _ZTSNSt3__114collate_bynameIwEE
D _ZTSNSt3__114error_categoryE
@@ -2479,10 +2498,10 @@
D _ZTSNSt3__15ctypeIwEE
D _ZTSNSt3__16locale5__impE
D _ZTSNSt3__16locale5facetE
- D _ZTSNSt3__17codecvtIDic10_mbstate_tEE
- D _ZTSNSt3__17codecvtIDsc10_mbstate_tEE
- D _ZTSNSt3__17codecvtIcc10_mbstate_tEE
- D _ZTSNSt3__17codecvtIwc10_mbstate_tEE
+ D _ZTSNSt3__17codecvtIDic11__mbstate_tEE
+ D _ZTSNSt3__17codecvtIDsc11__mbstate_tEE
+ D _ZTSNSt3__17codecvtIcc11__mbstate_tEE
+ D _ZTSNSt3__17codecvtIwc11__mbstate_tEE
W _ZTSNSt3__17collateIcEE
W _ZTSNSt3__17collateIwEE
W _ZTSNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE
@@ -2559,10 +2578,10 @@
D _ZTVNSt3__114__codecvt_utf8IwEE
D _ZTVNSt3__114__shared_countE
W _ZTVNSt3__114basic_iostreamIcNS_11char_traitsIcEEEE
- W _ZTVNSt3__114codecvt_bynameIDic10_mbstate_tEE
- W _ZTVNSt3__114codecvt_bynameIDsc10_mbstate_tEE
- W _ZTVNSt3__114codecvt_bynameIcc10_mbstate_tEE
- W _ZTVNSt3__114codecvt_bynameIwc10_mbstate_tEE
+ W _ZTVNSt3__114codecvt_bynameIDic11__mbstate_tEE
+ W _ZTVNSt3__114codecvt_bynameIDsc11__mbstate_tEE
+ W _ZTVNSt3__114codecvt_bynameIcc11__mbstate_tEE
+ W _ZTVNSt3__114codecvt_bynameIwc11__mbstate_tEE
D _ZTVNSt3__114collate_bynameIcEE
D _ZTVNSt3__114collate_bynameIwEE
D _ZTVNSt3__114error_categoryE
@@ -2605,10 +2624,10 @@
D _ZTVNSt3__15ctypeIwEE
D _ZTVNSt3__16locale5__impE
D _ZTVNSt3__16locale5facetE
- D _ZTVNSt3__17codecvtIDic10_mbstate_tEE
- D _ZTVNSt3__17codecvtIDsc10_mbstate_tEE
- D _ZTVNSt3__17codecvtIcc10_mbstate_tEE
- D _ZTVNSt3__17codecvtIwc10_mbstate_tEE
+ D _ZTVNSt3__17codecvtIDic11__mbstate_tEE
+ D _ZTVNSt3__17codecvtIDsc11__mbstate_tEE
+ D _ZTVNSt3__17codecvtIcc11__mbstate_tEE
+ D _ZTVNSt3__17codecvtIwc11__mbstate_tEE
W _ZTVNSt3__17collateIcEE
W _ZTVNSt3__17collateIwEE
W _ZTVNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE
diff --git a/system/lib/libcxx/system_error.cpp b/system/lib/libcxx/system_error.cpp
index 7376b770..b40409f8 100644
--- a/system/lib/libcxx/system_error.cpp
+++ b/system/lib/libcxx/system_error.cpp
@@ -7,6 +7,7 @@
//
//===----------------------------------------------------------------------===//
+#define _LIBCPP_BUILDING_SYSTEM_ERROR
#include "system_error"
#include "string"
#include "cstring"
diff --git a/system/lib/libcxx/thread.cpp b/system/lib/libcxx/thread.cpp
index 1fd8bb04..338a8a24 100644
--- a/system/lib/libcxx/thread.cpp
+++ b/system/lib/libcxx/thread.cpp
@@ -14,9 +14,9 @@
#include "limits"
#include <sys/types.h>
#if !defined(_WIN32)
-#if !defined(__sun__) && !defined(__linux__)
+#if !defined(__sun__) && !defined(__linux__) && !defined(_AIX)
#include <sys/sysctl.h>
-#endif // !__sun__ && !__linux__
+#endif // !__sun__ && !__linux__ && !_AIX
#include <unistd.h>
#endif // !_WIN32
@@ -89,7 +89,11 @@ thread::hardware_concurrency() _NOEXCEPT
#else // defined(CTL_HW) && defined(HW_NCPU)
// TODO: grovel through /proc or check cpuid on x86 and similar
// instructions on other architectures.
-#warning hardware_concurrency not yet implemented
+# if defined(_MSC_VER) && ! defined(__clang__)
+ _LIBCPP_WARNING("hardware_concurrency not yet implemented")
+# else
+# warning hardware_concurrency not yet implemented
+# endif
return 0; // Means not computable [thread.thread.static]
#endif // defined(CTL_HW) && defined(HW_NCPU)
}
diff --git a/system/lib/libcxx/typeinfo.cpp b/system/lib/libcxx/typeinfo.cpp
index 60828944..b4281209 100644
--- a/system/lib/libcxx/typeinfo.cpp
+++ b/system/lib/libcxx/typeinfo.cpp
@@ -20,12 +20,18 @@
#include "typeinfo"
-#if !(defined(_LIBCPPABI_VERSION) || defined(LIBCXXRT))
+#if !defined(LIBCXXRT) && !defined(_LIBCPPABI_VERSION)
std::bad_cast::bad_cast() _NOEXCEPT
{
}
+std::bad_typeid::bad_typeid() _NOEXCEPT
+{
+}
+
+#ifndef __GLIBCXX__
+
std::bad_cast::~bad_cast() _NOEXCEPT
{
}
@@ -36,10 +42,6 @@ std::bad_cast::what() const _NOEXCEPT
return "std::bad_cast";
}
-std::bad_typeid::bad_typeid() _NOEXCEPT
-{
-}
-
std::bad_typeid::~bad_typeid() _NOEXCEPT
{
}
@@ -67,4 +69,5 @@ std::bad_typeid::what() const _NOEXCEPT
}
#endif
-#endif // _LIBCPPABI_VERSION
+#endif // !__GLIBCXX__
+#endif // !LIBCXXRT && !_LIBCPPABI_VERSION
diff --git a/system/lib/libcxx/valarray.cpp b/system/lib/libcxx/valarray.cpp
index 2d8db52a..e4c9ed02 100644
--- a/system/lib/libcxx/valarray.cpp
+++ b/system/lib/libcxx/valarray.cpp
@@ -7,6 +7,8 @@
//
//===----------------------------------------------------------------------===//
+#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
+
#include "valarray"
_LIBCPP_BEGIN_NAMESPACE_STD