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
#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

View File

@ -7,6 +7,7 @@
//
//===----------------------------------------------------------------------===//
#include "__config"
#include "ios"
#include "streambuf"
#include "istream"
@ -52,11 +53,9 @@ string
__iostream_category::message(int ev) const
{
if (ev != static_cast<int>(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");

View File

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