+2011-08-18 Marc Glisse <marc.glisse@normalesup.org>
+ Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR libstdc++-v3/1773
+ * config/os/solaris2.7: Rename to config/os/solaris2.9.
+ * config/os/solaris/solaris2.9/os_defines.h
+ (__CORRECT_ISO_CPP_MATH_H_PROTO1)
+ (__CORRECT_ISO_CPP_STDLIB_H_PROTO)
+ (__CORRECT_ISO_CPP_STRING_H_PROTO)
+ (__CORRECT_ISO_CPP_WCHAR_H_PROTO): Define.
+ * config/os/solaris2.8/ctype_base.h,
+ config/os/solaris2.8/ctype_configure_char.cc,
+ config/solaris2.8/ctype_inline.h,
+ config/os/solaris2.8/os_defines.h: New files.
+
+ * configure.host (solaris2.[89], solaris2.1[0-9]):
+ Split into ...
+ (solaris2.8): ... this.
+ Use os/solaris/solaris2.8.
+ (solaris2.9, solaris2.1[0-9]): ... and this.
+ Use os/solaris/solaris2.9.
+
+ * include/c_global/cmath (double abs(double)): Wrap in
+ !__CORRECT_ISO_CPP_MATH_H_PROTO1 &&
+ !__CORRECT_ISO_CPP_MATH_H_PROTO2.
+ (float abs(float), long double abs(long double): Wrap in
+ !__CORRECT_ISO_CPP_MATH_H_PROTO1.
+ (float acos(float), long double acos(long double)): Likewise.
+ (float asin(float), long double asin(long double)): Likewise.
+ (float atan(float), long double atan(long double)): Likewise.
+ (float atan2(float, float), long double atan2(long double, long
+ double)): Likewise.
+ (float ceil(float), long double ceil(long double)): Likewise.
+ (float cos(float), long double cos(long double)): Likewise.
+ (float cosh(float), long double cosh(long double)): Likewise.
+ (float exp(float), long double exp(long double)): Likewise.
+ (float fabs(float), long double fabs(long double)): Likewise.
+ (float floor(float), long double floor(long double)): Likewise.
+ (float fmod(float, float), long double fmod(long double, long
+ double)): Likewise.
+ (float frexp(float, int*), long double frexp(long double, int*)):
+ Likewise.
+ (float ldexp(float, int), long double ldexp(long double, int)):
+ Likewise.
+ (float log(float), long double log(long double)): Likewise.
+ (float log10(float), long double log10(long double)): Likewise.
+ (float modf(float, float*), long double modf(long double, long
+ double*))): Likewise.
+ (float pow(float, float), long double pow(long double, long
+ double)): Likewise.
+ (float sin(float), long double sin(long double)): Likewise.
+ (float sinh(float), long double sinh(long double)): Likewise.
+ (float sqrt(float), long double sqrt(long double)): Likewise.
+ (float tan(float), long double tan(long double)): Likewise.
+ (float tanh(float), long double tanh(long double)): Likewise.
+ * include/c_global/cstdlib (long abs(long), ldiv_t div(long,
+ long)): Wrap in !__CORRECT_ISO_CPP_STDLIB_H_PROTO.
+ * include/tr1/cmath (float fabs(float), long double fabs(long
+ double)): Wrap in !__CORRECT_ISO_CPP_MATH_H_PROTO1.
+
2011-08-14 Benjamin Kosnik <bkoz@redhat.com>
* doc/xml/images/*: Image and image filename changes.
-// Specific definitions for Solaris 7,8 -*- C++ -*-
+// Specific definitions for Solaris 8 -*- C++ -*-
-// Copyright (C) 2000, 2002, 2005, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002, 2005, 2009, 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
// System-specific #define, typedefs, corrections, etc, go here. This
// file will come before all others.
+// FIXME: Autoconf if possible.
+#if __cplusplus >= 199711L
+#define __CORRECT_ISO_CPP_MATH_H_PROTO2
+#define __CORRECT_ISO_CPP_STRING_H_PROTO
+#define __CORRECT_ISO_CPP_WCHAR_H_PROTO
+#endif
+
#endif
--- /dev/null
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997, 1998, 1999, 2000, 2003, 2009 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. Looks like this
+// only works with solaris2.7 and solaris2.8. Thanks for not changing
+// things, sun engineers!
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ /// @brief Base class for ctype.
+ struct ctype_base
+ {
+ // Non-standard typedefs.
+ typedef 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.
+ typedef unsigned int mask;
+ static const mask upper = _ISUPPER;
+ static const mask lower = _ISLOWER;
+ static const mask alpha = _ISALPHA;
+ static const mask digit = _ISDIGIT;
+ static const mask xdigit = _ISXDIGIT;
+ static const mask space = _ISSPACE;
+ static const mask print = _ISPRINT;
+ static const mask graph = _ISALPHA | _ISDIGIT | _ISPUNCT;
+ static const mask cntrl = _ISCNTRL;
+ static const mask punct = _ISPUNCT;
+ static const mask alnum = _ISALPHA | _ISDIGIT;
+ };
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
--- /dev/null
+// 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 __ctype_mask; }
+
+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+ size_t __refs)
+ : facet(__refs), _M_del(__table != 0 && __del),
+ _M_toupper(__trans_upper), _M_tolower(__trans_lower),
+ _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(__trans_upper), _M_tolower(__trans_lower),
+ _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 _M_toupper[static_cast<unsigned char>(__c)]; }
+
+ const char*
+ ctype<char>::do_toupper(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+ *__low = _M_toupper[static_cast<unsigned char>(*__low)];
+ ++__low;
+ }
+ return __high;
+ }
+
+ char
+ ctype<char>::do_tolower(char __c) const
+ { return _M_tolower[static_cast<unsigned char>(__c)]; }
+
+ const char*
+ ctype<char>::do_tolower(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+ *__low = _M_tolower[static_cast<unsigned char>(*__low)];
+ ++__low;
+ }
+ return __high;
+ }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
--- /dev/null
+// Locale support -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 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
+ { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+ const char*
+ ctype<char>::
+ is(const char* __low, const char* __high, mask* __vec) const
+ {
+ while (__low < __high)
+ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+ return __high;
+ }
+
+ const char*
+ ctype<char>::
+ scan_is(mask __m, const char* __low, const char* __high) const
+ {
+ while (__low < __high
+ && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+ ++__low;
+ return __low;
+ }
+
+ const char*
+ ctype<char>::
+ scan_not(mask __m, const char* __low, const char* __high) const
+ {
+ while (__low < __high
+ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+ ++__low;
+ return __low;
+ }
+
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
--- /dev/null
+// Specific definitions for Solaris 9+ -*- C++ -*-
+
+// Copyright (C) 2000, 2002, 2005, 2009, 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/>.
+
+#ifndef _GLIBCXX_OS_DEFINES
+#define _GLIBCXX_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
+
+// FIXME: Autoconf if possible.
+#if __cplusplus >= 199711L
+#define __CORRECT_ISO_CPP_MATH_H_PROTO1
+#define __CORRECT_ISO_CPP_STDLIB_H_PROTO
+#define __CORRECT_ISO_CPP_STRING_H_PROTO
+#define __CORRECT_ISO_CPP_WCHAR_H_PROTO
+#endif
+
+#endif
+
echo "Please specify the full version of Solaris, ie. solaris2.9 " 1>&2
exit 1
;;
- solaris2.[89] | solaris2.1[0-9])
- os_include_dir="os/solaris/solaris2.7"
+ solaris2.8)
+ os_include_dir="os/solaris/solaris2.8"
+ ;;
+ solaris2.9 | solaris2.1[0-9])
+ os_include_dir="os/solaris/solaris2.9"
;;
tpf)
os_include_dir="os/tpf"
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
+#if !defined(__CORRECT_ISO_CPP_MATH_H_PROTO1) \
+ && !defined(__CORRECT_ISO_CPP_MATH_H_PROTO2)
inline _GLIBCXX_CONSTEXPR double
abs(double __x)
{ return __builtin_fabs(__x); }
+#endif
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
abs(float __x)
{ return __builtin_fabsf(__x); }
inline _GLIBCXX_CONSTEXPR long double
abs(long double __x)
{ return __builtin_fabsl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::acos;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
acos(float __x)
{ return __builtin_acosf(__x); }
inline _GLIBCXX_CONSTEXPR long double
acos(long double __x)
{ return __builtin_acosl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::asin;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
asin(float __x)
{ return __builtin_asinf(__x); }
inline _GLIBCXX_CONSTEXPR long double
asin(long double __x)
{ return __builtin_asinl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::atan;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
atan(float __x)
{ return __builtin_atanf(__x); }
inline _GLIBCXX_CONSTEXPR long double
atan(long double __x)
{ return __builtin_atanl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::atan2;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
atan2(float __y, float __x)
{ return __builtin_atan2f(__y, __x); }
inline _GLIBCXX_CONSTEXPR long double
atan2(long double __y, long double __x)
{ return __builtin_atan2l(__y, __x); }
+#endif
template<typename _Tp, typename _Up>
inline _GLIBCXX_CONSTEXPR
using ::ceil;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
ceil(float __x)
{ return __builtin_ceilf(__x); }
inline _GLIBCXX_CONSTEXPR long double
ceil(long double __x)
{ return __builtin_ceill(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::cos;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
cos(float __x)
{ return __builtin_cosf(__x); }
inline _GLIBCXX_CONSTEXPR long double
cos(long double __x)
{ return __builtin_cosl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::cosh;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
cosh(float __x)
{ return __builtin_coshf(__x); }
inline _GLIBCXX_CONSTEXPR long double
cosh(long double __x)
{ return __builtin_coshl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::exp;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
exp(float __x)
{ return __builtin_expf(__x); }
inline _GLIBCXX_CONSTEXPR long double
exp(long double __x)
{ return __builtin_expl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::fabs;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
fabs(float __x)
{ return __builtin_fabsf(__x); }
inline _GLIBCXX_CONSTEXPR long double
fabs(long double __x)
{ return __builtin_fabsl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::floor;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
floor(float __x)
{ return __builtin_floorf(__x); }
inline _GLIBCXX_CONSTEXPR long double
floor(long double __x)
{ return __builtin_floorl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::fmod;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
fmod(float __x, float __y)
{ return __builtin_fmodf(__x, __y); }
inline _GLIBCXX_CONSTEXPR long double
fmod(long double __x, long double __y)
{ return __builtin_fmodl(__x, __y); }
+#endif
template<typename _Tp, typename _Up>
inline _GLIBCXX_CONSTEXPR
using ::frexp;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
frexp(float __x, int* __exp)
{ return __builtin_frexpf(__x, __exp); }
inline _GLIBCXX_CONSTEXPR long double
frexp(long double __x, int* __exp)
{ return __builtin_frexpl(__x, __exp); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::ldexp;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
ldexp(float __x, int __exp)
{ return __builtin_ldexpf(__x, __exp); }
inline _GLIBCXX_CONSTEXPR long double
ldexp(long double __x, int __exp)
{ return __builtin_ldexpl(__x, __exp); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::log;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
log(float __x)
{ return __builtin_logf(__x); }
inline _GLIBCXX_CONSTEXPR long double
log(long double __x)
{ return __builtin_logl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::log10;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
log10(float __x)
{ return __builtin_log10f(__x); }
inline _GLIBCXX_CONSTEXPR long double
log10(long double __x)
{ return __builtin_log10l(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::modf;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
modf(float __x, float* __iptr)
{ return __builtin_modff(__x, __iptr); }
inline _GLIBCXX_CONSTEXPR long double
modf(long double __x, long double* __iptr)
{ return __builtin_modfl(__x, __iptr); }
+#endif
using ::pow;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
pow(float __x, float __y)
{ return __builtin_powf(__x, __y); }
pow(long double __x, int __n)
{ return __builtin_powil(__x, __n); }
#endif
+#endif
template<typename _Tp, typename _Up>
inline _GLIBCXX_CONSTEXPR
using ::sin;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
sin(float __x)
{ return __builtin_sinf(__x); }
inline _GLIBCXX_CONSTEXPR long double
sin(long double __x)
{ return __builtin_sinl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::sinh;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
sinh(float __x)
{ return __builtin_sinhf(__x); }
inline _GLIBCXX_CONSTEXPR long double
sinh(long double __x)
{ return __builtin_sinhl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::sqrt;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
sqrt(float __x)
{ return __builtin_sqrtf(__x); }
inline _GLIBCXX_CONSTEXPR long double
sqrt(long double __x)
{ return __builtin_sqrtl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::tan;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
tan(float __x)
{ return __builtin_tanf(__x); }
inline _GLIBCXX_CONSTEXPR long double
tan(long double __x)
{ return __builtin_tanl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
using ::tanh;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline _GLIBCXX_CONSTEXPR float
tanh(float __x)
{ return __builtin_tanhf(__x); }
inline _GLIBCXX_CONSTEXPR long double
tanh(long double __x)
{ return __builtin_tanhl(__x); }
+#endif
template<typename _Tp>
inline _GLIBCXX_CONSTEXPR
// -*- C++ -*- forwarding header.
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010
+// 2006, 2007, 2008, 2009, 2010, 2011
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
using ::wctomb;
#endif // _GLIBCXX_USE_WCHAR_T
+#ifndef __CORRECT_ISO_CPP_STDLIB_H_PROTO
inline long
abs(long __i) { return labs(__i); }
inline ldiv_t
div(long __i, long __j) { return ldiv(__i, __j); }
+#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
// mode have a different return type.
using ::fabs;
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
inline float
fabs(float __x)
{ return __builtin_fabsf(__x); }
double>::__type
fabs(_Tp __x)
{ return __builtin_fabs(__x); }
+#endif
inline float
fdim(float __x, float __y)