Use Solaris prototypes if possible (PR libstdc++-v3/1773)
authorro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Aug 2011 14:59:47 +0000 (14:59 +0000)
committerro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 18 Aug 2011 14:59:47 +0000 (14:59 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177866 138bc75d-0d04-0410-961f-82ee72b054a4

13 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/config/os/solaris/solaris2.8/ctype_base.h [moved from libstdc++-v3/config/os/solaris/solaris2.7/ctype_base.h with 100% similarity]
libstdc++-v3/config/os/solaris/solaris2.8/ctype_configure_char.cc [moved from libstdc++-v3/config/os/solaris/solaris2.7/ctype_configure_char.cc with 100% similarity]
libstdc++-v3/config/os/solaris/solaris2.8/ctype_inline.h [moved from libstdc++-v3/config/os/solaris/solaris2.7/ctype_inline.h with 100% similarity]
libstdc++-v3/config/os/solaris/solaris2.8/os_defines.h [moved from libstdc++-v3/config/os/solaris/solaris2.7/os_defines.h with 78% similarity]
libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h [new file with mode: 0644]
libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc [new file with mode: 0644]
libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h [new file with mode: 0644]
libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h [new file with mode: 0644]
libstdc++-v3/configure.host
libstdc++-v3/include/c_global/cmath
libstdc++-v3/include/c_global/cstdlib
libstdc++-v3/include/tr1/cmath

index d03f003..e45c891 100644 (file)
@@ -1,3 +1,63 @@
+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.
@@ -1,6 +1,6 @@
-// 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
 
diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h b/libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h
new file mode 100644 (file)
index 0000000..1ae3874
--- /dev/null
@@ -0,0 +1,60 @@
+// 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
diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc b/libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc
new file mode 100644 (file)
index 0000000..d351942
--- /dev/null
@@ -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 __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
diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h b/libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h
new file mode 100644 (file)
index 0000000..d6b8df4
--- /dev/null
@@ -0,0 +1,76 @@
+// 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
diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h
new file mode 100644 (file)
index 0000000..bf84f61
--- /dev/null
@@ -0,0 +1,40 @@
+// 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
+
index a957540..6aa1648 100644 (file)
@@ -284,8 +284,11 @@ case "${host_os}" in
     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"
index 6711d90..016bdba 100644 (file)
@@ -78,10 +78,14 @@ namespace std _GLIBCXX_VISIBILITY(default)
 {
 _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); }
@@ -89,6 +93,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   abs(long double __x)
   { return __builtin_fabsl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -99,6 +104,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::acos;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   acos(float __x)
   { return __builtin_acosf(__x); }
@@ -106,6 +112,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   acos(long double __x)
   { return __builtin_acosl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -116,6 +123,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::asin;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   asin(float __x)
   { return __builtin_asinf(__x); }
@@ -123,6 +131,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   asin(long double __x)
   { return __builtin_asinl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -133,6 +142,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::atan;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   atan(float __x)
   { return __builtin_atanf(__x); }
@@ -140,6 +150,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   atan(long double __x)
   { return __builtin_atanl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -150,6 +161,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::atan2;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   atan2(float __y, float __x)
   { return __builtin_atan2f(__y, __x); }
@@ -157,6 +169,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   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
@@ -172,6 +185,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::ceil;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   ceil(float __x)
   { return __builtin_ceilf(__x); }
@@ -179,6 +193,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   ceil(long double __x)
   { return __builtin_ceill(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -189,6 +204,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::cos;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   cos(float __x)
   { return __builtin_cosf(__x); }
@@ -196,6 +212,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   cos(long double __x)
   { return __builtin_cosl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -206,6 +223,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::cosh;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   cosh(float __x)
   { return __builtin_coshf(__x); }
@@ -213,6 +231,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   cosh(long double __x)
   { return __builtin_coshl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -223,6 +242,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::exp;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   exp(float __x)
   { return __builtin_expf(__x); }
@@ -230,6 +250,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   exp(long double __x)
   { return __builtin_expl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -240,6 +261,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::fabs;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   fabs(float __x)
   { return __builtin_fabsf(__x); }
@@ -247,6 +269,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   fabs(long double __x)
   { return __builtin_fabsl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -257,6 +280,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::floor;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   floor(float __x)
   { return __builtin_floorf(__x); }
@@ -264,6 +288,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   floor(long double __x)
   { return __builtin_floorl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -274,6 +299,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::fmod;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   fmod(float __x, float __y)
   { return __builtin_fmodf(__x, __y); }
@@ -281,6 +307,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   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
@@ -296,6 +323,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::frexp;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   frexp(float __x, int* __exp)
   { return __builtin_frexpf(__x, __exp); }
@@ -303,6 +331,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   frexp(long double __x, int* __exp)
   { return __builtin_frexpl(__x, __exp); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -313,6 +342,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::ldexp;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   ldexp(float __x, int __exp)
   { return __builtin_ldexpf(__x, __exp); }
@@ -320,6 +350,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   ldexp(long double __x, int __exp)
   { return __builtin_ldexpl(__x, __exp); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -330,6 +361,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::log;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   log(float __x)
   { return __builtin_logf(__x); }
@@ -337,6 +369,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   log(long double __x)
   { return __builtin_logl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -347,6 +380,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::log10;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   log10(float __x)
   { return __builtin_log10f(__x); }
@@ -354,6 +388,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   log10(long double __x)
   { return __builtin_log10l(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -364,6 +399,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::modf;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   modf(float __x, float* __iptr)
   { return __builtin_modff(__x, __iptr); }
@@ -371,9 +407,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   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); }
@@ -397,6 +435,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   pow(long double __x, int __n)
   { return __builtin_powil(__x, __n); }
 #endif
+#endif
 
   template<typename _Tp, typename _Up>
     inline _GLIBCXX_CONSTEXPR
@@ -412,6 +451,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::sin;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   sin(float __x)
   { return __builtin_sinf(__x); }
@@ -419,6 +459,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   sin(long double __x)
   { return __builtin_sinl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -429,6 +470,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::sinh;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   sinh(float __x)
   { return __builtin_sinhf(__x); }
@@ -436,6 +478,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   sinh(long double __x)
   { return __builtin_sinhl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -446,6 +489,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::sqrt;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   sqrt(float __x)
   { return __builtin_sqrtf(__x); }
@@ -453,6 +497,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   sqrt(long double __x)
   { return __builtin_sqrtl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -463,6 +508,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::tan;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   tan(float __x)
   { return __builtin_tanf(__x); }
@@ -470,6 +516,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   tan(long double __x)
   { return __builtin_tanl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
@@ -480,6 +527,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   using ::tanh;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline _GLIBCXX_CONSTEXPR float
   tanh(float __x)
   { return __builtin_tanhf(__x); }
@@ -487,6 +535,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline _GLIBCXX_CONSTEXPR long double
   tanh(long double __x)
   { return __builtin_tanhl(__x); }
+#endif
 
   template<typename _Tp>
     inline _GLIBCXX_CONSTEXPR
index aa7530d..f4785b4 100644 (file)
@@ -1,7 +1,7 @@
 // -*- 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
@@ -135,11 +135,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   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
index 9ada637..d104572 100644 (file)
@@ -569,6 +569,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   // mode have a different return type.
   using ::fabs;
 
+#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO1
   inline float
   fabs(float __x)
   { return __builtin_fabsf(__x); }
@@ -582,6 +583,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                                           double>::__type
     fabs(_Tp __x)
     { return __builtin_fabs(__x); }
+#endif
 
   inline float
   fdim(float __x, float __y)