Newlib names ELAST differently than linux

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216943 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jonathan Roelofs 2014-09-02 20:34:23 +00:00
parent e33e03e558
commit b9420936a4
3 changed files with 25 additions and 23 deletions

View File

@ -635,6 +635,17 @@ template <unsigned> struct __static_assert_check {};
#define _LIBCPP_WCTYPE_IS_MASK #define _LIBCPP_WCTYPE_IS_MASK
#endif #endif
#if defined(ELAST)
#define _LIBCPP_ELAST ELAST
#elif defined(__linux__)
#define _LIBCPP_ELAST 4095
#elif defined(_NEWLIB_VERSION)
#define _LIBCPP_ELAST __ELASTERROR
#else
// Warn here so that the person doing the libcxx port has an easier time:
#warning This platform's ELAST hasn't been ported yet
#endif
#ifndef _LIBCPP_TRIVIAL_PAIR_COPY_CTOR #ifndef _LIBCPP_TRIVIAL_PAIR_COPY_CTOR
# define _LIBCPP_TRIVIAL_PAIR_COPY_CTOR 1 # define _LIBCPP_TRIVIAL_PAIR_COPY_CTOR 1
#endif #endif

View File

@ -7,6 +7,7 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "__config"
#include "ios" #include "ios"
#include "streambuf" #include "streambuf"
#include "istream" #include "istream"
@ -52,11 +53,9 @@ string
__iostream_category::message(int ev) const __iostream_category::message(int ev) const
{ {
if (ev != static_cast<int>(io_errc::stream) if (ev != static_cast<int>(io_errc::stream)
#ifdef ELAST #ifdef _LIBCPP_ELAST
&& ev <= ELAST && ev <= _LIBCPP_ELAST
#elif defined(__linux__) #endif // _LIBCPP_ELAST
&& ev <= 4095
#endif // ELAST
) )
return __do_message::message(ev); return __do_message::message(ev);
return string("unspecified iostream_category error"); return string("unspecified iostream_category error");

View File

@ -8,6 +8,7 @@
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#define _LIBCPP_BUILDING_SYSTEM_ERROR #define _LIBCPP_BUILDING_SYSTEM_ERROR
#include "__config"
#include "system_error" #include "system_error"
#include "string" #include "string"
#include "cstring" #include "cstring"
@ -65,13 +66,10 @@ __generic_error_category::name() const _NOEXCEPT
string string
__generic_error_category::message(int ev) const __generic_error_category::message(int ev) const
{ {
#ifdef ELAST #ifdef _LIBCPP_ELAST
if (ev > ELAST) if (ev > _LIBCPP_ELAST)
return string("unspecified generic_category error"); return string("unspecified generic_category error");
#elif defined(__linux__) #endif // _LIBCPP_ELAST
if (ev > 4095)
return string("unspecified generic_category error");
#endif // ELAST
return __do_message::message(ev); return __do_message::message(ev);
} }
@ -100,26 +98,20 @@ __system_error_category::name() const _NOEXCEPT
string string
__system_error_category::message(int ev) const __system_error_category::message(int ev) const
{ {
#ifdef ELAST #ifdef _LIBCPP_ELAST
if (ev > ELAST) if (ev > _LIBCPP_ELAST)
return string("unspecified system_category error"); return string("unspecified system_category error");
#elif defined(__linux__) #endif // _LIBCPP_ELAST
if (ev > 4095)
return string("unspecified system_category error");
#endif // ELAST
return __do_message::message(ev); return __do_message::message(ev);
} }
error_condition error_condition
__system_error_category::default_error_condition(int ev) const _NOEXCEPT __system_error_category::default_error_condition(int ev) const _NOEXCEPT
{ {
#ifdef ELAST #ifdef _LIBCPP_ELAST
if (ev > ELAST) if (ev > _LIBCPP_ELAST)
return error_condition(ev, system_category()); return error_condition(ev, system_category());
#elif defined(__linux__) #endif // _LIBCPP_ELAST
if (ev > 4095)
return error_condition(ev, system_category());
#endif // ELAST
return error_condition(ev, generic_category()); return error_condition(ev, generic_category());
} }