d6fcd55b06
Since the April 6 snapshot, a lot of work has entered the GCC tree to fix the arm-android GNAT port. Currently it passes everything except stack checking. A lot of the additional lines in diff-ada will be removed with the next snapshot. Future plans also include significantly reducing the size of the diff-cxx-testsuite file too.
1139 lines
34 KiB
C++
1139 lines
34 KiB
C++
--- /dev/null
|
|
+++ libstdc++-v3/config/locale/dragonfly/c_locale.cc
|
|
@@ -0,0 +1,300 @@
|
|
+// Wrapper for underlying C-language localization -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
|
+// Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library is free
|
|
+// software; you can redistribute it and/or modify it under the
|
|
+// terms of the GNU General Public License as published by the
|
|
+// Free Software Foundation; either version 3, or (at your option)
|
|
+// any later version.
|
|
+
|
|
+// This library is distributed in the hope that it will be useful,
|
|
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+// GNU General Public License for more details.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+//
|
|
+// ISO C++ 14882: 22.8 Standard locale categories.
|
|
+//
|
|
+
|
|
+// Written by Benjamin Kosnik <bkoz@redhat.com>
|
|
+
|
|
+#include <cerrno> // For errno
|
|
+#include <cmath> // For isinf, finite, finitef, fabs
|
|
+#include <cstdlib> // For strof, strtold
|
|
+#include <cstring>
|
|
+#include <cstdio>
|
|
+#include <locale>
|
|
+#include <limits>
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_IEEEFP_H
|
|
+#include <ieeefp.h>
|
|
+#endif
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+ template<>
|
|
+ void
|
|
+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
|
|
+ const __c_locale&) throw()
|
|
+ {
|
|
+ // Assumes __s formatted for "C" locale.
|
|
+ char* __old = setlocale(LC_ALL, 0);
|
|
+ const size_t __len = strlen(__old) + 1;
|
|
+ char* __sav = new char[__len];
|
|
+ memcpy(__sav, __old, __len);
|
|
+ setlocale(LC_ALL, "C");
|
|
+ char* __sanity;
|
|
+ bool __overflow = false;
|
|
+
|
|
+#if !__FLT_HAS_INFINITY__
|
|
+ errno = 0;
|
|
+#endif
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_STRTOF
|
|
+ __v = strtof(__s, &__sanity);
|
|
+#else
|
|
+ double __d = strtod(__s, &__sanity);
|
|
+ __v = static_cast<float>(__d);
|
|
+#ifdef _GLIBCXX_HAVE_FINITEF
|
|
+ if (!finitef (__v))
|
|
+ __overflow = true;
|
|
+#elif defined (_GLIBCXX_HAVE_FINITE)
|
|
+ if (!finite (static_cast<double> (__v)))
|
|
+ __overflow = true;
|
|
+#elif defined (_GLIBCXX_HAVE_ISINF)
|
|
+ if (isinf (static_cast<double> (__v)))
|
|
+ __overflow = true;
|
|
+#else
|
|
+ if (fabs(__d) > numeric_limits<float>::max())
|
|
+ __overflow = true;
|
|
+#endif
|
|
+#endif // _GLIBCXX_HAVE_STRTOF
|
|
+
|
|
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
+ // 23. Num_get overflow result.
|
|
+ if (__sanity == __s || *__sanity != '\0')
|
|
+ {
|
|
+ __v = 0.0f;
|
|
+ __err = ios_base::failbit;
|
|
+ }
|
|
+ else if (__overflow
|
|
+#if __FLT_HAS_INFINITY__
|
|
+ || __v == numeric_limits<float>::infinity()
|
|
+ || __v == -numeric_limits<float>::infinity()
|
|
+#else
|
|
+ || ((__v > 1.0f || __v < -1.0f) && errno == ERANGE)
|
|
+#endif
|
|
+ )
|
|
+ {
|
|
+ if (__v > 0.0f)
|
|
+ __v = numeric_limits<float>::max();
|
|
+ else
|
|
+ __v = -numeric_limits<float>::max();
|
|
+ __err = ios_base::failbit;
|
|
+ }
|
|
+
|
|
+ setlocale(LC_ALL, __sav);
|
|
+ delete [] __sav;
|
|
+ }
|
|
+
|
|
+ template<>
|
|
+ void
|
|
+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
|
|
+ const __c_locale&) throw()
|
|
+ {
|
|
+ // Assumes __s formatted for "C" locale.
|
|
+ char* __old = setlocale(LC_ALL, 0);
|
|
+ const size_t __len = strlen(__old) + 1;
|
|
+ char* __sav = new char[__len];
|
|
+ memcpy(__sav, __old, __len);
|
|
+ setlocale(LC_ALL, "C");
|
|
+ char* __sanity;
|
|
+
|
|
+#if !__DBL_HAS_INFINITY__
|
|
+ errno = 0;
|
|
+#endif
|
|
+
|
|
+ __v = strtod(__s, &__sanity);
|
|
+
|
|
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
+ // 23. Num_get overflow result.
|
|
+ if (__sanity == __s || *__sanity != '\0')
|
|
+ {
|
|
+ __v = 0.0;
|
|
+ __err = ios_base::failbit;
|
|
+ }
|
|
+ else if (
|
|
+#if __DBL_HAS_INFINITY__
|
|
+ __v == numeric_limits<double>::infinity()
|
|
+ || __v == -numeric_limits<double>::infinity())
|
|
+#else
|
|
+ (__v > 1.0 || __v < -1.0) && errno == ERANGE)
|
|
+#endif
|
|
+ {
|
|
+ if (__v > 0.0)
|
|
+ __v = numeric_limits<double>::max();
|
|
+ else
|
|
+ __v = -numeric_limits<double>::max();
|
|
+ __err = ios_base::failbit;
|
|
+ }
|
|
+
|
|
+ setlocale(LC_ALL, __sav);
|
|
+ delete [] __sav;
|
|
+ }
|
|
+
|
|
+ template<>
|
|
+ void
|
|
+ __convert_to_v(const char* __s, long double& __v,
|
|
+ ios_base::iostate& __err, const __c_locale&) throw()
|
|
+ {
|
|
+ // Assumes __s formatted for "C" locale.
|
|
+ char* __old = setlocale(LC_ALL, 0);
|
|
+ const size_t __len = strlen(__old) + 1;
|
|
+ char* __sav = new char[__len];
|
|
+ memcpy(__sav, __old, __len);
|
|
+ setlocale(LC_ALL, "C");
|
|
+
|
|
+#if !__LDBL_HAS_INFINITY__
|
|
+ errno = 0;
|
|
+#endif
|
|
+
|
|
+#if defined(_GLIBCXX_HAVE_STRTOLD) && !defined(_GLIBCXX_HAVE_BROKEN_STRTOLD)
|
|
+ char* __sanity;
|
|
+ __v = strtold(__s, &__sanity);
|
|
+
|
|
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
|
|
+ // 23. Num_get overflow result.
|
|
+ if (__sanity == __s || *__sanity != '\0')
|
|
+#else
|
|
+ typedef char_traits<char>::int_type int_type;
|
|
+ int __p = sscanf(__s, "%Lf", &__v);
|
|
+
|
|
+ if (!__p || static_cast<int_type>(__p) == char_traits<char>::eof())
|
|
+#endif
|
|
+ {
|
|
+ __v = 0.0l;
|
|
+ __err = ios_base::failbit;
|
|
+ }
|
|
+ else if (
|
|
+#if __LDBL_HAS_INFINITY__
|
|
+ __v == numeric_limits<long double>::infinity()
|
|
+ || __v == -numeric_limits<long double>::infinity())
|
|
+#else
|
|
+ (__v > 1.0l || __v < -1.0l) && errno == ERANGE)
|
|
+#endif
|
|
+ {
|
|
+ if (__v > 0.0l)
|
|
+ __v = numeric_limits<long double>::max();
|
|
+ else
|
|
+ __v = -numeric_limits<long double>::max();
|
|
+ __err = ios_base::failbit;
|
|
+ }
|
|
+
|
|
+ setlocale(LC_ALL, __sav);
|
|
+ delete [] __sav;
|
|
+ }
|
|
+
|
|
+
|
|
+ /* DragonFly's implementation of setlocale won't accept something like
|
|
+ "de_DE". According to nls manpage, the expected format is:
|
|
+ language[_territory][.codeset][@modifier], but it seems that both
|
|
+ the _territory and .codeset components are required.
|
|
+
|
|
+ As an attempt to correct for this, we'll tack on ".UTF-8" if
|
|
+ a period is not detected in the locale string.
|
|
+
|
|
+ There are no locales with modifiers on DragonFly so if found, they
|
|
+ will just be stripped off silently. e.g "de_DE@euro" will be reduced
|
|
+ to "de_DE". The UTF-8 default would be added after that.
|
|
+ */
|
|
+
|
|
+ void
|
|
+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s,
|
|
+ __c_locale)
|
|
+ {
|
|
+ const size_t size__s = (__s == NULL) ? 1 : strlen (__s);
|
|
+ const char UTF8[] = ".UTF-8";
|
|
+ char localspec[size__s + 6 + 1];
|
|
+
|
|
+ if (__s == NULL) {
|
|
+ localspec[0] = NULL;
|
|
+ } else {
|
|
+ strcpy (localspec, __s);
|
|
+ char * pch = strchr (localspec, '@');
|
|
+ if (pch != NULL)
|
|
+ *pch = 0;
|
|
+
|
|
+ if ( (strchr (__s, '.') == NULL)
|
|
+ && (strcmp (__s, "C") != 0)
|
|
+ && (strcmp (__s, "POSIX") != 0))
|
|
+ strncat (localspec, UTF8, 6);
|
|
+ }
|
|
+
|
|
+ const char * result = std::setlocale(LC_ALL, localspec);
|
|
+
|
|
+ if ((strcmp(result, "C") != 0) && (strcmp (result, localspec) != 0))
|
|
+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale "
|
|
+ "name not valid"));
|
|
+ __cloc = 0;
|
|
+ }
|
|
+
|
|
+ void
|
|
+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
|
|
+ { __cloc = 0; }
|
|
+
|
|
+ __c_locale
|
|
+ locale::facet::_S_clone_c_locale(__c_locale&) throw()
|
|
+ { return __c_locale(); }
|
|
+
|
|
+ __c_locale
|
|
+ locale::facet::_S_lc_ctype_c_locale(__c_locale, const char*)
|
|
+ { return __c_locale(); }
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
+
|
|
+namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
|
|
+ {
|
|
+ "LC_CTYPE",
|
|
+ "LC_NUMERIC",
|
|
+ "LC_TIME",
|
|
+ "LC_COLLATE",
|
|
+ "LC_MONETARY",
|
|
+ "LC_MESSAGES"
|
|
+ };
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+ const char* const* const locale::_S_categories = __gnu_cxx::category_names;
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
+
|
|
+// XXX GLIBCXX_ABI Deprecated
|
|
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
|
|
+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
|
|
+ extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
|
|
+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
|
|
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
|
|
--- /dev/null
|
|
+++ libstdc++-v3/config/locale/dragonfly/ctype_members.cc
|
|
@@ -0,0 +1,174 @@
|
|
+// std::ctype implementation details, GNU version -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
|
+// Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library is free
|
|
+// software; you can redistribute it and/or modify it under the
|
|
+// terms of the GNU General Public License as published by the
|
|
+// Free Software Foundation; either version 3, or (at your option)
|
|
+// any later version.
|
|
+
|
|
+// This library is distributed in the hope that it will be useful,
|
|
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+// GNU General Public License for more details.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+//
|
|
+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions.
|
|
+//
|
|
+
|
|
+// Written by Benjamin Kosnik <bkoz@redhat.com>
|
|
+
|
|
+#include <locale>
|
|
+#include <bits/c++locale_internal.h>
|
|
+#include <cstdlib>
|
|
+#include <cstring>
|
|
+#include <cstdio>
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+ // NB: The other ctype<char> specializations are in src/locale.cc and
|
|
+ // various /config/os/* files.
|
|
+
|
|
+ ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
|
|
+ : ctype<char>(0, false, __refs)
|
|
+ {
|
|
+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
|
|
+ {
|
|
+ this->_S_destroy_c_locale(this->_M_c_locale_ctype);
|
|
+ this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ ctype_byname<char>::~ctype_byname()
|
|
+ { }
|
|
+
|
|
+#ifdef _GLIBCXX_USE_WCHAR_T
|
|
+ ctype<wchar_t>::__wmask_type
|
|
+ ctype<wchar_t>::_M_convert_to_wmask(
|
|
+ const mask __attribute__((__unused__)) __m) const throw()
|
|
+ {
|
|
+ // DragonFly uses the same codes for 'char' as 'wchar_t', so this routine
|
|
+ // never gets called.
|
|
+ return __wmask_type();
|
|
+ };
|
|
+
|
|
+ wchar_t
|
|
+ ctype<wchar_t>::do_toupper(wchar_t __c) const
|
|
+ { return towupper(__c); }
|
|
+
|
|
+ const wchar_t*
|
|
+ ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
|
|
+ {
|
|
+ while (__lo < __hi)
|
|
+ {
|
|
+ *__lo = towupper(*__lo);
|
|
+ ++__lo;
|
|
+ }
|
|
+ return __hi;
|
|
+ }
|
|
+
|
|
+ wchar_t
|
|
+ ctype<wchar_t>::do_tolower(wchar_t __c) const
|
|
+ { return towlower(__c); }
|
|
+
|
|
+ const wchar_t*
|
|
+ ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
|
|
+ {
|
|
+ while (__lo < __hi)
|
|
+ {
|
|
+ *__lo = towlower(*__lo);
|
|
+ ++__lo;
|
|
+ }
|
|
+ return __hi;
|
|
+ }
|
|
+
|
|
+ wchar_t
|
|
+ ctype<wchar_t>::
|
|
+ do_widen(char __c) const
|
|
+ { return _M_widen[static_cast<unsigned char>(__c)]; }
|
|
+
|
|
+ const char*
|
|
+ ctype<wchar_t>::
|
|
+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
|
|
+ {
|
|
+ while (__lo < __hi)
|
|
+ {
|
|
+ *__dest = _M_widen[static_cast<unsigned char>(*__lo)];
|
|
+ ++__lo;
|
|
+ ++__dest;
|
|
+ }
|
|
+ return __hi;
|
|
+ }
|
|
+
|
|
+ char
|
|
+ ctype<wchar_t>::
|
|
+ do_narrow(wchar_t __wc, char __dfault) const
|
|
+ {
|
|
+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
|
|
+ return _M_narrow[__wc];
|
|
+ const int __c = wctob(__wc);
|
|
+ return (__c == EOF ? __dfault : static_cast<char>(__c));
|
|
+ }
|
|
+
|
|
+ const wchar_t*
|
|
+ ctype<wchar_t>::
|
|
+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault,
|
|
+ char* __dest) const
|
|
+ {
|
|
+ if (_M_narrow_ok)
|
|
+ while (__lo < __hi)
|
|
+ {
|
|
+ if (*__lo >= 0 && *__lo < 128)
|
|
+ *__dest = _M_narrow[*__lo];
|
|
+ else
|
|
+ {
|
|
+ const int __c = wctob(*__lo);
|
|
+ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
|
|
+ }
|
|
+ ++__lo;
|
|
+ ++__dest;
|
|
+ }
|
|
+ else
|
|
+ while (__lo < __hi)
|
|
+ {
|
|
+ const int __c = wctob(*__lo);
|
|
+ *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
|
|
+ ++__lo;
|
|
+ ++__dest;
|
|
+ }
|
|
+ return __hi;
|
|
+ }
|
|
+
|
|
+ void
|
|
+ ctype<wchar_t>::_M_initialize_ctype() throw()
|
|
+ {
|
|
+ wint_t __i;
|
|
+ for (__i = 0; __i < 128; ++__i)
|
|
+ {
|
|
+ const int __c = wctob(__i);
|
|
+ if (__c == EOF)
|
|
+ break;
|
|
+ else
|
|
+ _M_narrow[__i] = static_cast<char>(__c);
|
|
+ }
|
|
+ if (__i == 128)
|
|
+ _M_narrow_ok = true;
|
|
+ else
|
|
+ _M_narrow_ok = false;
|
|
+ for (size_t __i = 0;
|
|
+ __i < sizeof(_M_widen) / sizeof(wint_t); ++__i)
|
|
+ _M_widen[__i] = btowc(__i);
|
|
+ }
|
|
+#endif // _GLIBCXX_USE_WCHAR_T
|
|
+}
|
|
--- /dev/null
|
|
+++ libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
|
|
@@ -0,0 +1,75 @@
|
|
+// Locale support -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2000, 2003, 2009, 2010 Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library is free
|
|
+// software; you can redistribute it and/or modify it under the
|
|
+// terms of the GNU General Public License as published by the
|
|
+// Free Software Foundation; either version 3, or (at your option)
|
|
+// any later version.
|
|
+
|
|
+// This library is distributed in the hope that it will be useful,
|
|
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+// GNU General Public License for more details.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+//
|
|
+// ISO C++ 14882: 22.1 Locales
|
|
+//
|
|
+
|
|
+// Information as gleaned from /usr/include/ctype.h on DragonFly.
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+ /// @brief Base class for ctype.
|
|
+ struct ctype_base
|
|
+ {
|
|
+ // Non-standard typedefs.
|
|
+ typedef const int* __to_type;
|
|
+
|
|
+ // NB: Offsets into ctype<char>::_M_table force a particular size
|
|
+ // on the mask type. Because of this, we don't use an enum.
|
|
+#ifdef _CTYPE_S
|
|
+ // DragonFly 3.6 and later
|
|
+ typedef unsigned long mask;
|
|
+ static const mask upper = _CTYPE_U;
|
|
+ static const mask lower = _CTYPE_L;
|
|
+ static const mask alpha = _CTYPE_A;
|
|
+ static const mask digit = _CTYPE_D;
|
|
+ static const mask xdigit = _CTYPE_X;
|
|
+ static const mask space = _CTYPE_S;
|
|
+ static const mask print = _CTYPE_R;
|
|
+ static const mask graph = _CTYPE_A | _CTYPE_D | _CTYPE_P;
|
|
+ static const mask cntrl = _CTYPE_C;
|
|
+ static const mask punct = _CTYPE_P;
|
|
+ static const mask alnum = _CTYPE_A | _CTYPE_D;
|
|
+#else
|
|
+ // DragonFly 3.4 and older
|
|
+ typedef unsigned short mask;
|
|
+ static const mask upper = _CTYPEMASK_U;
|
|
+ static const mask lower = _CTYPEMASK_L;
|
|
+ static const mask alpha = _CTYPEMASK_A;
|
|
+ static const mask digit = _CTYPEMASK_D;
|
|
+ static const mask xdigit = _CTYPEMASK_X;
|
|
+ static const mask space = _CTYPEMASK_S;
|
|
+ static const mask print = _CTYPEMASK_R;
|
|
+ static const mask graph = _CTYPEMASK_G;
|
|
+ static const mask cntrl = _CTYPEMASK_C;
|
|
+ static const mask punct = _CTYPEMASK_P;
|
|
+ static const mask alnum = _CTYPEMASK_A | _CTYPEMASK_D;
|
|
+#endif
|
|
+ };
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
--- /dev/null
|
|
+++ libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
|
|
@@ -0,0 +1,99 @@
|
|
+// Locale support -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2011 Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library is free
|
|
+// software; you can redistribute it and/or modify it under the
|
|
+// terms of the GNU General Public License as published by the
|
|
+// Free Software Foundation; either version 3, or (at your option)
|
|
+// any later version.
|
|
+
|
|
+// This library is distributed in the hope that it will be useful,
|
|
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+// GNU General Public License for more details.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+/** @file ctype_configure_char.cc */
|
|
+
|
|
+//
|
|
+// ISO C++ 14882: 22.1 Locales
|
|
+//
|
|
+
|
|
+#include <locale>
|
|
+#include <cstdlib>
|
|
+#include <cstring>
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+// Information as gleaned from /usr/include/ctype.h
|
|
+
|
|
+ const ctype_base::mask*
|
|
+ ctype<char>::classic_table() throw()
|
|
+ { return 0; }
|
|
+
|
|
+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
|
+ size_t __refs)
|
|
+ : facet(__refs), _M_del(__table != 0 && __del),
|
|
+ _M_toupper(NULL), _M_tolower(NULL),
|
|
+ _M_table(__table ? __table : classic_table())
|
|
+ {
|
|
+ memset(_M_widen, 0, sizeof(_M_widen));
|
|
+ _M_widen_ok = 0;
|
|
+ memset(_M_narrow, 0, sizeof(_M_narrow));
|
|
+ _M_narrow_ok = 0;
|
|
+ }
|
|
+
|
|
+ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
|
+ : facet(__refs), _M_del(__table != 0 && __del),
|
|
+ _M_toupper(NULL), _M_tolower(NULL),
|
|
+ _M_table(__table ? __table : classic_table())
|
|
+ {
|
|
+ memset(_M_widen, 0, sizeof(_M_widen));
|
|
+ _M_widen_ok = 0;
|
|
+ memset(_M_narrow, 0, sizeof(_M_narrow));
|
|
+ _M_narrow_ok = 0;
|
|
+ }
|
|
+
|
|
+ char
|
|
+ ctype<char>::do_toupper(char __c) const
|
|
+ { return ::toupper((int) __c); }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::do_toupper(char* __low, const char* __high) const
|
|
+ {
|
|
+ while (__low < __high)
|
|
+ {
|
|
+ *__low = ::toupper((int) *__low);
|
|
+ ++__low;
|
|
+ }
|
|
+ return __high;
|
|
+ }
|
|
+
|
|
+ char
|
|
+ ctype<char>::do_tolower(char __c) const
|
|
+ { return ::tolower((int) __c); }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::do_tolower(char* __low, const char* __high) const
|
|
+ {
|
|
+ while (__low < __high)
|
|
+ {
|
|
+ *__low = ::tolower((int) *__low);
|
|
+ ++__low;
|
|
+ }
|
|
+ return __high;
|
|
+ }
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
--- /dev/null
|
|
+++ libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
|
|
@@ -0,0 +1,187 @@
|
|
+// Locale support -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2000, 2003, 2004, 2005, 2009, 2010
|
|
+// Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library is free
|
|
+// software; you can redistribute it and/or modify it under the
|
|
+// terms of the GNU General Public License as published by the
|
|
+// Free Software Foundation; either version 3, or (at your option)
|
|
+// any later version.
|
|
+
|
|
+// This library is distributed in the hope that it will be useful,
|
|
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+// GNU General Public License for more details.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+/** @file bits/ctype_inline.h
|
|
+ * This is an internal header file, included by other library headers.
|
|
+ * Do not attempt to use it directly. @headername{locale}
|
|
+ */
|
|
+
|
|
+//
|
|
+// ISO C++ 14882: 22.1 Locales
|
|
+//
|
|
+
|
|
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
|
|
+// functions go in ctype.cc
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+ bool
|
|
+ ctype<char>::
|
|
+ is(mask __m, char __c) const
|
|
+ {
|
|
+ if (_M_table)
|
|
+ return _M_table[static_cast<unsigned char>(__c)] & __m;
|
|
+ else
|
|
+#ifdef _CTYPE_S
|
|
+ return __istype(__c, __m);
|
|
+#else
|
|
+ return __libc_ctype_ [__c + 1] & __m;
|
|
+#endif
|
|
+ }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::
|
|
+ is(const char* __low, const char* __high, mask* __vec) const
|
|
+ {
|
|
+ if (_M_table)
|
|
+ while (__low < __high)
|
|
+ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
|
|
+ else
|
|
+ for (;__low < __high; ++__vec, ++__low)
|
|
+ {
|
|
+#ifdef _CTYPE_S
|
|
+ *__vec = __maskrune (*__low, upper | lower | alpha | digit | xdigit
|
|
+ | space | print | graph | cntrl | punct | alnum);
|
|
+#else
|
|
+ mask __m = 0;
|
|
+ if (this->is(upper, *__low)) __m |= upper;
|
|
+ if (this->is(lower, *__low)) __m |= lower;
|
|
+ if (this->is(alpha, *__low)) __m |= alpha;
|
|
+ if (this->is(digit, *__low)) __m |= digit;
|
|
+ if (this->is(xdigit, *__low)) __m |= xdigit;
|
|
+ if (this->is(space, *__low)) __m |= space;
|
|
+ if (this->is(print, *__low)) __m |= print;
|
|
+ if (this->is(graph, *__low)) __m |= graph;
|
|
+ if (this->is(cntrl, *__low)) __m |= cntrl;
|
|
+ if (this->is(punct, *__low)) __m |= punct;
|
|
+ // Do not include explicit line for alnum mask since it is a
|
|
+ // pure composite of masks on DragonFly.
|
|
+ *__vec = __m;
|
|
+#endif
|
|
+ }
|
|
+ return __high;
|
|
+ }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::
|
|
+ scan_is(mask __m, const char* __low, const char* __high) const
|
|
+ {
|
|
+ if (_M_table)
|
|
+ while (__low < __high
|
|
+ && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
|
|
+ ++__low;
|
|
+ else
|
|
+ while (__low < __high && !this->is(__m, *__low))
|
|
+ ++__low;
|
|
+ return __low;
|
|
+ }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::
|
|
+ scan_not(mask __m, const char* __low, const char* __high) const
|
|
+ {
|
|
+ if (_M_table)
|
|
+ while (__low < __high
|
|
+ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
|
|
+ ++__low;
|
|
+ else
|
|
+ while (__low < __high && this->is(__m, *__low) != 0)
|
|
+ ++__low;
|
|
+ return __low;
|
|
+ }
|
|
+
|
|
+#ifdef _GLIBCXX_USE_WCHAR_T
|
|
+ inline bool
|
|
+ ctype<wchar_t>::
|
|
+ do_is(mask __m, wchar_t __c) const
|
|
+ {
|
|
+#ifdef _CTYPE_S
|
|
+ return __istype (__c, __m);
|
|
+#else
|
|
+ return __libc_ctype_ [__c + 1] & __m;
|
|
+#endif
|
|
+ }
|
|
+
|
|
+ inline const wchar_t*
|
|
+ ctype<wchar_t>::
|
|
+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
|
|
+ {
|
|
+ for (; __lo < __hi; ++__vec, ++__lo)
|
|
+#ifdef _CTYPE_S
|
|
+ *__vec = __maskrune (*__lo, upper | lower | alpha | digit | xdigit
|
|
+ | space | print | graph | cntrl | punct | alnum);
|
|
+#else
|
|
+ {
|
|
+ mask __m = 0;
|
|
+ if (isupper (*__lo)) __m |= _CTYPEMASK_U;
|
|
+ if (islower (*__lo)) __m |= _CTYPEMASK_L;
|
|
+ if (isdigit (*__lo)) __m |= _CTYPEMASK_D;
|
|
+ if (isspace (*__lo)) __m |= _CTYPEMASK_S;
|
|
+ if (ispunct (*__lo)) __m |= _CTYPEMASK_P;
|
|
+ if (isblank (*__lo)) __m |= _CTYPEMASK_B;
|
|
+ if (iscntrl (*__lo)) __m |= _CTYPEMASK_C;
|
|
+ if (isalpha (*__lo)) __m |= _CTYPEMASK_A;
|
|
+ if (isgraph (*__lo)) __m |= _CTYPEMASK_G;
|
|
+ if (isprint (*__lo)) __m |= _CTYPEMASK_R;
|
|
+ if (isxdigit(*__lo)) __m |= _CTYPEMASK_X;
|
|
+ /* alnum already covered = alpha | digit */
|
|
+
|
|
+ *__vec = __m;
|
|
+ }
|
|
+#endif
|
|
+ return __hi;
|
|
+ }
|
|
+
|
|
+ inline const wchar_t*
|
|
+ ctype<wchar_t>::
|
|
+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
|
|
+ {
|
|
+#ifdef _CTYPE_S
|
|
+ while (__lo < __hi && ! __istype (*__lo, __m))
|
|
+#else
|
|
+ while (__lo < __hi && !(__libc_ctype_ [*__lo + 1] & __m))
|
|
+#endif
|
|
+ ++__lo;
|
|
+ return __lo;
|
|
+ }
|
|
+
|
|
+ inline const wchar_t*
|
|
+ ctype<wchar_t>::
|
|
+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
|
|
+ {
|
|
+#ifdef _CTYPE_S
|
|
+ while (__lo < __hi && __istype (*__lo, __m))
|
|
+#else
|
|
+ while (__lo < __hi && (__libc_ctype_ [*__lo + 1] & __m))
|
|
+#endif
|
|
+ ++__lo;
|
|
+ return __lo;
|
|
+ }
|
|
+#endif
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
--- /dev/null
|
|
+++ libstdc++-v3/config/os/bsd/dragonfly/os_defines.h
|
|
@@ -0,0 +1,41 @@
|
|
+// Specific definitions for BSD -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library is free
|
|
+// software; you can redistribute it and/or modify it under the
|
|
+// terms of the GNU General Public License as published by the
|
|
+// Free Software Foundation; either version 3, or (at your option)
|
|
+// any later version.
|
|
+
|
|
+// This library is distributed in the hope that it will be useful,
|
|
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+// GNU General Public License for more details.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+
|
|
+#ifndef _GLIBCXX_OS_DEFINES
|
|
+#define _GLIBCXX_OS_DEFINES 1
|
|
+
|
|
+// System-specific #define, typedefs, corrections, etc, go here. This
|
|
+// file will come before all others.
|
|
+
|
|
+/* FreeBSD approach, likely a mistake for DragonFly.
|
|
+#define _GLIBCXX_USE_C99_CHECK 1
|
|
+#define _GLIBCXX_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999))
|
|
+#define _GLIBCXX_USE_C99_LONG_LONG_CHECK 1
|
|
+#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC (_GLIBCXX_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED)
|
|
+#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK 1
|
|
+#define _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC defined _XOPEN_SOURCE
|
|
+*/
|
|
+
|
|
+#endif
|
|
--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig
|
|
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
|
|
@@ -1,6 +1,6 @@
|
|
// Locale support -*- C++ -*-
|
|
|
|
-// Copyright (C) 2000-2014 Free Software Foundation, Inc.
|
|
+// Copyright (C) 2000, 2009, 2011, 2012 Free Software Foundation, Inc.
|
|
//
|
|
// This file is part of the GNU ISO C++ Library. This library is free
|
|
// software; you can redistribute it and/or modify it under the
|
|
@@ -30,7 +30,7 @@
|
|
// Full details can be found from the CVS files at:
|
|
// anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h
|
|
// See www.netbsd.org for details of access.
|
|
-
|
|
+
|
|
namespace std _GLIBCXX_VISIBILITY(default)
|
|
{
|
|
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
@@ -43,21 +43,22 @@
|
|
|
|
// NB: Offsets into ctype<char>::_M_table force a particular size
|
|
// on the mask type. Because of this, we don't use an enum.
|
|
- typedef unsigned char mask;
|
|
|
|
-#ifndef _CTYPE_U
|
|
- static const mask upper = _U;
|
|
- static const mask lower = _L;
|
|
- static const mask alpha = _U | _L;
|
|
- static const mask digit = _N;
|
|
- static const mask xdigit = _N | _X;
|
|
- static const mask space = _S;
|
|
- static const mask print = _P | _U | _L | _N | _B;
|
|
- static const mask graph = _P | _U | _L | _N;
|
|
- static const mask cntrl = _C;
|
|
- static const mask punct = _P;
|
|
- static const mask alnum = _U | _L | _N;
|
|
-#else
|
|
+#if defined(_CTYPE_BL)
|
|
+ typedef unsigned short mask;
|
|
+ static const mask upper = _CTYPE_U;
|
|
+ static const mask lower = _CTYPE_L;
|
|
+ static const mask alpha = _CTYPE_A;
|
|
+ static const mask digit = _CTYPE_D;
|
|
+ static const mask xdigit = _CTYPE_X;
|
|
+ static const mask space = _CTYPE_S;
|
|
+ static const mask print = _CTYPE_R;
|
|
+ static const mask graph = _CTYPE_G;
|
|
+ static const mask cntrl = _CTYPE_C;
|
|
+ static const mask punct = _CTYPE_P;
|
|
+ static const mask alnum = _CTYPE_A | _CTYPE_D;
|
|
+#elif defined(_CTYPE_U)
|
|
+ typedef unsigned char mask;
|
|
static const mask upper = _CTYPE_U;
|
|
static const mask lower = _CTYPE_L;
|
|
static const mask alpha = _CTYPE_U | _CTYPE_L;
|
|
@@ -69,6 +70,19 @@
|
|
static const mask cntrl = _CTYPE_C;
|
|
static const mask punct = _CTYPE_P;
|
|
static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N;
|
|
+#else
|
|
+ typedef unsigned char mask;
|
|
+ static const mask upper = _U;
|
|
+ static const mask lower = _L;
|
|
+ static const mask alpha = _U | _L;
|
|
+ static const mask digit = _N;
|
|
+ static const mask xdigit = _N | _X;
|
|
+ static const mask space = _S;
|
|
+ static const mask print = _P | _U | _L | _N | _B;
|
|
+ static const mask graph = _P | _U | _L | _N;
|
|
+ static const mask cntrl = _C;
|
|
+ static const mask punct = _P;
|
|
+ static const mask alnum = _U | _L | _N;
|
|
#endif
|
|
};
|
|
|
|
--- libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc.orig
|
|
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
|
|
@@ -1,6 +1,6 @@
|
|
// Locale support -*- C++ -*-
|
|
|
|
-// Copyright (C) 2011-2014 Free Software Foundation, Inc.
|
|
+// Copyright (C) 2011 Free Software Foundation, Inc.
|
|
//
|
|
// This file is part of the GNU ISO C++ Library. This library is free
|
|
// software; you can redistribute it and/or modify it under the
|
|
@@ -38,11 +38,17 @@
|
|
|
|
// Information as gleaned from /usr/include/ctype.h
|
|
|
|
+#ifndef _CTYPE_BL
|
|
extern "C" const u_int8_t _C_ctype_[];
|
|
+#endif
|
|
|
|
const ctype_base::mask*
|
|
ctype<char>::classic_table() throw()
|
|
+#ifdef _CTYPE_BL
|
|
+ { return _C_ctype_tab_ + 1; }
|
|
+#else
|
|
{ return _C_ctype_ + 1; }
|
|
+#endif
|
|
|
|
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
|
size_t __refs)
|
|
@@ -69,14 +75,14 @@
|
|
|
|
char
|
|
ctype<char>::do_toupper(char __c) const
|
|
- { return ::toupper((int) __c); }
|
|
+ { return ::toupper((int)(unsigned char) __c); }
|
|
|
|
const char*
|
|
ctype<char>::do_toupper(char* __low, const char* __high) const
|
|
{
|
|
while (__low < __high)
|
|
{
|
|
- *__low = ::toupper((int) *__low);
|
|
+ *__low = ::toupper((int)(unsigned char) *__low);
|
|
++__low;
|
|
}
|
|
return __high;
|
|
@@ -84,14 +90,14 @@
|
|
|
|
char
|
|
ctype<char>::do_tolower(char __c) const
|
|
- { return ::tolower((int) __c); }
|
|
+ { return ::tolower((int)(unsigned char) __c); }
|
|
|
|
const char*
|
|
ctype<char>::do_tolower(char* __low, const char* __high) const
|
|
{
|
|
while (__low < __high)
|
|
{
|
|
- *__low = ::tolower((int) *__low);
|
|
+ *__low = ::tolower((int)(unsigned char) *__low);
|
|
++__low;
|
|
}
|
|
return __high;
|
|
--- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig
|
|
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
|
|
@@ -1,6 +1,6 @@
|
|
// Locale support -*- C++ -*-
|
|
|
|
-// Copyright (C) 2000-2014 Free Software Foundation, Inc.
|
|
+// Copyright (C) 2000, 2009, 2010 Free Software Foundation, Inc.
|
|
//
|
|
// This file is part of the GNU ISO C++ Library. This library is free
|
|
// software; you can redistribute it and/or modify it under the
|
|
@@ -48,7 +48,7 @@
|
|
is(const char* __low, const char* __high, mask* __vec) const
|
|
{
|
|
while (__low < __high)
|
|
- *__vec++ = _M_table[*__low++];
|
|
+ *__vec++ = _M_table[(unsigned char)*__low++];
|
|
return __high;
|
|
}
|
|
|
|
--- libstdc++-v3/acinclude.m4.orig
|
|
+++ libstdc++-v3/acinclude.m4
|
|
@@ -1989,6 +1989,9 @@
|
|
darwin* | freebsd*)
|
|
enable_clocale_flag=darwin
|
|
;;
|
|
+ dragonfly*)
|
|
+ enable_clocale_flag=dragonfly
|
|
+ ;;
|
|
openbsd*)
|
|
enable_clocale_flag=newlib
|
|
;;
|
|
@@ -2075,6 +2078,23 @@
|
|
CMESSAGES_H=config/locale/generic/messages_members.h
|
|
CMESSAGES_CC=config/locale/generic/messages_members.cc
|
|
CMONEY_CC=config/locale/generic/monetary_members.cc
|
|
+ CNUMERIC_CC=config/locale/generic/numeric_members.cc
|
|
+ CTIME_H=config/locale/generic/time_members.h
|
|
+ CTIME_CC=config/locale/generic/time_members.cc
|
|
+ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
|
|
+ ;;
|
|
+
|
|
+ dragonfly)
|
|
+ AC_MSG_RESULT(dragonfly)
|
|
+
|
|
+ CLOCALE_H=config/locale/generic/c_locale.h
|
|
+ CLOCALE_CC=config/locale/dragonfly/c_locale.cc
|
|
+ CCODECVT_CC=config/locale/generic/codecvt_members.cc
|
|
+ CCOLLATE_CC=config/locale/generic/collate_members.cc
|
|
+ CCTYPE_CC=config/locale/dragonfly/ctype_members.cc
|
|
+ CMESSAGES_H=config/locale/generic/messages_members.h
|
|
+ CMESSAGES_CC=config/locale/generic/messages_members.cc
|
|
+ CMONEY_CC=config/locale/generic/monetary_members.cc
|
|
CNUMERIC_CC=config/locale/generic/numeric_members.cc
|
|
CTIME_H=config/locale/generic/time_members.h
|
|
CTIME_CC=config/locale/generic/time_members.cc
|
|
--- libstdc++-v3/configure.orig
|
|
+++ libstdc++-v3/configure
|
|
@@ -15849,6 +15849,9 @@
|
|
darwin* | freebsd*)
|
|
enable_clocale_flag=darwin
|
|
;;
|
|
+ dragonfly*)
|
|
+ enable_clocale_flag=dragonfly
|
|
+ ;;
|
|
openbsd*)
|
|
enable_clocale_flag=newlib
|
|
;;
|
|
@@ -15988,6 +15991,24 @@
|
|
CMESSAGES_H=config/locale/generic/messages_members.h
|
|
CMESSAGES_CC=config/locale/generic/messages_members.cc
|
|
CMONEY_CC=config/locale/generic/monetary_members.cc
|
|
+ CNUMERIC_CC=config/locale/generic/numeric_members.cc
|
|
+ CTIME_H=config/locale/generic/time_members.h
|
|
+ CTIME_CC=config/locale/generic/time_members.cc
|
|
+ CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
|
|
+ ;;
|
|
+
|
|
+ dragonfly)
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: dragonfly" >&5
|
|
+$as_echo "dragonfly" >&6; }
|
|
+
|
|
+ CLOCALE_H=config/locale/generic/c_locale.h
|
|
+ CLOCALE_CC=config/locale/dragonfly/c_locale.cc
|
|
+ CCODECVT_CC=config/locale/generic/codecvt_members.cc
|
|
+ CCOLLATE_CC=config/locale/generic/collate_members.cc
|
|
+ CCTYPE_CC=config/locale/dragonfly/ctype_members.cc
|
|
+ CMESSAGES_H=config/locale/generic/messages_members.h
|
|
+ CMESSAGES_CC=config/locale/generic/messages_members.cc
|
|
+ CMONEY_CC=config/locale/generic/monetary_members.cc
|
|
CNUMERIC_CC=config/locale/generic/numeric_members.cc
|
|
CTIME_H=config/locale/generic/time_members.h
|
|
CTIME_CC=config/locale/generic/time_members.cc
|
|
--- libstdc++-v3/configure.host.orig
|
|
+++ libstdc++-v3/configure.host
|
|
@@ -230,6 +230,12 @@
|
|
os_include_dir="os/generic"
|
|
atomicity_dir="cpu/generic"
|
|
;;
|
|
+ dragonfly*)
|
|
+ os_include_dir="os/bsd/dragonfly"
|
|
+ ;;
|
|
+ linux-androideabi)
|
|
+ os_include_dir="os/bionic"
|
|
+ ;;
|
|
bsd*)
|
|
# Plain BSD attempts to share FreeBSD files.
|
|
os_include_dir="os/bsd/freebsd"
|