summaryrefslogtreecommitdiffstats
path: root/libcxx/src
diff options
context:
space:
mode:
authorDavid Chisnall <csdavec@swan.ac.uk>2012-02-29 13:05:08 +0000
committerDavid Chisnall <csdavec@swan.ac.uk>2012-02-29 13:05:08 +0000
commit14c25b80e9be5aab9b503a53f810c5bbffe4d632 (patch)
tree199ca992efe98f7ab5e558763404fe70f488dd1c /libcxx/src
parent66d45737860948d34b3f7e46d6d571a9de6cb22c (diff)
downloadbcm5719-llvm-14c25b80e9be5aab9b503a53f810c5bbffe4d632.tar.gz
bcm5719-llvm-14c25b80e9be5aab9b503a53f810c5bbffe4d632.zip
Solaris port. Currently sees around 200 test failures, mostly related to
Solaris not providing some of the locales that the test suite uses. Note: This depends on an xlocale (partial) implementation for Solaris and a couple of fixed standard headers. These will be committed to a branch later today. llvm-svn: 151720
Diffstat (limited to 'libcxx/src')
-rw-r--r--libcxx/src/locale.cpp11
-rw-r--r--libcxx/src/random.cpp3
-rw-r--r--libcxx/src/thread.cpp2
3 files changed, 15 insertions, 1 deletions
diff --git a/libcxx/src/locale.cpp b/libcxx/src/locale.cpp
index ba686588116..089fae6a3ab 100644
--- a/libcxx/src/locale.cpp
+++ b/libcxx/src/locale.cpp
@@ -7,6 +7,12 @@
//
//===----------------------------------------------------------------------===//
+// On Solaris, we need to define something to make the C99 parts of localeconv
+// visible.
+#ifdef __sun__
+#define _LCONV_C99
+#endif
+
#include "string"
#include "locale"
#include "codecvt"
@@ -925,11 +931,16 @@ ctype<char>::classic_table() _NOEXCEPT
return _DefaultRuneLocale.__runetype;
#elif defined(__GLIBC__)
return __cloc()->__ctype_b;
+#elif __sun__
+ return __ctype_mask;
#elif _WIN32
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...
#else
+ // Platform not supported: abort so the person doing the port knows what to
+ // fix
+ abort();
return NULL;
#endif
}
diff --git a/libcxx/src/random.cpp b/libcxx/src/random.cpp
index eca97bc8194..6140b74ecb5 100644
--- a/libcxx/src/random.cpp
+++ b/libcxx/src/random.cpp
@@ -10,6 +10,9 @@
#include "random"
#include "system_error"
+#ifdef __sun__
+#define rename solaris_headers_are_broken
+#endif
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
diff --git a/libcxx/src/thread.cpp b/libcxx/src/thread.cpp
index cc8c3274be4..f27136a53d0 100644
--- a/libcxx/src/thread.cpp
+++ b/libcxx/src/thread.cpp
@@ -12,7 +12,7 @@
#include "vector"
#include "future"
#include <sys/types.h>
-#if !_WIN32
+#if !_WIN32 && !__sun__
#include <sys/sysctl.h>
#endif // _WIN32
OpenPOWER on IntegriCloud