Index: include/__config =================================================================== --- include/__config +++ include/__config @@ -635,6 +635,17 @@ #define _LIBCPP_WCTYPE_IS_MASK #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 # define _LIBCPP_TRIVIAL_PAIR_COPY_CTOR 1 #endif Index: src/ios.cpp =================================================================== --- src/ios.cpp +++ src/ios.cpp @@ -7,6 +7,7 @@ // //===----------------------------------------------------------------------===// +#include "__config" #include "ios" #include "streambuf" #include "istream" @@ -52,11 +53,9 @@ __iostream_category::message(int ev) const { if (ev != static_cast(io_errc::stream) -#ifdef ELAST - && ev <= ELAST -#elif defined(__linux__) - && ev <= 4095 -#endif // ELAST +#ifdef _LIBCPP_ELAST + && ev <= _LIBCPP_ELAST +#endif // _LIBCPP_ELAST ) return __do_message::message(ev); return string("unspecified iostream_category error"); Index: src/system_error.cpp =================================================================== --- src/system_error.cpp +++ src/system_error.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// #define _LIBCPP_BUILDING_SYSTEM_ERROR +#include "__config" #include "system_error" #include "string" #include "cstring" @@ -65,13 +66,10 @@ string __generic_error_category::message(int ev) const { -#ifdef ELAST - if (ev > ELAST) +#ifdef _LIBCPP_ELAST + if (ev > _LIBCPP_ELAST) return string("unspecified generic_category error"); -#elif defined(__linux__) - if (ev > 4095) - return string("unspecified generic_category error"); -#endif // ELAST +#endif // _LIBCPP_ELAST return __do_message::message(ev); } @@ -100,26 +98,20 @@ string __system_error_category::message(int ev) const { -#ifdef ELAST - if (ev > ELAST) - return string("unspecified system_category error"); -#elif defined(__linux__) - if (ev > 4095) +#ifdef _LIBCPP_ELAST + if (ev > _LIBCPP_ELAST) return string("unspecified system_category error"); -#endif // ELAST +#endif // _LIBCPP_ELAST return __do_message::message(ev); } error_condition __system_error_category::default_error_condition(int ev) const _NOEXCEPT { -#ifdef ELAST - if (ev > ELAST) - return error_condition(ev, system_category()); -#elif defined(__linux__) - if (ev > 4095) +#ifdef _LIBCPP_ELAST + if (ev > _LIBCPP_ELAST) return error_condition(ev, system_category()); -#endif // ELAST +#endif // _LIBCPP_ELAST return error_condition(ev, generic_category()); }