summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Roelofs <jonathan@codesourcery.com>2014-09-02 20:34:23 +0000
committerJonathan Roelofs <jonathan@codesourcery.com>2014-09-02 20:34:23 +0000
commitb9420936a47d38be984517075686d64c7affff42 (patch)
treeb258aaebba6ceedf8dfd1ad2ea180f943cb07c21
parente33e03e5580f48837391ff06843c3dcc057ff612 (diff)
downloadexternal_libcxx-b9420936a47d38be984517075686d64c7affff42.tar.gz
external_libcxx-b9420936a47d38be984517075686d64c7affff42.tar.bz2
external_libcxx-b9420936a47d38be984517075686d64c7affff42.zip
Newlib names ELAST differently than linux
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@216943 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/__config11
-rw-r--r--src/ios.cpp9
-rw-r--r--src/system_error.cpp28
3 files changed, 25 insertions, 23 deletions
diff --git a/include/__config b/include/__config
index c9718cf77..b75176c88 100644
--- a/include/__config
+++ b/include/__config
@@ -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
diff --git a/src/ios.cpp b/src/ios.cpp
index 260ec7637..b71d7da1a 100644
--- a/src/ios.cpp
+++ b/src/ios.cpp
@@ -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");
diff --git a/src/system_error.cpp b/src/system_error.cpp
index d5cb2d4ae..9c8adc4f3 100644
--- a/src/system_error.cpp
+++ b/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 @@ __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)
- 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());
}