aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog15
-rw-r--r--libstdc++-v3/acinclude.m494
-rw-r--r--libstdc++-v3/config.h.in15
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.8/os_defines.h9
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h60
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc99
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h76
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h40
-rwxr-xr-xlibstdc++-v3/configure121
-rw-r--r--libstdc++-v3/configure.ac2
-rw-r--r--libstdc++-v3/configure.host5
11 files changed, 254 insertions, 282 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 69e297de943..bc745b6924e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,18 @@
+2011-08-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * acinclude.m4 (GLIBCXX_CHECK_MATH_PROTO)
+ (GLIBCXX_CHECK_STDLIB_PROTO): New tests.
+ * configure.ac (GLIBCXX_CHECK_MATH_PROTO)
+ (GLIBCXX_CHECK_STDLIB_PROTO): Call them.
+ * configure: Regenerate.
+ * config.h.in: Regenerate.
+ * config/os/solaris/solaris2.8/os_defines.h
+ (__CORRECT_ISO_CPP_MATH_H_PROTO2): Don't define.
+ * config/os/solaris/solaris2.9: Remove.
+ * configure.host (solaris2.8): Merge with ...
+ (solaris2.9, solaris2.1[0-9]): ... this.
+ Always use os/solaris/solaris2.8.
+
2011-08-28 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/move.h (swap(_Tp(&)[_Nm], _Tp(&)[_Nm])): Remove
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 8bbc40e95f2..44ae98469a7 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1693,6 +1693,100 @@ AC_DEFUN([GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS], [
])
dnl
+dnl Check whether required C++ overloads are present in <math.h>.
+dnl
+
+AC_DEFUN([GLIBCXX_CHECK_MATH_PROTO], [
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ case "$host" in
+ *-*-solaris2.*)
+ # Solaris 8 FCS only had an overload for double std::abs(double) in
+ # <iso/math_iso.h>. Patches 111721-04 (SPARC) and 112757-01 (x86)
+ # introduced the full set also found from Solaris 9 onwards.
+ AC_MSG_CHECKING([for float std::abs(float) overload])
+ AC_CACHE_VAL(glibcxx_cv_abs_float, [
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+ [#include <math.h>
+ namespace std {
+ inline float abs(float __x)
+ { return __builtin_fabsf(__x); }
+ }
+ ])],
+ [glibcxx_cv_abs_float=no],
+ [glibcxx_cv_abs_float=yes]
+ )])
+
+ # autoheader cannot handle indented templates.
+ AH_VERBATIM([__CORRECT_ISO_CPP_MATH_H_PROTO1],
+ [/* Define if all C++ overloads are available in <math.h>. */
+#if __cplusplus >= 199711L
+#undef __CORRECT_ISO_CPP_MATH_H_PROTO1
+#endif])
+ AH_VERBATIM([__CORRECT_ISO_CPP_MATH_H_PROTO2],
+ [/* Define if only double std::abs(double) is available in <math.h>. */
+#if __cplusplus >= 199711L
+#undef __CORRECT_ISO_CPP_MATH_H_PROTO2
+#endif])
+
+ if test $glibcxx_cv_abs_float = yes; then
+ AC_DEFINE(__CORRECT_ISO_CPP_MATH_H_PROTO1)
+ else
+ AC_DEFINE(__CORRECT_ISO_CPP_MATH_H_PROTO2)
+ fi
+ AC_MSG_RESULT($glibcxx_cv_abs_float)
+ ;;
+ esac
+
+ AC_LANG_RESTORE
+])
+
+dnl
+dnl Check whether required C++ overloads are present in <stdlib.h>.
+dnl
+
+AC_DEFUN([GLIBCXX_CHECK_STDLIB_PROTO], [
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ case "$host" in
+ *-*-solaris2.*)
+ # Solaris 8 FCS lacked the overloads for long std::abs(long) and
+ # ldiv_t std::div(long, long) in <iso/stdlib_iso.h>. Patches 109607-02
+ # (SPARC) and 109608-02 (x86) introduced them.
+ AC_MSG_CHECKING([for long std::abs(long) overload])
+ AC_CACHE_VAL(glibcxx_cv_abs_long, [
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+ [#include <stdlib.h>
+ namespace std {
+ inline long
+ abs(long __i) { return labs(__i); }
+ }
+ ])],
+ [glibcxx_cv_abs_long=no],
+ [glibcxx_cv_abs_long=yes]
+ )])
+
+ # autoheader cannot handle indented templates.
+ AH_VERBATIM([__CORRECT_ISO_CPP_STDLIB_H_PROTO],
+ [/* Define if all C++ overloads are available in <stdlib.h>. */
+#if __cplusplus >= 199711L
+#undef __CORRECT_ISO_CPP_STDLIB_H_PROTO
+#endif])
+ if test $glibcxx_cv_abs_long = yes; then
+ AC_DEFINE(__CORRECT_ISO_CPP_STDLIB_H_PROTO, 1)
+ fi
+ AC_MSG_RESULT($glibcxx_cv_abs_long)
+ ;;
+ esac
+
+ AC_LANG_RESTORE
+])
+
+dnl
dnl Check whether macros, etc are present for <system_error>
dnl
AC_DEFUN([GLIBCXX_CHECK_SYSTEM_ERROR], [
diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in
index bf0ee3406da..837e2c7d082 100644
--- a/libstdc++-v3/config.h.in
+++ b/libstdc++-v3/config.h.in
@@ -826,6 +826,21 @@
/* Define to 1 if mutex_timedlock is available. */
#undef _GTHREAD_USE_MUTEX_TIMEDLOCK
+/* Define if all C++ overloads are available in <math.h>. */
+#if __cplusplus >= 199711L
+#undef __CORRECT_ISO_CPP_MATH_H_PROTO1
+#endif
+
+/* Define if only double std::abs(double) is available in <math.h>. */
+#if __cplusplus >= 199711L
+#undef __CORRECT_ISO_CPP_MATH_H_PROTO2
+#endif
+
+/* Define if all C++ overloads are available in <stdlib.h>. */
+#if __cplusplus >= 199711L
+#undef __CORRECT_ISO_CPP_STDLIB_H_PROTO
+#endif
+
#if defined (HAVE__ACOSF) && ! defined (HAVE_ACOSF)
# define HAVE_ACOSF 1
# define acosf _acosf
diff --git a/libstdc++-v3/config/os/solaris/solaris2.8/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.8/os_defines.h
index c58126bb7cb..82c1ec18efd 100644
--- a/libstdc++-v3/config/os/solaris/solaris2.8/os_defines.h
+++ b/libstdc++-v3/config/os/solaris/solaris2.8/os_defines.h
@@ -1,4 +1,4 @@
-// Specific definitions for Solaris 8 -*- C++ -*-
+// Specific definitions for Solaris 8+ -*- C++ -*-
// Copyright (C) 2000, 2002, 2005, 2009, 2011 Free Software Foundation, Inc.
//
@@ -28,9 +28,12 @@
// 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
+// Overloads in <iso/math_iso.h> and <iso/stdlib_iso.h> changed with
+// Solaris 8 patches. Since <bits/c++config.h> includes
+// <bits/os_defines.h> before configure results,
+// __CORRECT_ISO_CPP_MATH_H_PROTO[12] and __CORRECT_ISO_CPP_STDLIB_H_PROTO
+// must be defined via acinclude.m4.
#define __CORRECT_ISO_CPP_STRING_H_PROTO
#define __CORRECT_ISO_CPP_WCHAR_H_PROTO
#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
deleted file mode 100644
index 1ae3874a6db..00000000000
--- a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// 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
deleted file mode 100644
index d3519429a01..00000000000
--- a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-// 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
deleted file mode 100644
index d6b8df48461..00000000000
--- a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// 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
deleted file mode 100644
index bf84f615245..00000000000
--- a/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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
-
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index c7be667dc80..dab2637f24f 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -17188,6 +17188,127 @@ $as_echo "$enable_extern_template" >&6; }
# Checks for operating systems support that doesn't require linking.
+
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ case "$host" in
+ *-*-solaris2.*)
+ # Solaris 8 FCS only had an overload for double std::abs(double) in
+ # <iso/math_iso.h>. Patches 111721-04 (SPARC) and 112757-01 (x86)
+ # introduced the full set also found from Solaris 9 onwards.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for float std::abs(float) overload" >&5
+$as_echo_n "checking for float std::abs(float) overload... " >&6; }
+ if test "${glibcxx_cv_abs_float+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <math.h>
+ namespace std {
+ inline float abs(float __x)
+ { return __builtin_fabsf(__x); }
+ }
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ glibcxx_cv_abs_float=no
+else
+ glibcxx_cv_abs_float=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ # autoheader cannot handle indented templates.
+
+
+
+ if test $glibcxx_cv_abs_float = yes; then
+ $as_echo "#define __CORRECT_ISO_CPP_MATH_H_PROTO1 1" >>confdefs.h
+
+ else
+ $as_echo "#define __CORRECT_ISO_CPP_MATH_H_PROTO2 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_abs_float" >&5
+$as_echo "$glibcxx_cv_abs_float" >&6; }
+ ;;
+ esac
+
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ case "$host" in
+ *-*-solaris2.*)
+ # Solaris 8 FCS lacked the overloads for long std::abs(long) and
+ # ldiv_t std::div(long, long) in <iso/stdlib_iso.h>. Patches 109607-02
+ # (SPARC) and 109608-02 (x86) introduced them.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long std::abs(long) overload" >&5
+$as_echo_n "checking for long std::abs(long) overload... " >&6; }
+ if test "${glibcxx_cv_abs_long+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+ namespace std {
+ inline long
+ abs(long __i) { return labs(__i); }
+ }
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ glibcxx_cv_abs_long=no
+else
+ glibcxx_cv_abs_long=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ # autoheader cannot handle indented templates.
+
+ if test $glibcxx_cv_abs_long = yes; then
+ $as_echo "#define __CORRECT_ISO_CPP_STDLIB_H_PROTO 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_abs_long" >&5
+$as_echo "$glibcxx_cv_abs_long" >&6; }
+ ;;
+ esac
+
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOWNERDEAD" >&5
$as_echo_n "checking for EOWNERDEAD... " >&6; }
if test "${glibcxx_cv_system_error1+set}" = set; then :
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index 416c0d72d68..6e7fea656bc 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -135,6 +135,8 @@ GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING([no])
GLIBCXX_ENABLE_EXTERN_TEMPLATE([yes])
# Checks for operating systems support that doesn't require linking.
+GLIBCXX_CHECK_MATH_PROTO
+GLIBCXX_CHECK_STDLIB_PROTO
GLIBCXX_CHECK_SYSTEM_ERROR
# For the streamoff typedef.
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index 6aa16482130..799cec2f412 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -284,12 +284,9 @@ case "${host_os}" in
echo "Please specify the full version of Solaris, ie. solaris2.9 " 1>&2
exit 1
;;
- solaris2.8)
+ solaris2.[89] | solaris2.1[0-9])
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"
;;