summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-23 21:40:31 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-23 21:40:31 +0000
commit0f91ab4c2cc874fd53f593efc3128a4fede4388a (patch)
treeafac22e637382a6bcf168b75648bf8e6cbc415a5 /libstdc++-v3
parent8fb7623e98362ab0b492d9cf4efabb77c15b6d88 (diff)
downloadppe42-gcc-0f91ab4c2cc874fd53f593efc3128a4fede4388a.tar.gz
ppe42-gcc-0f91ab4c2cc874fd53f593efc3128a4fede4388a.zip
2001-10-22 Benjamin Kosnik <bkoz@redhat.com>
* config/cpu/i386/bits/limits.h: Move to... * config/cpu/i386/bits/cpu_limits.h: ...here. * config/cpu/cris/bits/cpu_limits.h: Same. * config/cpu/powerpc/bits/cpu_limits.h: Same. * config/cpu/x86-64/bits/cpu_limits.h: Same. * config/cpu/alpha/bits/cpu_limits.h: New. * config/cpu/m68k/bits/cpu_limits.h: New. * config/cpu/s390/bits/cpu_limits.h: New. * config/os/aix/bits/os_defines.h: Tweaks. * config/os/bsd/freebsd/bits/os_defines.h: Same. * config/os/bsd/netbsd/bits/os_defines.h: Same. * config/os/djgpp/bits/os_defines.h: Same. * config/os/generic/bits/os_defines.h: Same. * config/os/gnu-linux/bits/os_defines.h: Same. * config/os/hpux/bits/os_defines.h: Same. * config/os/irix/irix5.2/bits/os_defines.h: Same. * config/os/irix/irix6.5/bits/os_defines.h: Same. * config/os/newlib/bits/os_defines.h: Same. * config/os/solaris/solaris2.5/bits/os_defines.h: Same. * config/os/solaris/solaris2.6/bits/os_defines.h: Same. * config/os/solaris/solaris2.7/bits/os_defines.h: Same. * include/bits/c++config: Remove include. * include/bits/limits_generic.h: Remove. * include/bits/std_limits.h: Include cpu_limits.h. * include/Makefile.am: Fixup. * src/limits.cc: Tweak. * src/limits_generic.cc: Remove. * src/gen-num-limits.cc: Remove. * mknumeric_limits: Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46445 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog33
-rw-r--r--libstdc++-v3/Makefile.in2
-rw-r--r--libstdc++-v3/config/cpu/alpha/bits/cpu_limits.h (renamed from libstdc++-v3/config/cpu/powerpc/bits/limits.h)5
-rw-r--r--libstdc++-v3/config/cpu/cris/bits/cpu_limits.h (renamed from libstdc++-v3/config/cpu/cris/bits/limits.h)0
-rw-r--r--libstdc++-v3/config/cpu/generic/bits/cpu_limits.h41
-rw-r--r--libstdc++-v3/config/cpu/i386/bits/cpu_limits.h (renamed from libstdc++-v3/config/cpu/i386/bits/limits.h)3
-rw-r--r--libstdc++-v3/config/cpu/m68k/bits/cpu_limits.h35
-rw-r--r--libstdc++-v3/config/cpu/powerpc/bits/cpu_limits.h38
-rw-r--r--libstdc++-v3/config/cpu/s390/bits/cpu_limits.h38
-rw-r--r--libstdc++-v3/config/cpu/x86-64/bits/cpu_limits.h (renamed from libstdc++-v3/config/cpu/x86-64/bits/limits.h)3
-rw-r--r--libstdc++-v3/config/os/aix/bits/os_defines.h11
-rw-r--r--libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h9
-rw-r--r--libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h15
-rw-r--r--libstdc++-v3/config/os/djgpp/bits/os_defines.h9
-rw-r--r--libstdc++-v3/config/os/generic/bits/os_defines.h6
-rw-r--r--libstdc++-v3/config/os/gnu-linux/bits/os_defines.h19
-rw-r--r--libstdc++-v3/config/os/hpux/bits/os_defines.h9
-rw-r--r--libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h34
-rw-r--r--libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h31
-rw-r--r--libstdc++-v3/config/os/newlib/bits/os_defines.h11
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h7
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h7
-rw-r--r--libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h7
-rwxr-xr-xlibstdc++-v3/configure63
-rw-r--r--libstdc++-v3/configure.in11
-rw-r--r--libstdc++-v3/configure.target28
-rw-r--r--libstdc++-v3/include/Makefile.am2
-rw-r--r--libstdc++-v3/include/Makefile.in4
-rw-r--r--libstdc++-v3/include/bits/c++config10
-rw-r--r--libstdc++-v3/include/bits/limits_generic.h828
-rw-r--r--libstdc++-v3/include/bits/std_limits.h9
-rw-r--r--libstdc++-v3/libio/Makefile.in2
-rw-r--r--libstdc++-v3/libmath/Makefile.in2
-rw-r--r--libstdc++-v3/libsupc++/Makefile.in2
-rwxr-xr-xlibstdc++-v3/mknumeric_limits367
-rw-r--r--libstdc++-v3/po/Makefile.in2
-rw-r--r--libstdc++-v3/src/Makefile.in2
-rw-r--r--libstdc++-v3/src/gen-num-limits.cc844
-rw-r--r--libstdc++-v3/src/limits.cc3
-rw-r--r--libstdc++-v3/src/limits_generic.cc340
-rw-r--r--libstdc++-v3/testsuite/Makefile.in2
41 files changed, 332 insertions, 2562 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 2e6231a7ee6..eb56ce37dc5 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,36 @@
+2001-10-22 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/cpu/i386/bits/limits.h: Move to...
+ * config/cpu/i386/bits/cpu_limits.h: ...here.
+ * config/cpu/cris/bits/cpu_limits.h: Same.
+ * config/cpu/powerpc/bits/cpu_limits.h: Same.
+ * config/cpu/x86-64/bits/cpu_limits.h: Same.
+ * config/cpu/alpha/bits/cpu_limits.h: New.
+ * config/cpu/m68k/bits/cpu_limits.h: New.
+ * config/cpu/s390/bits/cpu_limits.h: New.
+ * config/os/aix/bits/os_defines.h: Tweaks.
+ * config/os/bsd/freebsd/bits/os_defines.h: Same.
+ * config/os/bsd/netbsd/bits/os_defines.h: Same.
+ * config/os/djgpp/bits/os_defines.h: Same.
+ * config/os/generic/bits/os_defines.h: Same.
+ * config/os/gnu-linux/bits/os_defines.h: Same.
+ * config/os/hpux/bits/os_defines.h: Same.
+ * config/os/irix/irix5.2/bits/os_defines.h: Same.
+ * config/os/irix/irix6.5/bits/os_defines.h: Same.
+ * config/os/newlib/bits/os_defines.h: Same.
+ * config/os/solaris/solaris2.5/bits/os_defines.h: Same.
+ * config/os/solaris/solaris2.6/bits/os_defines.h: Same.
+ * config/os/solaris/solaris2.7/bits/os_defines.h: Same.
+
+ * include/bits/c++config: Remove include.
+ * include/bits/limits_generic.h: Remove.
+ * include/bits/std_limits.h: Include cpu_limits.h.
+ * include/Makefile.am: Fixup.
+ * src/limits.cc: Tweak.
+ * src/limits_generic.cc: Remove.
+ * src/gen-num-limits.cc: Remove.
+ * mknumeric_limits: Remove.
+
2001-10-20 Brendan Kehoe <brendan@zen.org>
* bits/type_traits.h (_Bool): Removed this type.
diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
index 34bae7d9c7e..b67209b8e06 100644
--- a/libstdc++-v3/Makefile.in
+++ b/libstdc++-v3/Makefile.in
@@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@
CLOCALE_H = @CLOCALE_H@
CMESSAGES_H = @CMESSAGES_H@
CPP = @CPP@
+CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
CSHADOW_FLAGS = @CSHADOW_FLAGS@
CSTDIO_H = @CSTDIO_H@
CXX = @CXX@
@@ -106,7 +107,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
LIBTOOL = @LIBTOOL@
-LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
diff --git a/libstdc++-v3/config/cpu/powerpc/bits/limits.h b/libstdc++-v3/config/cpu/alpha/bits/cpu_limits.h
index f0ff04dedaa..21d31e3631a 100644
--- a/libstdc++-v3/config/cpu/powerpc/bits/limits.h
+++ b/libstdc++-v3/config/cpu/alpha/bits/cpu_limits.h
@@ -28,6 +28,11 @@
#ifndef _GLIBCPP_CPU_LIMITS
#define _GLIBCPP_CPU_LIMITS 1
+#define __glibcpp_long_bits 64
+
#define __glibcpp_long_double_bits 64
#endif
+
+
+
diff --git a/libstdc++-v3/config/cpu/cris/bits/limits.h b/libstdc++-v3/config/cpu/cris/bits/cpu_limits.h
index f0ff04dedaa..f0ff04dedaa 100644
--- a/libstdc++-v3/config/cpu/cris/bits/limits.h
+++ b/libstdc++-v3/config/cpu/cris/bits/cpu_limits.h
diff --git a/libstdc++-v3/config/cpu/generic/bits/cpu_limits.h b/libstdc++-v3/config/cpu/generic/bits/cpu_limits.h
new file mode 100644
index 00000000000..0438f7c6e9f
--- /dev/null
+++ b/libstdc++-v3/config/cpu/generic/bits/cpu_limits.h
@@ -0,0 +1,41 @@
+// Copyright (C) 2001 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 2, 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.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#ifndef _GLIBCPP_CPU_LIMITS
+#define _GLIBCPP_CPU_LIMITS 1
+
+// Nothing is defined in the generic file. In that way, we fall back
+// on the defaults in std_limits.h.
+
+// If you need to override these defaults, you can either use a
+// CPU-specific version (in which case you must modify
+// configure.target) or you must add the overrides to your
+// os_defines.h. In general, if all systems for your CPU use the
+// same values, it is best to use a cpu-specific configuration file.
+
+#endif
+
diff --git a/libstdc++-v3/config/cpu/i386/bits/limits.h b/libstdc++-v3/config/cpu/i386/bits/cpu_limits.h
index 31b6eab5d22..be304e2d805 100644
--- a/libstdc++-v3/config/cpu/i386/bits/limits.h
+++ b/libstdc++-v3/config/cpu/i386/bits/cpu_limits.h
@@ -28,9 +28,6 @@
#ifndef _GLIBCPP_CPU_LIMITS
#define _GLIBCPP_CPU_LIMITS 1
-// Some operating systems set this
-#ifndef __glibcpp_long_double_bits
#define __glibcpp_long_double_bits 80
-#endif
#endif
diff --git a/libstdc++-v3/config/cpu/m68k/bits/cpu_limits.h b/libstdc++-v3/config/cpu/m68k/bits/cpu_limits.h
new file mode 100644
index 00000000000..07e4e03a12b
--- /dev/null
+++ b/libstdc++-v3/config/cpu/m68k/bits/cpu_limits.h
@@ -0,0 +1,35 @@
+// Copyright (C) 2001 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 2, 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.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#ifndef _GLIBCPP_CPU_LIMITS
+#define _GLIBCPP_CPU_LIMITS 1
+
+#define __glibcpp_long_double_bits 96
+
+#endif
+
+
diff --git a/libstdc++-v3/config/cpu/powerpc/bits/cpu_limits.h b/libstdc++-v3/config/cpu/powerpc/bits/cpu_limits.h
new file mode 100644
index 00000000000..87d7883bb02
--- /dev/null
+++ b/libstdc++-v3/config/cpu/powerpc/bits/cpu_limits.h
@@ -0,0 +1,38 @@
+// Copyright (C) 2001 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 2, 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.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#ifndef _GLIBCPP_CPU_LIMITS
+#define _GLIBCPP_CPU_LIMITS 1
+
+#ifndef __LONG_DOUBLE_128__
+#define __glibcpp_long_double_bits 64
+#endif
+
+#endif
+
+
+
diff --git a/libstdc++-v3/config/cpu/s390/bits/cpu_limits.h b/libstdc++-v3/config/cpu/s390/bits/cpu_limits.h
new file mode 100644
index 00000000000..21d31e3631a
--- /dev/null
+++ b/libstdc++-v3/config/cpu/s390/bits/cpu_limits.h
@@ -0,0 +1,38 @@
+// Copyright (C) 2001 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 2, 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.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#ifndef _GLIBCPP_CPU_LIMITS
+#define _GLIBCPP_CPU_LIMITS 1
+
+#define __glibcpp_long_bits 64
+
+#define __glibcpp_long_double_bits 64
+
+#endif
+
+
+
diff --git a/libstdc++-v3/config/cpu/x86-64/bits/limits.h b/libstdc++-v3/config/cpu/x86-64/bits/cpu_limits.h
index 31b6eab5d22..be304e2d805 100644
--- a/libstdc++-v3/config/cpu/x86-64/bits/limits.h
+++ b/libstdc++-v3/config/cpu/x86-64/bits/cpu_limits.h
@@ -28,9 +28,6 @@
#ifndef _GLIBCPP_CPU_LIMITS
#define _GLIBCPP_CPU_LIMITS 1
-// Some operating systems set this
-#ifndef __glibcpp_long_double_bits
#define __glibcpp_long_double_bits 80
-#endif
#endif
diff --git a/libstdc++-v3/config/os/aix/bits/os_defines.h b/libstdc++-v3/config/os/aix/bits/os_defines.h
index 101a0b26f86..188ced19af3 100644
--- a/libstdc++-v3/config/os/aix/bits/os_defines.h
+++ b/libstdc++-v3/config/os/aix/bits/os_defines.h
@@ -30,20 +30,20 @@
#ifndef _GLIBCPP_OS_DEFINES
#define _GLIBCPP_OS_DEFINES
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#undef _XOPEN_SOURCE
#define _XOPEN_SOURCE 500
#undef _XOPEN_SOURCE_EXTENDED
#define _XOPEN_SOURCE_EXTENDED 1
-/* off64_t */
+// off64_t
#ifndef _LARGE_FILE_API
#define _LARGE_FILE_API
#endif
-/* atomic types */
+// atomic types
#ifndef _ALL_SOURCE
#define _ALL_SOURCE
#endif
@@ -55,10 +55,9 @@
#undef _G_USING_THUNKS
#define _G_USING_THUNKS 0
-#define __glibcpp_long_double_bits 64
-
#if !defined(_AIX51) || !defined(__64BIT__)
#define __glibcpp_wchar_t_bits 16
+#define __glibcpp_wchar_t_is_signed false
#endif
#ifdef __64BIT__
diff --git a/libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h b/libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h
index 3c31f3a1051..9e6bbaf453d 100644
--- a/libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h
+++ b/libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h
@@ -29,16 +29,13 @@
#ifndef _GLIBCPP_OS_DEFINES
-# define _GLIBCPP_OS_DEFINES
+#define _GLIBCPP_OS_DEFINES 1
-
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#define __glibcpp_long_double_bits __glibcpp_double_bits
#define _GLIBCPP_AVOID_FSEEK 1
#endif
-
-
diff --git a/libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h b/libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h
index 6115e97714b..03f760fdcad 100644
--- a/libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h
+++ b/libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h
@@ -27,21 +27,12 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
-
#ifndef _GLIBCPP_OS_DEFINES
-# define _GLIBCPP_OS_DEFINES
-
-
-/* Settings for NetBSD. */
+#define _GLIBCPP_OS_DEFINES 1
-/* __off_t is a typedef declared in stdio.h. */
-/* #define __off_t off_t */
-
-/* We don't have off64_t */
-/* #define __off64_t off64_t */
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#define __ssize_t ssize_t
#endif
-
-
diff --git a/libstdc++-v3/config/os/djgpp/bits/os_defines.h b/libstdc++-v3/config/os/djgpp/bits/os_defines.h
index f979b1eb60d..ce0bf243b0e 100644
--- a/libstdc++-v3/config/os/djgpp/bits/os_defines.h
+++ b/libstdc++-v3/config/os/djgpp/bits/os_defines.h
@@ -29,11 +29,10 @@
#ifndef _GLIBCPP_OS_DEFINES
-#define _GLIBCPP_OS_DEFINES
+#define _GLIBCPP_OS_DEFINES 1
-
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#define __off_t off_t
#define __off64_t off64_t
@@ -42,3 +41,5 @@
// FIXME: should there be '#undef POSIX_SOURCE'?
#endif
+
+
diff --git a/libstdc++-v3/config/os/generic/bits/os_defines.h b/libstdc++-v3/config/os/generic/bits/os_defines.h
index b3984f39a1c..143c07e6803 100644
--- a/libstdc++-v3/config/os/generic/bits/os_defines.h
+++ b/libstdc++-v3/config/os/generic/bits/os_defines.h
@@ -29,13 +29,9 @@
#ifndef _GLIBCPP_OS_DEFINES
-# define _GLIBCPP_OS_DEFINES
+#define _GLIBCPP_OS_DEFINES 1
// System-specific #define, typedefs, corrections, etc, go here. This
// file will come before all others.
-#ifdef __alpha__
-#define __glibcpp_long_bits 64
-#endif
-
#endif
diff --git a/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h b/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h
index 2b4375e81eb..f5612ed060b 100644
--- a/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h
+++ b/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h
@@ -27,10 +27,12 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
-
#ifndef _GLIBCPP_OS_DEFINES
#define _GLIBCPP_OS_DEFINES 1
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
+
// This keeps isanum, et al from being propagated as macros.
#define __NO_CTYPE 1
@@ -63,21 +65,12 @@ typedef __loff_t __off64_t;
# define __NO_STRING_INLINES
# endif
-#if defined (__powerpc__) || defined (__s390__)
-#define __glibcpp_wchar_t_is_signed true
-#endif
-
-#if defined (__alpha__) || defined (__powerpc64__) || (defined (__sparc__) && defined(__arch64__)) || defined (__s390x__)
+#if defined(__sparc__) && defined(__arch64__)
#define __glibcpp_long_bits 64
#endif
-#if defined (__alpha__) || (defined (__powerpc__) && !defined (__LONG_DOUBLE_128__)) || defined (__s390__)
-#define __glibcpp_long_double_bits 64
-#endif
-
-#if defined (__mc68000__)
-#define __glibcpp_long_double_bits 96
+#ifdef __powerpc64__
+#define __glibcpp_long_bits 64
#endif
#endif
-
diff --git a/libstdc++-v3/config/os/hpux/bits/os_defines.h b/libstdc++-v3/config/os/hpux/bits/os_defines.h
index 45f000f96b5..d7045d0a16e 100644
--- a/libstdc++-v3/config/os/hpux/bits/os_defines.h
+++ b/libstdc++-v3/config/os/hpux/bits/os_defines.h
@@ -27,13 +27,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
-
#ifndef _GLIBCPP_OS_DEFINES
-# define _GLIBCPP_OS_DEFINES
-
+#define _GLIBCPP_OS_DEFINES
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#define __off_t off_t
#define __off64_t off64_t
@@ -46,4 +44,3 @@
#endif
#endif
-
diff --git a/libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h b/libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h
index b4e2a1f3637..50db680b08f 100644
--- a/libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h
+++ b/libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h
@@ -27,32 +27,28 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
-
#ifndef _GLIBCPP_OS_DEFINES
-#define _GLIBCPP_OS_DEFINES
-
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
-
-/* We need large file support. There are two ways to turn it on:
- by defining either _LARGEFILE64_SOURCE or _SGI_SOURCE. However,
- it does not actually work to define only the former, as then
- <sys/stat.h> is invalid: `st_blocks' is defined to be a macro,
- but then used as a field name. So, we have to turn on
- _SGI_SOURCE. That only works if _POSIX_SOURCE is turned off,
- so we have to explicitly turn it off. (Some of the libio C files
- explicitly try to turn it on.) _SGI_SOURCE is actually turned on
- implicitly via the command-line. */
+#define _GLIBCPP_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
+
+// We need large file support. There are two ways to turn it on: by
+// defining either _LARGEFILE64_SOURCE or _SGI_SOURCE. However, it
+// does not actually work to define only the former, as then
+// <sys/stat.h> is invalid: `st_blocks' is defined to be a macro, but
+// then used as a field name. So, we have to turn on _SGI_SOURCE.
+// That only works if _POSIX_SOURCE is turned off, so we have to
+// explicitly turn it off. (Some of the libio C files explicitly try
+// to turn it on.) _SGI_SOURCE is actually turned on implicitly via
+// the command-line.
#undef _POSIX_SOURCE
#define __off_t off_t
#define __off64_t off64_t
#define __ssize_t ssize_t
-/* GCC does not use thunks on IRIX. */
+// GCC does not use thunks on IRIX.
#define _G_USING_THUNKS 0
#endif
-
-
-
diff --git a/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h b/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h
index e5fa694a643..e8f1dcc82d2 100644
--- a/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h
+++ b/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h
@@ -27,29 +27,28 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
-
#ifndef _GLIBCPP_OS_DEFINES
-#define _GLIBCPP_OS_DEFINES
-
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
-
-/* We need large file support. There are two ways to turn it on:
- by defining either _LARGEFILE64_SOURCE or _SGI_SOURCE. However,
- it does not actually work to define only the former, as then
- <sys/stat.h> is invalid: `st_blocks' is defined to be a macro,
- but then used as a field name. So, we have to turn on
- _SGI_SOURCE. That only works if _POSIX_SOURCE is turned off,
- so we have to explicitly turn it off. (Some of the libio C files
- explicitly try to turn it on.) _SGI_SOURCE is actually turned on
- implicitly via the command-line. */
+#define _GLIBCPP_OS_DEFINES 1
+
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
+
+// We need large file support. There are two ways to turn it on: by
+// defining either _LARGEFILE64_SOURCE or _SGI_SOURCE. However, it
+// does not actually work to define only the former, as then
+// <sys/stat.h> is invalid: `st_blocks' is defined to be a macro, but
+// then used as a field name. So, we have to turn on _SGI_SOURCE.
+// That only works if _POSIX_SOURCE is turned off, so we have to
+// explicitly turn it off. (Some of the libio C files explicitly try
+// to turn it on.) _SGI_SOURCE is actually turned on implicitly via
+// the command-line.
#undef _POSIX_SOURCE
#define __off_t off_t
#define __off64_t off64_t
#define __ssize_t ssize_t
-/* GCC does not use thunks on IRIX. */
+// GCC does not use thunks on IRIX.
#define _G_USING_THUNKS 0
#define __glibcpp_long_double_bits 64
diff --git a/libstdc++-v3/config/os/newlib/bits/os_defines.h b/libstdc++-v3/config/os/newlib/bits/os_defines.h
index ba40cee3975..12776611b88 100644
--- a/libstdc++-v3/config/os/newlib/bits/os_defines.h
+++ b/libstdc++-v3/config/os/newlib/bits/os_defines.h
@@ -27,15 +27,10 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
-
#ifndef _GLIBCPP_OS_DEFINES
-# define _GLIBCPP_OS_DEFINES
-
-
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
+#define _GLIBCPP_OS_DEFINES 1
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#endif
-
-
diff --git a/libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h
index 5a756b4210d..0edc784c9e1 100644
--- a/libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h
+++ b/libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h
@@ -27,12 +27,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
-
#ifndef _GLIBCPP_OS_DEFINES
-# define _GLIBCPP_OS_DEFINES
+#define _GLIBCPP_OS_DEFINES 1
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#define _GLIBCPP_AVOID_FSEEK 1
diff --git a/libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h
index 961e29d55d0..3acdf5c002a 100644
--- a/libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h
+++ b/libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h
@@ -27,12 +27,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
-
#ifndef _GLIBCPP_OS_DEFINES
-# define _GLIBCPP_OS_DEFINES
+#define _GLIBCPP_OS_DEFINES 1
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#define _GLIBCPP_AVOID_FSEEK 1
diff --git a/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h
index 67dae7a7770..a0fd24309ff 100644
--- a/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h
+++ b/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h
@@ -27,12 +27,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
-
#ifndef _GLIBCPP_OS_DEFINES
-# define _GLIBCPP_OS_DEFINES
+#define _GLIBCPP_OS_DEFINES 1
-/* System-specific #define, typedefs, corrections, etc, go here. This
- file will come before all others. */
+// System-specific #define, typedefs, corrections, etc, go here. This
+// file will come before all others.
#define _GLIBCPP_AVOID_FSEEK 1
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index fcbd6f21c75..d156ac5b41c 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -16883,8 +16883,8 @@ fi
#line 16884 "configure"
#include "confdefs.h"
-#include <setjmp.h>
-
+ #include <setjmp.h>
+
int main() {
sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);
; return 0; }
@@ -16895,6 +16895,7 @@ if { (eval echo configure:16893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5;
#define HAVE_SIGSETJMP 1
EOF
+
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
@@ -16905,17 +16906,17 @@ rm -f conftest*
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16909: checking for $ac_hdr" >&5
+echo "configure:16910: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16914 "configure"
+#line 16915 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -16944,12 +16945,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16948: checking for $ac_func" >&5
+echo "configure:16949: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 16953 "configure"
+#line 16954 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -16972,7 +16973,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:16976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -16997,7 +16998,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:17001: checking for working mmap" >&5
+echo "configure:17002: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -17005,7 +17006,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 17009 "configure"
+#line 17010 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -17158,7 +17159,7 @@ main()
}
EOF
-if { (eval echo configure:17162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:17163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -17189,17 +17190,17 @@ fi
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:17193: checking for $ac_hdr" >&5
+echo "configure:17194: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 17198 "configure"
+#line 17199 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:17203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:17204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -17232,7 +17233,7 @@ done
# Can't do these in a loop, else the resulting syntax is wrong.
cat > conftest.$ac_ext <<EOF
-#line 17236 "configure"
+#line 17237 "configure"
#include "confdefs.h"
#include <sys/resource.h>
#include <unistd.h>
@@ -17241,7 +17242,7 @@ int main() {
int f = RLIMIT_DATA ;
; return 0; }
EOF
-if { (eval echo configure:17245: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_mresult=1
else
@@ -17258,7 +17259,7 @@ EOF
cat > conftest.$ac_ext <<EOF
-#line 17262 "configure"
+#line 17263 "configure"
#include "confdefs.h"
#include <sys/resource.h>
#include <unistd.h>
@@ -17267,7 +17268,7 @@ int main() {
int f = RLIMIT_RSS ;
; return 0; }
EOF
-if { (eval echo configure:17271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_mresult=1
else
@@ -17284,7 +17285,7 @@ EOF
cat > conftest.$ac_ext <<EOF
-#line 17288 "configure"
+#line 17289 "configure"
#include "confdefs.h"
#include <sys/resource.h>
#include <unistd.h>
@@ -17293,7 +17294,7 @@ int main() {
int f = RLIMIT_VMEM ;
; return 0; }
EOF
-if { (eval echo configure:17297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17298: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_mresult=1
else
@@ -17310,7 +17311,7 @@ EOF
cat > conftest.$ac_ext <<EOF
-#line 17314 "configure"
+#line 17315 "configure"
#include "confdefs.h"
#include <sys/resource.h>
#include <unistd.h>
@@ -17319,7 +17320,7 @@ int main() {
int f = RLIMIT_AS ;
; return 0; }
EOF
-if { (eval echo configure:17323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17324: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
glibcpp_mresult=1
else
@@ -17341,7 +17342,7 @@ EOF
else
cat > conftest.$ac_ext <<EOF
-#line 17345 "configure"
+#line 17346 "configure"
#include "confdefs.h"
#include <sys/resource.h>
#include <unistd.h>
@@ -17350,7 +17351,7 @@ int main() {
struct rlimit r; setrlimit(0, &r);
; return 0; }
EOF
-if { (eval echo configure:17354: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:17355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_setrlimit=yes
else
@@ -17366,7 +17367,7 @@ fi
fi
echo $ac_n "checking for testsuite memory limit support""... $ac_c" 1>&6
-echo "configure:17370: checking for testsuite memory limit support" >&5
+echo "configure:17371: checking for testsuite memory limit support" >&5
if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
ac_mem_limits=yes
cat >> confdefs.h <<\EOF
@@ -17385,7 +17386,7 @@ fi
# Propagate the target-specific source directories through the build chain.
OS_INC_SRCDIR=$os_include_dir/bits
ATOMICITY_INC_SRCDIR=$ATOMICITYH/bits
-LIMITS_INC_SRCDIR=$LIMITSH/bits
+CPU_LIMITS_INC_SRCDIR=$CPULIMITSH/bits
@@ -17468,13 +17469,13 @@ glibcpp_toolexeclibdir=no
glibcpp_prefixdir=${prefix}
echo $ac_n "checking for interface version number""... $ac_c" 1>&6
-echo "configure:17472: checking for interface version number" >&5
+echo "configure:17473: checking for interface version number" >&5
libstdcxx_interface=$INTERFACE
echo "$ac_t""$libstdcxx_interface" 1>&6
# Process the option --with-gxx-include-dir=<path to include-files directory>
echo $ac_n "checking for --with-gxx-include-dir""... $ac_c" 1>&6
-echo "configure:17478: checking for --with-gxx-include-dir" >&5
+echo "configure:17479: checking for --with-gxx-include-dir" >&5
# Check whether --with-gxx-include-dir or --without-gxx-include-dir was given.
if test "${with_gxx_include_dir+set}" = set; then
withval="$with_gxx_include_dir"
@@ -17498,7 +17499,7 @@ echo "$ac_t""$gxx_include_dir" 1>&6
# Process the option "--enable-version-specific-runtime-libs"
echo $ac_n "checking for --enable-version-specific-runtime-libs""... $ac_c" 1>&6
-echo "configure:17502: checking for --enable-version-specific-runtime-libs" >&5
+echo "configure:17503: checking for --enable-version-specific-runtime-libs" >&5
# Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given.
if test "${enable_version_specific_runtime_libs+set}" = set; then
enableval="$enable_version_specific_runtime_libs"
@@ -17545,7 +17546,7 @@ if test x"$glibcpp_toolexecdir" = x"no"; then
fi
echo $ac_n "checking for install location""... $ac_c" 1>&6
-echo "configure:17549: checking for install location" >&5
+echo "configure:17550: checking for install location" >&5
echo "$ac_t""$gxx_include_dir" 1>&6
@@ -17822,7 +17823,7 @@ s%@USE_COMPLEX_LONG_DOUBLE@%$USE_COMPLEX_LONG_DOUBLE%g
s%@WERROR@%$WERROR%g
s%@OS_INC_SRCDIR@%$OS_INC_SRCDIR%g
s%@ATOMICITY_INC_SRCDIR@%$ATOMICITY_INC_SRCDIR%g
-s%@LIMITS_INC_SRCDIR@%$LIMITS_INC_SRCDIR%g
+s%@CPU_LIMITS_INC_SRCDIR@%$CPU_LIMITS_INC_SRCDIR%g
s%@GLIBCPP_IS_CROSS_COMPILING@%$GLIBCPP_IS_CROSS_COMPILING%g
s%@CANADIAN_TRUE@%$CANADIAN_TRUE%g
s%@CANADIAN_FALSE@%$CANADIAN_FALSE%g
diff --git a/libstdc++-v3/configure.in b/libstdc++-v3/configure.in
index ebf969ff830..ea92942f1ad 100644
--- a/libstdc++-v3/configure.in
+++ b/libstdc++-v3/configure.in
@@ -225,9 +225,10 @@ else
AC_LC_MESSAGES
AC_TRY_COMPILE([
-#include <setjmp.h>
-], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
-[AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])])
+ #include <setjmp.h>
+ ], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
+ [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
+ ])
AC_FUNC_MMAP
@@ -239,10 +240,10 @@ fi
# Propagate the target-specific source directories through the build chain.
OS_INC_SRCDIR=$os_include_dir/bits
ATOMICITY_INC_SRCDIR=$ATOMICITYH/bits
-LIMITS_INC_SRCDIR=$LIMITSH/bits
+CPU_LIMITS_INC_SRCDIR=$CPULIMITSH/bits
AC_SUBST(OS_INC_SRCDIR)
AC_SUBST(ATOMICITY_INC_SRCDIR)
-AC_SUBST(LIMITS_INC_SRCDIR)
+AC_SUBST(CPU_LIMITS_INC_SRCDIR)
# Set up cross-compile flags
AC_SUBST(GLIBCPP_IS_CROSS_COMPILING)
diff --git a/libstdc++-v3/configure.target b/libstdc++-v3/configure.target
index 61f331e31ea..304457dfb17 100644
--- a/libstdc++-v3/configure.target
+++ b/libstdc++-v3/configure.target
@@ -13,7 +13,6 @@
# target The configuration target
# target_cpu The configuration target CPU
# target_os The configuration target OS
-# target_optspace --enable-target-optspace ("yes", "no", "")
# It possibly modifies the following shell variables:
# cpu_include_dir CPU-specific include directory, relative to srcdir
@@ -22,7 +21,6 @@
# Set any CPU dependent compiler flags.
# THIS TABLE IS SORTED. KEEP IT THAT WAY.
-
case "${target_cpu}" in
alpha*)
cpu_include_dir="config/cpu/alpha"
@@ -68,7 +66,6 @@ esac
# Set any OS dependent compiler flags.
# THIS TABLE IS SORTED. KEEP IT THAT WAY.
-
case "${target_os}" in
aix4.[3456789]* | aix[56789]*)
os_include_dir="config/os/aix"
@@ -115,7 +112,6 @@ esac
# Set any flags dependant on the full target triplet.
# THIS TABLE IS SORTED. KEEP IT THAT WAY.
-
case "${target}" in
*-*-aix[456789]*)
# We set os_include_dir to config/os/aix only on AIX 4.3 and
@@ -135,24 +131,32 @@ case "${target}" in
;;
esac
-# Set LIMITSH to the directory where the configuration-dependent
-# limits.h can be found.
+# Set CPULIMITSH to the directory where the configuration-dependent
+# cpu_limits.h can be found.
# THIS TABLE IS SORTED. KEEP IT THAT WAY.
-
case "${target}" in
+ alpha-*-*)
+ CPULIMITSH=config/cpu/alpha
+ ;;
cris-*-*)
- LIMITSH=config/cpu/cris
+ CPULIMITSH=config/cpu/cris
;;
i?86-*-*)
- LIMITSH=config/cpu/i386
+ CPULIMITSH=config/cpu/i386
+ ;;
+ m68k-*-* | m680[246]0-*-*)
+ CPULIMITSH=config/cpu/m68k
;;
powerpc-*-*)
- LIMITSH=config/cpu/powerpc
+ CPULIMITSH=config/cpu/powerpc
+ ;;
+ s390-*-* | s390x-*-*)
+ CPULIMITSH=config/cpu/s390
;;
x86_64-*-*)
- LIMITSH=config/cpu/x86-64
+ CPULIMITSH=config/cpu/x86-64
;;
*)
- LIMITSH=config/cpu/generic
+ CPULIMITSH=config/cpu/generic
;;
esac
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index da0bad83d7c..383e3917e02 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -263,7 +263,7 @@ target_headers = \
${target_srcdir}/ctype_noninline.h \
${target_srcdir}/os_defines.h \
${glibcpp_srcdir}/@ATOMICITY_INC_SRCDIR@/atomicity.h \
- ${glibcpp_srcdir}/@LIMITS_INC_SRCDIR@/limits.h
+ ${glibcpp_srcdir}/@CPU_LIMITS_INC_SRCDIR@/cpu_limits.h
thread_builddir = ./${target_alias}/bits
thread_headers = \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index a7cca4cd966..f16780f2472 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@
CLOCALE_H = @CLOCALE_H@
CMESSAGES_H = @CMESSAGES_H@
CPP = @CPP@
+CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
CSHADOW_FLAGS = @CSHADOW_FLAGS@
CSTDIO_H = @CSTDIO_H@
CXXCPP = @CXXCPP@
@@ -105,7 +106,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
LIBTOOL = @LIBTOOL@
-LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
@@ -393,7 +393,7 @@ target_headers = \
${target_srcdir}/ctype_noninline.h \
${target_srcdir}/os_defines.h \
${glibcpp_srcdir}/@ATOMICITY_INC_SRCDIR@/atomicity.h \
- ${glibcpp_srcdir}/@LIMITS_INC_SRCDIR@/limits.h
+ ${glibcpp_srcdir}/@CPU_LIMITS_INC_SRCDIR@/cpu_limits.h
thread_builddir = ./${target_alias}/bits
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index dacc31b4dec..c7ee1875a94 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -32,8 +32,6 @@
// Pick up any OS-specific definitions.
#include <bits/os_defines.h>
-// And any CPU-specific definitions.
-#include <bits/limits.h>
// The current version of the C++ library in compressed ISO date format.
#define __GLIBCPP__ 20011023
@@ -51,10 +49,6 @@
// by the compiler, but instead instantiated into the library binary.
#define _GLIBCPP_FULLY_COMPLIANT_HEADERS 1
-// Define this to permit user-level control of the expansion of string
-// buffers (via a fn pointer), see basic_string.* for more.
-//#define _GLIBCPP_ALLOC_CONTROL
-
// To enable older, ARM-style iostreams and other anachronisms use this.
//#define _GLIBCPP_DEPRECATED 1
@@ -64,6 +58,10 @@
// Enable concept checking code from the boost libraries.
//#define _GLIBCPP_CONCEPT_CHECKS 1
+// Define this to permit user-level control of the expansion of string
+// buffers (via a fn pointer), see basic_string.* for more.
+//#define _GLIBCPP_ALLOC_CONTROL
+
// Map gthr.h abstraction to that required for STL. Do not key off of
// __GTHREADS at this point since we haven't seen the correct symbol
// yet, instead setup so that include/bits/stl_threads.h will know to
diff --git a/libstdc++-v3/include/bits/limits_generic.h b/libstdc++-v3/include/bits/limits_generic.h
deleted file mode 100644
index a5dd2996310..00000000000
--- a/libstdc++-v3/include/bits/limits_generic.h
+++ /dev/null
@@ -1,828 +0,0 @@
-// The template and inlines for the -*- C++ -*- numeric_limits classes.
-
-// Copyright (C) 2000-2001 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 2, 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.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Note: this is not a conforming implementation.
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr>
-
-//
-// ISO 14882:1998
-// 18.2.1
-//
-
-/** @file limits_generic.h
- * ISO 14882:1998
- * 18.2.1
- */
-
-#ifndef _CPP_NUMERIC_LIMITS
-#define _CPP_NUMERIC_LIMITS 1
-
-#pragma GCC system_header
-
-#include <bits/c++config.h>
-#include <bits/std_cfloat.h>
-#include <bits/std_climits.h>
-#if defined( _GLIBCPP_USE_WCHAR_T)
-#include <bits/std_cwchar.h>
-#endif
-
-namespace std {
-
- /// Rounding style determines the behavior of floating-point calculations.
- enum float_round_style {
- round_indeterminate = -1,
- round_toward_zero = 0,
- round_to_nearest = 1,
- round_toward_infinity = 2,
- round_toward_neg_infinity = 3
- };
-
- /// This enum signals whether a type has denormalization.
- enum float_denorm_style {
- denorm_indeterminate = -1,
- denorm_absent = 0,
- denorm_present = 1
- };
-
- /**
- * [18.2.1]/1: "The numeric_limits component provides a C++ program
- * with information about various properties of the implementation's
- * representation of the fundamental types." All of the standard
- * fundamental types have specializations of this class template.
- * @brief Properties of fundamental types on a per-platform basis.
- */
- template<typename _T> struct numeric_limits {
- static const bool is_specialized = false;
-
- static _T min() throw() { return static_cast<_T>(0); }
- static _T max() throw() { return static_cast<_T>(0); }
-
- static const int digits = 0;
- static const int digits10 = 0;
- static const bool is_signed = false;
- static const bool is_integer = false;
- static const bool is_exact = false;
- static const int radix = 0;
-
- static _T epsilon() throw() { return static_cast<_T>(0); }
- static _T round_error() throw() { return static_cast<_T>(0); }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static _T infinity() throw() { return static_cast<_T>(0); }
- static _T quiet_NaN() throw() { return static_cast<_T>(0); }
- static _T signaling_NaN() throw() { return static_cast<_T>(0); }
- static _T denorm_min() throw() { return static_cast<_T>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = false;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<typename _T> _T __limits_infinity();
- template<typename _T> _T __limits_quiet_NaN();
- template<typename _T> _T __limits_signaling_NaN();
- template<typename _T> _T __limits_denorm_min();
-
- template<> struct numeric_limits<bool> {
- static const bool is_specialized = true;
-
- static bool min() throw()
- { return false; }
- static bool max() throw()
- { return true; }
-
- static const int digits = 1;
- static const int digits10 = 0;
- static const bool is_signed = false;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static bool epsilon() throw()
- { return 0; }
- static bool round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static bool infinity() throw()
- { return static_cast<bool>(0); }
- static bool quiet_NaN() throw()
- { return static_cast<bool>(0); }
- static bool signaling_NaN() throw()
- { return static_cast<bool>(0); }
- static bool denorm_min() throw()
- { return static_cast<bool>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<char> {
- static const bool is_specialized = true;
-
- static char min() throw()
- { return CHAR_MIN; }
- static char max() throw()
- { return CHAR_MAX; }
-
- static const int digits = 7;
- static const int digits10 = 2;
- static const bool is_signed = true;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static char epsilon() throw()
- { return 0; }
- static char round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static char infinity() throw()
- { return static_cast<char>(0); }
- static char quiet_NaN() throw()
- { return static_cast<char>(0); }
- static char signaling_NaN() throw()
- { return static_cast<char>(0); }
- static char denorm_min() throw()
- { return static_cast<char>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<signed char> {
- static const bool is_specialized = true;
-
- static signed char min() throw()
- { return SCHAR_MIN; }
- static signed char max() throw()
- { return SCHAR_MAX; }
-
- static const int digits = 7;
- static const int digits10 = 2;
- static const bool is_signed = true;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static signed char epsilon() throw()
- { return 0; }
- static signed char round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static signed char infinity() throw()
- { return static_cast<signed char>(0); }
- static signed char quiet_NaN() throw()
- { return static_cast<signed char>(0); }
- static signed char signaling_NaN() throw()
- { return static_cast<signed char>(0); }
- static signed char denorm_min() throw()
- { return static_cast<signed char>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<unsigned char> {
- static const bool is_specialized = true;
-
- static unsigned char min() throw()
- { return 0; }
- static unsigned char max() throw()
- { return UCHAR_MAX; }
-
- static const int digits = 8;
- static const int digits10 = 2;
- static const bool is_signed = false;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static unsigned char epsilon() throw()
- { return 0; }
- static unsigned char round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static unsigned char infinity() throw()
- { return static_cast<unsigned char>(0); }
- static unsigned char quiet_NaN() throw()
- { return static_cast<unsigned char>(0); }
- static unsigned char signaling_NaN() throw()
- { return static_cast<unsigned char>(0); }
- static unsigned char denorm_min() throw()
- { return static_cast<unsigned char>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = true;
-
- static const bool traps = true;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
-#if defined( _GLIBCPP_USE_WCHAR_T)
- template<> struct numeric_limits<wchar_t> {
- static const bool is_specialized = true;
-
- static wchar_t min() throw()
- { return WCHAR_MIN; }
- static wchar_t max() throw()
- { return WCHAR_MAX; }
-
- static const int digits = 31;
- static const int digits10 = 9;
- static const bool is_signed = true;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static wchar_t epsilon() throw()
- { return 0; }
- static wchar_t round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static wchar_t infinity() throw()
- { return static_cast<wchar_t>(0); }
- static wchar_t quiet_NaN() throw()
- { return static_cast<wchar_t>(0); }
- static wchar_t signaling_NaN() throw()
- { return static_cast<wchar_t>(0); }
- static wchar_t denorm_min() throw()
- { return static_cast<wchar_t>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-#endif
-
- template<> struct numeric_limits<short> {
- static const bool is_specialized = true;
-
- static short min() throw()
- { return SHRT_MIN; }
- static short max() throw()
- { return SHRT_MAX; }
-
- static const int digits = 15;
- static const int digits10 = 4;
- static const bool is_signed = true;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static short epsilon() throw()
- { return 0; }
- static short round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static short infinity() throw()
- { return static_cast<short>(0); }
- static short quiet_NaN() throw()
- { return static_cast<short>(0); }
- static short signaling_NaN() throw()
- { return static_cast<short>(0); }
- static short denorm_min() throw()
- { return static_cast<short>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<unsigned short> {
- static const bool is_specialized = true;
-
- static unsigned short min() throw()
- { return 0; }
- static unsigned short max() throw()
- { return USHRT_MAX; }
-
- static const int digits = 16;
- static const int digits10 = 4;
- static const bool is_signed = false;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static unsigned short epsilon() throw()
- { return 0; }
- static unsigned short round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static unsigned short infinity() throw()
- { return static_cast<unsigned short>(0); }
- static unsigned short quiet_NaN() throw()
- { return static_cast<unsigned short>(0); }
- static unsigned short signaling_NaN() throw()
- { return static_cast<unsigned short>(0); }
- static unsigned short denorm_min() throw()
- { return static_cast<unsigned short>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = true;
-
- static const bool traps = true;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<int> {
- static const bool is_specialized = true;
-
- static int min() throw()
- { return INT_MIN; }
- static int max() throw()
- { return INT_MAX; }
-
-#if INT_MAX > 32767
- static const int digits = 31;
- static const int digits10 = 9;
-#else
- static const int digits = 15;
- static const int digits10 = 4;
-#endif
- static const bool is_signed = true;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static int epsilon() throw()
- { return 0; }
- static int round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static int infinity() throw()
- { return static_cast<int>(0); }
- static int quiet_NaN() throw()
- { return static_cast<int>(0); }
- static int signaling_NaN() throw()
- { return static_cast<int>(0); }
- static int denorm_min() throw()
- { return static_cast<int>(0); }
-
- static const bool is_iec559 = true;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<unsigned int> {
- static const bool is_specialized = true;
-
- static unsigned int min() throw()
- { return 0; }
- static unsigned int max() throw()
- { return UINT_MAX; }
-
-#if INT_MAX > 32767
- static const int digits = 32;
- static const int digits10 = 9;
-#else
- static const int digits = 16;
- static const int digits10 = 4;
-#endif
- static const bool is_signed = false;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static unsigned int epsilon() throw()
- { return 0; }
- static unsigned int round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static unsigned int infinity() throw()
- { return static_cast<unsigned int>(0); }
- static unsigned int quiet_NaN() throw()
- { return static_cast<unsigned int>(0); }
- static unsigned int signaling_NaN() throw()
- { return static_cast<unsigned int>(0); }
- static unsigned int denorm_min() throw()
- { return static_cast<unsigned int>(0); }
-
- static const bool is_iec559 = true;
- static const bool is_bounded = true;
- static const bool is_modulo = true;
-
- static const bool traps = true;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<long> {
- static const bool is_specialized = true;
-
- static long min() throw()
- { return LONG_MIN; }
- static long max() throw()
- { return LONG_MAX; }
-
-#if LONG_MAX > 2147483647
- static const int digits = 63;
- static const int digits10 = 18;
-#elif LONG_MAX > 32767
- static const int digits = 31;
- static const int digits10 = 9;
-#else
- static const int digits = 15;
- static const int digits10 = 4;
-#endif
- static const bool is_signed = true;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static long epsilon() throw()
- { return 0; }
- static long round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static long infinity() throw()
- { return static_cast<long>(0); }
- static long quiet_NaN() throw()
- { return static_cast<long>(0); }
- static long signaling_NaN() throw()
- { return static_cast<long>(0); }
- static long denorm_min() throw()
- { return static_cast<long>(0); }
-
- static const bool is_iec559 = true;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<unsigned long> {
- static const bool is_specialized = true;
-
- static unsigned long min() throw()
- { return 0; }
- static unsigned long max() throw()
- { return ULONG_MAX; }
-
-#if LONG_MAX > 2147483647
- static const int digits = 64;
- static const int digits10 = 19;
-#elif LONG_MAX > 32767
- static const int digits = 32;
- static const int digits10 = 9;
-#else
- static const int digits = 16;
- static const int digits10 = 4;
-#endif
- static const bool is_signed = false;
- static const bool is_integer = true;
- static const bool is_exact = true;
- static const int radix = 2;
- static unsigned long epsilon() throw()
- { return 0; }
- static unsigned long round_error() throw()
- { return 0; }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static unsigned long infinity() throw()
- { return static_cast<unsigned long>(0); }
- static unsigned long quiet_NaN() throw()
- { return static_cast<unsigned long>(0); }
- static unsigned long signaling_NaN() throw()
- { return static_cast<unsigned long>(0); }
- static unsigned long denorm_min() throw()
- { return static_cast<unsigned long>(0); }
-
- static const bool is_iec559 = true;
- static const bool is_bounded = true;
- static const bool is_modulo = true;
-
- static const bool traps = true;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<float> {
- static const bool is_specialized = true;
-
- static float min() throw()
- { return FLT_MIN; }
- static float max() throw()
- { return FLT_MAX; }
-
- static const int digits = FLT_MANT_DIG;
- static const int digits10 = FLT_DIG;
- static const bool is_signed = true;
- static const bool is_integer = false;
- static const bool is_exact = false;
- static const int radix = FLT_RADIX;
- static float epsilon() throw()
- { return FLT_EPSILON; }
- static float round_error() throw()
- { return FLT_ROUNDS; }
-
- static const int min_exponent = FLT_MIN_EXP;
- static const int min_exponent10 = FLT_MIN_10_EXP;
- static const int max_exponent = FLT_MAX_EXP;
- static const int max_exponent10 = FLT_MAX_10_EXP;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static float infinity() throw()
- { return static_cast<float>(0); }
- static float quiet_NaN() throw()
- { return static_cast<float>(0); }
- static float signaling_NaN() throw()
- { return static_cast<float>(0); }
- static float denorm_min() throw()
- { return static_cast<float>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<double> {
- static const bool is_specialized = true;
-
- static double min() throw()
- { return DBL_MIN; }
- static double max() throw()
- { return DBL_MAX; }
-
- static const int digits = DBL_MANT_DIG;
- static const int digits10 = DBL_DIG;
- static const bool is_signed = true;
- static const bool is_integer = false;
- static const bool is_exact = false;
- static const int radix = 2;
- static double epsilon() throw()
- { return DBL_EPSILON; }
- static double round_error() throw()
- { return 1.0; }
-
- static const int min_exponent = DBL_MIN_EXP;
- static const int min_exponent10 = DBL_MIN_10_EXP;
- static const int max_exponent = DBL_MAX_EXP;
- static const int max_exponent10 = DBL_MAX_10_EXP;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static double infinity() throw()
- { return static_cast<double>(0); }
- static double quiet_NaN() throw()
- { return static_cast<double>(0); }
- static double signaling_NaN() throw()
- { return static_cast<double>(0); }
- static double denorm_min() throw()
- { return static_cast<double>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<> struct numeric_limits<long double> {
- static const bool is_specialized = true;
-
- static double min() throw()
- { return LDBL_MIN; }
- static double max() throw()
- { return LDBL_MAX; }
-
- static const int digits = LDBL_MANT_DIG;
- static const int digits10 = LDBL_DIG;
- static const bool is_signed = true;
- static const bool is_integer = false;
- static const bool is_exact = false;
- static const int radix = 2;
- static double epsilon() throw()
- { return LDBL_EPSILON; }
- static double round_error() throw()
- { return 1.0L; }
-
- static const int min_exponent = LDBL_MIN_EXP;
- static const int min_exponent10 = LDBL_MIN_10_EXP;
- static const int max_exponent = LDBL_MAX_EXP;
- static const int max_exponent10 = LDBL_MAX_10_EXP;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static double infinity() throw()
- { return static_cast<double>(0); }
- static double quiet_NaN() throw()
- { return static_cast<double>(0); }
- static double signaling_NaN() throw()
- { return static_cast<double>(0); }
- static double denorm_min() throw()
- { return static_cast<double>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = true;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
-} // namespace std
-
-#endif // _CPP_NUMERIC_LIMITS
diff --git a/libstdc++-v3/include/bits/std_limits.h b/libstdc++-v3/include/bits/std_limits.h
index d0f0479ca03..3fca4dcd033 100644
--- a/libstdc++-v3/include/bits/std_limits.h
+++ b/libstdc++-v3/include/bits/std_limits.h
@@ -40,6 +40,7 @@
#pragma GCC system_header
+#include <bits/cpu_limits.h>
#include <bits/c++config.h>
//
@@ -95,7 +96,7 @@
#define __glibcpp_wchar_t_bits 32
#endif
#ifndef __glibcpp_wchar_t_is_signed
-#define __glibcpp_wchar_t_is_signed __glibcpp_plain_char_is_signed
+#define __glibcpp_wchar_t_is_signed false
#endif
#ifdef _GLIBCPP_USE_LONG_LONG
#ifndef __glibcpp_long_long_bits
@@ -1139,7 +1140,7 @@ namespace std
template<>
- struct numeric_limits<signed char>
+ struct numeric_limits<signed char>
{
static const bool is_specialized = true;
@@ -1960,8 +1961,8 @@ namespace std
static const bool traps = __glibcpp_long_double_traps;
static const bool tinyness_before = __glibcpp_long_double_tinyness_before;
- static const float_round_style round_style =
- __glibcpp_long_double_round_style;
+ static const float_round_style round_style =
+ __glibcpp_long_double_round_style;
};
#undef __glibcpp_long_double_min
diff --git a/libstdc++-v3/libio/Makefile.in b/libstdc++-v3/libio/Makefile.in
index f01d6106020..4d244f278e5 100644
--- a/libstdc++-v3/libio/Makefile.in
+++ b/libstdc++-v3/libio/Makefile.in
@@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@
CLOCALE_H = @CLOCALE_H@
CMESSAGES_H = @CMESSAGES_H@
CPP = @CPP@
+CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
CSHADOW_FLAGS = @CSHADOW_FLAGS@
CSTDIO_H = @CSTDIO_H@
CXX = @CXX@
@@ -104,7 +105,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
LIBTOOL = @LIBTOOL@
-LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
diff --git a/libstdc++-v3/libmath/Makefile.in b/libstdc++-v3/libmath/Makefile.in
index 337c0d316ed..74a41f13519 100644
--- a/libstdc++-v3/libmath/Makefile.in
+++ b/libstdc++-v3/libmath/Makefile.in
@@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@
CLOCALE_H = @CLOCALE_H@
CMESSAGES_H = @CMESSAGES_H@
CPP = @CPP@
+CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
CSHADOW_FLAGS = @CSHADOW_FLAGS@
CSTDIO_H = @CSTDIO_H@
CXX = @CXX@
@@ -106,7 +107,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
LIBTOOL = @LIBTOOL@
-LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
index b9c55cc78d3..5d5fe78c4a1 100644
--- a/libstdc++-v3/libsupc++/Makefile.in
+++ b/libstdc++-v3/libsupc++/Makefile.in
@@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@
CLOCALE_H = @CLOCALE_H@
CMESSAGES_H = @CMESSAGES_H@
CPP = @CPP@
+CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
CSHADOW_FLAGS = @CSHADOW_FLAGS@
CSTDIO_H = @CSTDIO_H@
CXXCPP = @CXXCPP@
@@ -103,7 +104,6 @@ LIBMATHOBJS = @LIBMATHOBJS@
LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
LIBTOOL = @LIBTOOL@
-LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
diff --git a/libstdc++-v3/mknumeric_limits b/libstdc++-v3/mknumeric_limits
deleted file mode 100755
index cb334635113..00000000000
--- a/libstdc++-v3/mknumeric_limits
+++ /dev/null
@@ -1,367 +0,0 @@
-#! /bin/sh
-
-# mknumeric_limits: generates
-# - part of bits/std_limits.h completed by gen-num-limits.cc
-# - src/limitsMEMBERS.cc that contains the definition of various
-# static data members of specialization of class template numeric_limits
-#
-
-echo "running mknumeric_limits"
-
-BUILD_DIR=$1
-if [ ! -d "$BUILD_DIR" ]; then
- echo "build directory $BUILD_DIR not found, exiting."
- exit 1
-fi
-
-if [ ! -d "$BUILD_DIR/include" ]; then
- mkdir "$BUILD_DIR/include"
-fi
-
-if [ ! -d "$BUILD_DIR/include/bits" ]; then
- mkdir "$BUILD_DIR/include/bits"
-fi
-
-if [ ! -d "$BUILD_DIR/src" ]; then
- mkdir "$BUILD_DIR/src"
-fi
-
-OUT_H="$BUILD_DIR/include/bits/std_limits.h"
-OUT_C="$BUILD_DIR/src/limitsMEMBERS.cc"
-
-if [ -f $OUT_C ]; then
- rm -f $OUT_H $OUT_C $OUT_H-t $OUT_C-t
-fi
-
-SRC_DIR=$2
-if [ ! -d "$SRC_DIR" ]; then
- echo "source directory $SRC_DIR not found, exiting."
- exit 1
-fi
-
-XCOMPILE=$3
-if [ $XCOMPILE -eq 1 ]; then
- echo "using default values for cross compiles"
- cp $SRC_DIR/include/bits/limits_generic.h $OUT_H
- cp $SRC_DIR/src/limits_generic.cc $OUT_C
- exit 0;
-fi
-
-CC=${CC="$BUILD_DIR/../../gcc/xgcc -B$BUILD_DIR/../../gcc/"}
-
-# We output to a temporary file, so that we don't appear to have
-# succeeded unless we actually do.
-cat <<EOF > $OUT_H-t
-// The template and inlines for the -*- C++ -*- numeric_limits classes.
-
-// Copyright (C) 1999-2001 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 2, 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.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Note: this is not a conforming implementation.
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr>
-
-//
-// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT!
-//
-
-//
-// ISO 14882:1998
-// 18.2.1
-//
-
-#ifndef _CPP_NUMERIC_LIMITS
-#define _CPP_NUMERIC_LIMITS 1
-
-#include <bits/c++config.h>
-#include <bits/std_cfloat.h>
-
-namespace std
-{
- enum float_round_style
- {
- round_indeterminate = -1,
- round_toward_zero = 0,
- round_to_nearest = 1,
- round_toward_infinity = 2,
- round_toward_neg_infinity = 3
- };
-
- enum float_denorm_style
- {
- denorm_indeterminate = -1,
- denorm_absent = 0,
- denorm_present = 1
- };
-
- template<typename _Tp>
- struct numeric_limits
- {
- static const bool is_specialized = false;
-
- static _Tp min() throw() { return static_cast<_Tp>(0); }
- static _Tp max() throw() { return static_cast<_Tp>(0); }
-
- static const int digits = 0;
- static const int digits10 = 0;
- static const bool is_signed = false;
- static const bool is_integer = false;
- static const bool is_exact = false;
- static const int radix = 0;
-
- static _Tp epsilon() throw() { return static_cast<_Tp>(0); }
- static _Tp round_error() throw() { return static_cast<_Tp>(0); }
-
- static const int min_exponent = 0;
- static const int min_exponent10 = 0;
- static const int max_exponent = 0;
- static const int max_exponent10 = 0;
-
- static const bool has_infinity = false;
- static const bool has_quiet_NaN = false;
- static const bool has_signaling_NaN = false;
- static const float_denorm_style has_denorm = denorm_absent;
- static const bool has_denorm_loss = false;
-
- static _Tp infinity() throw() { return static_cast<_Tp>(0); }
- static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }
- static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); }
- static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }
-
- static const bool is_iec559 = false;
- static const bool is_bounded = false;
- static const bool is_modulo = false;
-
- static const bool traps = false;
- static const bool tinyness_before = false;
- static const float_round_style round_style = round_toward_zero;
- };
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::is_specialized;
-
- template<typename _Tp>
- const int
- numeric_limits<_Tp>::digits;
-
- template<typename _Tp>
- const int
- numeric_limits<_Tp>::digits10;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::is_signed;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::is_integer;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::is_exact;
-
- template<typename _Tp>
- const int
- numeric_limits<_Tp>::radix;
-
- template<typename _Tp>
- const int
- numeric_limits<_Tp>::min_exponent;
-
- template<typename _Tp>
- const int
- numeric_limits<_Tp>::min_exponent10;
-
- template<typename _Tp>
- const int
- numeric_limits<_Tp>::max_exponent;
-
- template<typename _Tp>
- const int
- numeric_limits<_Tp>::max_exponent10;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::has_infinity;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::has_quiet_NaN;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::has_signaling_NaN;
-
- template<typename _Tp>
- const float_denorm_style
- numeric_limits<_Tp>::has_denorm;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::has_denorm_loss;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::is_iec559;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::is_bounded;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::is_modulo;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::traps;
-
- template<typename _Tp>
- const bool
- numeric_limits<_Tp>::tinyness_before;
-
- template<typename _Tp>
- const float_round_style
- numeric_limits<_Tp>::round_style;
-
- template<typename _Tp> _Tp __limits_infinity();
- template<typename _Tp> _Tp __limits_quiet_NaN();
- template<typename _Tp> _Tp __limits_signaling_NaN();
- template<typename _Tp> _Tp __limits_denorm_min();
-
-EOF
-
-# Must turn off exceptions, because the C++ exception handling support
-# routines have not been built yet.
-echo "$CC -I$BUILD_DIR -fno-exceptions \
- -o $BUILD_DIR/src/gen-num-limits $SRC_DIR/src/gen-num-limits.cc"
-
-{ $CC -I$BUILD_DIR -fno-exceptions \
- -o "$BUILD_DIR/src/gen-num-limits" "$SRC_DIR/src/gen-num-limits.cc"
-} || {
- echo "gen-num-limits failed to build, exiting."
- exit 1
-}
-
-"$BUILD_DIR/src/gen-num-limits" >> $OUT_H-t || {
- echo "gen-num-limits failed to execute, exiting."
- exit 1
-}
-
-cat <<EOF >> $OUT_H-t
-} // namespace std
-
-#endif // _CPP_NUMERIC_LIMITS
-EOF
-
-trait_name=numeric_limits
-
-cat <<EOF > $OUT_C-t
-// Static data members of -*- C++ -*- numeric_limits classes
-
-// Copyright (C) 1999, 2000 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 2, 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.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr>
-
-//
-// ISO C++ 14882:1998
-// 18.2.1
-//
-
-#include <bits/std_limits.h>
-namespace std {
-EOF
-
-for type_name in bool char 'signed char' 'unsigned char' \
- short 'unsigned short' int 'unsigned int' \
- long 'unsigned long' 'long long' 'unsigned long long' \
- float double 'long double'
- do
- grep "<$type_name>" $OUT_H-t >/dev/null 2>&1 || continue
- cat <<EOF >> $OUT_C-t
-
- const bool $trait_name<$type_name>::is_specialized;
- const int $trait_name<$type_name>::digits;
- const int $trait_name<$type_name>::digits10;
- const bool $trait_name<$type_name>::is_signed;
- const bool $trait_name<$type_name>::is_integer;
- const bool $trait_name<$type_name>::is_exact;
- const int $trait_name<$type_name>::radix;
- const int $trait_name<$type_name>::min_exponent;
- const int $trait_name<$type_name>::min_exponent10;
- const int $trait_name<$type_name>::max_exponent;
- const int $trait_name<$type_name>::max_exponent10;
- const bool $trait_name<$type_name>::has_infinity;
- const bool $trait_name<$type_name>::has_quiet_NaN;
- const bool $trait_name<$type_name>::has_signaling_NaN;
- const float_denorm_style $trait_name<$type_name>::has_denorm;
- const bool $trait_name<$type_name>::has_denorm_loss;
- const bool $trait_name<$type_name>::is_iec559;
- const bool $trait_name<$type_name>::is_bounded;
- const bool $trait_name<$type_name>::is_modulo;
- const bool $trait_name<$type_name>::traps;
- const bool $trait_name<$type_name>::tinyness_before;
- const float_round_style $trait_name<$type_name>::round_style;
-EOF
-
-done
-
-cat <<EOF >> $OUT_C-t
-} // namespace std
-
-
-EOF
-
-mv $OUT_C-t $OUT_C
-mv $OUT_H-t $OUT_H
-
-
diff --git a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in
index 5f01f39f28e..b8a93ae010d 100644
--- a/libstdc++-v3/po/Makefile.in
+++ b/libstdc++-v3/po/Makefile.in
@@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@
CLOCALE_H = @CLOCALE_H@
CMESSAGES_H = @CMESSAGES_H@
CPP = @CPP@
+CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
CSHADOW_FLAGS = @CSHADOW_FLAGS@
CSTDIO_H = @CSTDIO_H@
CXX = @CXX@
@@ -106,7 +107,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
LIBTOOL = @LIBTOOL@
-LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index 89342c392d6..b930b4f0a48 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -75,6 +75,7 @@ CCODECVT_H = @CCODECVT_H@
CLOCALE_H = @CLOCALE_H@
CMESSAGES_H = @CMESSAGES_H@
CPP = @CPP@
+CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
CSHADOW_FLAGS = @CSHADOW_FLAGS@
CSTDIO_H = @CSTDIO_H@
CXXCPP = @CXXCPP@
@@ -100,7 +101,6 @@ LIBICONV = @LIBICONV@
LIBMATHOBJS = @LIBMATHOBJS@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
LIBTOOL = @LIBTOOL@
-LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
diff --git a/libstdc++-v3/src/gen-num-limits.cc b/libstdc++-v3/src/gen-num-limits.cc
deleted file mode 100644
index 6fbfdb73fff..00000000000
--- a/libstdc++-v3/src/gen-num-limits.cc
+++ /dev/null
@@ -1,844 +0,0 @@
-// Copyright (C) 1999, 2000, 2001 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 2, 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.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// Written by Gabriel Dos Reis <gdr@gcc.gnu.org>
-//
-// Note: This program outputs speciliazations of ISO C++ class template
-// numeric_limits<> as described in 18.2.1.
-// Do not compile with optimization turned on.
-//
-
-#include <config.h>
-#include <limits.h>
-#include <float.h>
-#include <stdio.h>
-#include <signal.h>
-#include <setjmp.h>
-#include <math.h>
-#ifdef _GLIBCPP_USE_WCHAR_T
-#include <wchar.h>
-#endif
-
-// mknumeric_limits will first try to compile this file with
-// HAVE_SIGSETJMP. If it fails, then it will try without it. Some
-// systems, such as GNU/Linux/sparc, would remain with the signal
-// blocked if the signal handler uses longjmp instead of siglongjmp.
-// We assume here setjmp/longjmp will preserve the sigblock mask if
-// sigsetjmp is not present.
-
-#if ! HAVE_SIGSETJMP
-# define sigjmp_buf jmp_buf
-# define sigsetjmp(buf, save) setjmp (buf)
-# define siglongjmp(env, ret) longjmp (env, ret)
-#endif
-
-const char tab[] = " ";
-const char tab2[] = " ";
-const char* bool_alpha[] = { "false", "true" };
-const double log10_of_two = .30102999566398119;
-const int bits_per_byte = CHAR_BIT;
-const int integer_base_rep = 2;
-
-
-//
-// numeric_limits members are all static (as it is usually the case for
-// traits) and of three kinds: predicates, values and functions.
-// Actually there is no harm to think of values and functions as being
-// of the same kind. Their main purposes are to denote values.
-//
-
-
-//
-// Integer types: bool, char, signed char, unsigned char, wchar_t,
-// short, unsigned short, int, unsigned, long, unsigned long,
-// and possibly long long and unsigned long long
-//
-// Here ISO 14882 disagrees with LIA-1 in stating bool to be an
-// integer type. Therefore itn't suprising to see ambiguity in the
-// interpretation of some members. Need to keep track of the discusion
-// in LWG on this topic.
-//
-// Integer types are first promoted to int or long before the actual
-// arithmetical operations are carried out. Therefore testing whether
-// traps occur amounts -- for integer types -- to test whether traps
-// occur for int, unsigned, long, unsigned long. Furthermore
-// overflow cannot happen for unsigned integer types.
-
-sigjmp_buf env;
-
-/* The prototype of signal() may vary. Accomodate variations such as
- void(*)(int) and void(*)(...). */
-template <typename signal_handler_type, typename signal_number_type>
-inline void (*signal_adapter (signal_handler_type
- (*signal_func)(signal_number_type,
- signal_handler_type),
- signal_number_type arg,
- void (*handler)(int)))(int)
-{
- return (void (*)(int))(*signal_func)(arg, (signal_handler_type)handler);
-}
-
-template <typename signal_handler_type, typename signal_number_type>
-inline void (*signal_adapter (signal_handler_type (*signal_func)(...),
- signal_number_type arg,
- void (*handler)(int)))(int)
-{
- return (void (*)(int))(*signal_func)(arg, (signal_handler_type)handler);
-}
-
-void signal_handler(int sig)
-{
-#ifdef __CYGWIN__
- static sigset_t x;
- signal_adapter (signal, sig, signal_handler);
- sigemptyset (&x);
- sigprocmask(SIG_SETMASK, &x, NULL);
-#endif /* __CYGWIN__ */
- siglongjmp(env, sig);
-}
-
-template<typename Operation>
-bool trapping(const Operation& op)
-{
- if (sigsetjmp(env, 1) == 0) op();
- else return true;
- return false;
-}
-
-template<typename T>
- struct division_by_zero
- {
- void operator() () const
- {
- volatile T zero = T();
- volatile T one = T(1);
- volatile T infinity = one / zero;
- }
- };
-
-template<typename T>
- struct overflow
- {
- void operator() () const
- {
- T i = T(1);
- T j = T();
- while (i>j) {
- j = i;
- i = i * 2 + 1;
- }
- }
- };
-
-template<typename T> struct underflow { };
-
-
-// Set various signals handler for trapping aritmetic ops.
-void set_signals_handler()
-{
- signal_adapter(signal, SIGFPE, signal_handler);
- signal_adapter(signal, SIGTRAP, signal_handler);
- // This is necessary for Linux/SPARC.
- signal_adapter(signal, SIGILL, signal_handler);
-}
-
-// traps
-template<typename T> void traps()
-{
- fflush(NULL);
- set_signals_handler();
- bool trap_flag = trapping(division_by_zero<T>());
- set_signals_handler();
- trap_flag = trap_flag || trapping(overflow<T>());
- const char* p = bool_alpha[trap_flag];
- printf("%s%s = %s;\n", tab2, "static const bool traps", p);
-}
-
-#define SPECIALIZE_TRAPPING(T) \
-template<> void traps< T >() \
-{ \
- fflush(NULL); \
- set_signals_handler(); \
- const char* p = bool_alpha[trapping(division_by_zero<T>())]; \
- printf("%s%s = %s;\n", tab2, "static const bool traps", p); \
-}
-
-SPECIALIZE_TRAPPING(unsigned char);
-SPECIALIZE_TRAPPING(unsigned short);
-SPECIALIZE_TRAPPING(unsigned int);
-SPECIALIZE_TRAPPING(unsigned long);
-#if _GLIBCPP_USE_LONG_LONG
-SPECIALIZE_TRAPPING(unsigned long long);
-#endif
-
-#undef SPECIALIZE_TRAPPING
-
-template<typename T>
- struct type_name_trait
- {
- static const char type_name[];
- static const char trait_name[];
- };
-
-#define DEFINED_TYPE_NAME(T) \
-template<> \
-const char type_name_trait< T >::type_name[] = #T; \
-template<> \
-const char type_name_trait< T >::trait_name[] = "numeric_limits<" #T ">";
-
-DEFINED_TYPE_NAME(bool);
-DEFINED_TYPE_NAME(char);
-DEFINED_TYPE_NAME(signed char);
-DEFINED_TYPE_NAME(unsigned char);
-DEFINED_TYPE_NAME(wchar_t);
-DEFINED_TYPE_NAME(short);
-DEFINED_TYPE_NAME(unsigned short);
-DEFINED_TYPE_NAME(int);
-DEFINED_TYPE_NAME(unsigned int);
-DEFINED_TYPE_NAME(long);
-DEFINED_TYPE_NAME(unsigned long);
-#ifdef _GLIBCPP_USE_LONG_LONG
-DEFINED_TYPE_NAME(long long);
-DEFINED_TYPE_NAME(unsigned long long);
-#endif
-DEFINED_TYPE_NAME(float);
-DEFINED_TYPE_NAME(double);
-DEFINED_TYPE_NAME(long double);
-
-#undef DEFINED_TYPE_NAME
-
-// declarator
-template<typename T>
- struct declarator : type_name_trait<T>
- {
- typedef type_name_trait<T> base;
- static void start()
- {
- printf("%s%s %s %s\n", tab, "template<> struct", base::trait_name, "{");
- }
-
- static void end()
- { printf("%s};\n\n", tab); }
- };
-
-
-//
-// Predicates
-//
-template<typename T>
- struct predicate
- {
- static const bool is_signed;
- static const bool is_integer;
- static const bool is_exact;
-
- static const bool has_infinity;
- static const bool has_quiet_nan;
- static const bool has_signaling_nan;
- static const bool has_denorm;
- static const bool has_denorm_loss;
-
- static const bool is_iec559;
- static const bool is_bounded;
-
- static const bool traps;
- };
-
-template<typename T>
-const bool predicate<T>::is_signed = T(-1) < 0;
-
-// Non integer types should specialize this
-template<typename T>
-const bool predicate<T>::is_integer = true;
-
-// Non exact types should specialize this;
-template<typename T>
-const bool predicate<T>::is_exact = true;
-
-#define SPECIALIZE_EXACTNESS(T) \
-template<> \
-const bool predicate< T >::is_integer = false; \
-template<> \
-const bool predicate< T >::is_exact = false
-
-SPECIALIZE_EXACTNESS(float);
-SPECIALIZE_EXACTNESS(double);
-SPECIALIZE_EXACTNESS(long double);
-
-#undef SPECIALIZE_EXACTNESS
-
-
-template<typename T>
-const bool predicate<T>::has_infinity = false;
-
-template<typename T>
-const bool predicate<T>::has_quiet_nan = false;
-
-template<typename T>
-const bool predicate<T>::has_signaling_nan = false;
-
-template<typename T>
-const bool predicate<T>::has_denorm = false;
-
-template<typename T>
-const bool predicate<T>::has_denorm_loss = false;
-
-
-
-// Each type conforming to IEC559 specifications should specialize this.
-template<typename T>
-const bool predicate<T>::is_iec559 = false;
-
-#define SPECIALIZE_IEC559(T) \
-template<> \
-const bool predicate< T >::is_iec559 = true
-
-SPECIALIZE_IEC559(bool);
-SPECIALIZE_IEC559(int);
-SPECIALIZE_IEC559(unsigned int);
-SPECIALIZE_IEC559(long);
-SPECIALIZE_IEC559(unsigned long);
-#ifdef _GLIBCPP_USE_LONG_LONG
-SPECIALIZE_IEC559(long long);
-SPECIALIZE_IEC559(unsigned long long);
-#endif
-
-#undef SPECIALIZE_IEC559
-
-//
-// Values
-//
-template<typename T>
- struct value
- {
- static const char min[];
- static const char max[];
-
- static const int digits;
- static const int digits10;
-
- static const int radix;
- static const char epsilon[];
- static const char round_error[];
-
- static const int min_exponent;
- static const int min_exponent10;
- static const int max_exponent;
- static const int max_exponent10;
- };
-
-#define DEFINE_EXTREMA(T, m, M) DO_DEFINE_EXTREMA(T, m, M)
-#define DO_DEFINE_EXTREMA(T, m, M) \
-template<> \
-const char value< T >::min[] = #m; \
-template<> \
-const char value< T >::max[] = #M
-
-DEFINE_EXTREMA(bool, false, true);
-DEFINE_EXTREMA(char, CHAR_MIN, CHAR_MAX);
-DEFINE_EXTREMA(signed char, SCHAR_MIN, SCHAR_MAX);
-DEFINE_EXTREMA(unsigned char, 0, UCHAR_MAX);
-#ifdef _GLIBCPP_USE_WCHAR_T
-DEFINE_EXTREMA(wchar_t, WCHAR_MIN, WCHAR_MAX);
-#endif
-DEFINE_EXTREMA(short, SHRT_MIN, SHRT_MAX);
-DEFINE_EXTREMA(unsigned short, 0, USHRT_MAX);
-DEFINE_EXTREMA(int, INT_MIN, INT_MAX);
-DEFINE_EXTREMA(unsigned int, 0, UINT_MAX);
-DEFINE_EXTREMA(long, LONG_MIN, LONG_MAX);
-DEFINE_EXTREMA(unsigned long, 0, ULONG_MAX);
-#ifdef _GLIBCPP_USE_LONG_LONG
-DEFINE_EXTREMA(long long, (-__LONG_LONG_MAX__-1), __LONG_LONG_MAX__);
-DEFINE_EXTREMA(unsigned long long, 0, (__LONG_LONG_MAX__ * 2ULL + 1));
-#endif
-DEFINE_EXTREMA(float, FLT_MIN, FLT_MAX);
-DEFINE_EXTREMA(double, DBL_MIN, DBL_MAX);
-DEFINE_EXTREMA(long double, LDBL_MIN, LDBL_MAX);
-
-#undef DEFINE_EXTREMA
-#undef DO_DEFINE_EXTREMA
-
-// Non integer types should specialize this
-template<typename T>
-const int value<T>::digits =
- bits_per_byte * sizeof(T) - int(predicate<T>::is_signed);
-
-// Non integer types should specialize this. Always two for
-// integer types.
-template<typename T>
-const int value<T>::radix = 2;
-
-#define SPECIALIZE_DIGITS(T, D, D10) \
-template<> \
-const int value< T >::digits = D; \
-template<> \
-const int value< T >::digits10 = D10
-
-SPECIALIZE_DIGITS(float, FLT_MANT_DIG, FLT_DIG);
-SPECIALIZE_DIGITS(double, DBL_MANT_DIG, DBL_DIG);
-SPECIALIZE_DIGITS(long double, LDBL_MANT_DIG, LDBL_DIG);
-
-#undef SPECIALIZE_DIGITS
-
-
-#define SPECIALIZE_RADIX(T, R) \
-template<> \
-const int value< T >::radix = R
-
-SPECIALIZE_RADIX(float, FLT_RADIX);
-SPECIALIZE_RADIX(double, FLT_RADIX);
-SPECIALIZE_RADIX(long double, FLT_RADIX);
-
-#undef SPECIALIZE_RADIX
-
-// Non integer types should specialize this.
-// Unfortunately, systems that don't deal with weak linking correctly
-// (Ie, hpux and aix), cannot use this sophisticated yet sane method. So,
-// explicitly instantiate all the data members here so that they will
-// be happy.
-
-// sophisticated, sane method
-#if 0
-template<typename T>
-const char value<T>::epsilon[] = "0";
-#endif
-
-#define SPECIALIZE_EPSILON(T, E) DO_SPECIALIZE_EPSILON(T, E)
-#define DO_SPECIALIZE_EPSILON(T, E) \
-template<> \
-const char value< T >::epsilon[] = #E
-
-// unsophisticated, gross method
-#if 1
-SPECIALIZE_EPSILON(bool, 0);
-SPECIALIZE_EPSILON(char, 0);
-SPECIALIZE_EPSILON(unsigned char, 0);
-SPECIALIZE_EPSILON(signed char, 0);
-SPECIALIZE_EPSILON(wchar_t, 0);
-SPECIALIZE_EPSILON(short, 0);
-SPECIALIZE_EPSILON(unsigned short, 0);
-SPECIALIZE_EPSILON(int, 0);
-SPECIALIZE_EPSILON(unsigned int, 0);
-SPECIALIZE_EPSILON(long, 0);
-SPECIALIZE_EPSILON(unsigned long, 0);
-SPECIALIZE_EPSILON(long long, 0);
-SPECIALIZE_EPSILON(unsigned long long, 0);
-#endif
-
-SPECIALIZE_EPSILON(float, FLT_EPSILON);
-SPECIALIZE_EPSILON(double, DBL_EPSILON);
-SPECIALIZE_EPSILON(long double, LDBL_EPSILON);
-
-#undef DO_SPECIALIZE_EPSILON
-#undef SPECIALIZE_EPSILON
-
-
-// Non integer types should specialize this.
-// Unfortunately, systems that don't deal with weak linking correctly
-// (Ie, hpux and aix), cannot use this sophisticated yet sane method. So,
-// explicitly instantiate all the data members here so that they will
-// be happy.
-
-// sophisticated, sane method
-#if 0
-template<typename T>
-const char value<T>::round_error[] = "0";
-#endif
-
-#define SPECIALIZE_ROUND_ERROR(T, R) \
-template<> \
-const char value< T >::round_error[] = #R
-// unsophisticated, gross method
-#if 1
-SPECIALIZE_ROUND_ERROR(bool, 0);
-SPECIALIZE_ROUND_ERROR(char, 0);
-SPECIALIZE_ROUND_ERROR(unsigned char, 0);
-SPECIALIZE_ROUND_ERROR(signed char, 0);
-SPECIALIZE_ROUND_ERROR(wchar_t, 0);
-SPECIALIZE_ROUND_ERROR(short, 0);
-SPECIALIZE_ROUND_ERROR(unsigned short, 0);
-SPECIALIZE_ROUND_ERROR(int, 0);
-SPECIALIZE_ROUND_ERROR(unsigned int, 0);
-SPECIALIZE_ROUND_ERROR(long, 0);
-SPECIALIZE_ROUND_ERROR(unsigned long, 0);
-SPECIALIZE_ROUND_ERROR(long long, 0);
-SPECIALIZE_ROUND_ERROR(unsigned long long, 0);
-#endif
-
-SPECIALIZE_ROUND_ERROR(float, 1.0f);
-SPECIALIZE_ROUND_ERROR(double, 1.0);
-SPECIALIZE_ROUND_ERROR(long double, 1.0L);
-
-#undef SPECIALIZE_ROUND_ERROR
-
-
-template<typename T>
-const int value<T>::min_exponent = 0;
-
-template<typename T>
-const int value<T>::min_exponent10 = 0;
-
-template<typename T>
-const int value<T>::max_exponent = 0;
-
-template<typename T>
-const int value<T>::max_exponent10 = 0;
-
-#define SPECIALIZE_EXPONENTS(T, m, m10, M, M10) \
-template<> \
-const int value< T >::min_exponent = m; \
-template<> \
-const int value< T >::min_exponent10 = m10; \
-template<> \
-const int value< T >::max_exponent = M; \
-template<> \
-const int value< T >::max_exponent10 = M10
-
-SPECIALIZE_EXPONENTS(float, FLT_MIN_EXP, FLT_MIN_10_EXP,
- FLT_MAX_EXP, FLT_MAX_10_EXP);
-SPECIALIZE_EXPONENTS(double, DBL_MIN_EXP, DBL_MIN_10_EXP,
- DBL_MAX_EXP, DBL_MAX_10_EXP);
-SPECIALIZE_EXPONENTS(long double, LDBL_MIN_EXP, LDBL_MIN_10_EXP,
- LDBL_MAX_EXP, LDBL_MAX_10_EXP);
-
-#undef SPECIALIZE_EXPONENTS
-
-//
-// Functions to output predicates and values.
-//
-
-template<typename T> void is_signed()
-{
- printf("%s%s = %s;\n", tab2, "static const bool is_signed",
- bool_alpha[predicate<T>::is_signed]);
-}
-
-// a fundamental type is modulo iff it isn't signed
-template<typename T> void is_modulo()
-{
- printf("%s%s = %s;\n", tab2, "static const bool is_modulo",
- bool_alpha[! predicate<T>::is_signed]);
-}
-
-template<typename T>
-void min()
-{
- printf("%s%s%s%s\n%s%s%s%s\n", tab2, "static ", declarator<T>::type_name,
- " min() throw()", tab2, "{ return ", value<T>::min, "; }");
-}
-
-template<typename T>
-void max()
-{
- printf("%s%s%s%s\n%s%s%s%s\n", tab2, "static ", declarator<T>::type_name,
- " max() throw()", tab2, "{ return ", value<T>::max, "; }");
-}
-
-template<typename T>
-void is_integer()
-{
- printf("%s%s = %s;\n", tab2, "static const bool is_integer",
- bool_alpha[predicate<T>::is_integer]);
-}
-
-template<typename T>
-void is_exact()
-{
- printf("%s%s = %s;\n", tab2, "static const bool is_exact",
- bool_alpha[predicate<T>::is_exact]);
-}
-
-template<typename T>
-void digits()
-{
- printf("%s%s = %d;\n", tab2, "static const int digits",
- value<T>::digits);
-}
-
-template<typename T>
-void digits10()
-{
- printf("%s%s = %d;\n", tab2, "static const int digits10",
- int(log10_of_two * value<T>::digits) + 1);
-}
-
-template<typename T>
-void radix()
-{
- printf("%s%s = %d;\n", tab2, "static const int radix",
- value<T>::radix);
-}
-
-template<typename T>
-void epsilon()
-{
- printf("%s%s %s %s\n%s%s %s%s\n", tab2, "static",
- declarator<T>::type_name, "epsilon() throw()",
- tab2, "{ return", value<T>::epsilon, "; }");
-}
-
-template<typename T>
-void round_error()
-{
- printf("%s%s %s %s\n%s%s %s%s\n", tab2, "static",
- declarator<T>::type_name, "round_error() throw()",
- tab2, "{ return", value<T>::round_error, "; }");
-}
-
-template<typename T>
-void min_exponent()
-{
- printf("%s%s = %d;\n", tab2, "static const int min_exponent",
- value<T>::min_exponent);
-}
-
-template<typename T>
-void min_exponent10()
-{
- printf("%s%s = %d;\n", tab2, "static const int min_exponent10",
- value<T>::min_exponent10);
-}
-
-template<typename T>
-void max_exponent()
-{
- printf("%s%s = %d;\n", tab2, "static const int max_exponent",
- value<T>::max_exponent);
-}
-
-template<typename T>
-void max_exponent10()
-{
- printf("%s%s = %d;\n", tab2, "static const int max_exponent10",
- value<T>::max_exponent10);
-}
-
-template<typename T>
-void has_infinity()
-{
- printf("%s%s = %s;\n", tab2, "static const bool has_infinity",
- bool_alpha[predicate<T>::has_infinity]);
-}
-
-template<typename T>
-void has_quiet_nan()
-{
- printf("%s%s = %s;\n", tab2, "static const bool has_quiet_NaN",
- bool_alpha[predicate<T>::has_quiet_nan]);
-}
-
-template<typename T>
-void has_signaling_nan()
-{
- printf("%s%s = %s;\n", tab2, "static const bool has_signaling_NaN",
- bool_alpha[predicate<T>::has_signaling_nan]);
-}
-
-template<typename T>
-void has_denorm_loss()
-{
- printf("%s%s = %s;\n", tab2, "static const bool has_denorm_loss",
- bool_alpha[predicate<T>::has_denorm_loss]);
-}
-
-template<typename T>
- struct infinity_trait
- {
- static void has_denorm()
- {
- printf("%s%s;\n", tab2, "static const float_denorm_style "
- "has_denorm = denorm_absent");
- }
-
- static void infinity()
- {
- printf("%s%s %s %s\n%s%s%s%s\n", tab2, "static",
- declarator<T>::type_name, "infinity() throw()", tab2,
- "{ return static_cast<", declarator<T>::type_name, ">(0); }");
- }
-
- static void quiet_NaN()
- {
- printf("%s%s %s %s\n%s%s%s%s\n", tab2, "static",
- declarator<T>::type_name, "quiet_NaN() throw()",
- tab2, "{ return static_cast<", declarator<T>::type_name,
- ">(0); }");
- }
-
- static void signaling_NaN()
- {
- printf("%s%s %s %s\n%s%s%s%s\n", tab2, "static",
- declarator<T>::type_name, "signaling_NaN() throw()",
- tab2, "{ return static_cast<", declarator<T>::type_name,
- ">(0); }");
- }
-
- static void denorm_min()
- {
- printf("%s%s %s %s\n%s%s%s%s\n", tab2, "static",
- declarator<T>::type_name, "denorm_min() throw()",
- tab2, "{ return static_cast<", declarator<T>::type_name,
- ">(0); }");
- }
- };
-
-
-template<typename T>
-void is_iec559()
-{
- printf("%s%s = %s;\n", tab2, "static const bool is_iec559",
- bool_alpha[predicate<T>::is_iec559]);
-}
-
-// tinyness_before
-template<typename T>
-void tinyness_before()
-{
- printf("%s%s;\n", tab2, "static const bool tinyness_before = false");
-}
-
-// round style
-template<typename T>
-void round_style()
-{
- printf("%s%s;\n", tab2, "static const float_round_style "
- "round_style = round_toward_zero");
-}
-
-
-
-// type traits
-template<typename T>
- struct type_trait
- {
- type_trait()
- {
- declarator<T>::start();
- printf("%s%s;\n\n", tab2, "static const bool is_specialized = true");
- min<T>();
- max<T>();
- printf("\n");
- digits<T>();
- digits10<T>();
- is_signed<T>();
- is_integer<T>();
- is_exact<T>();
- radix<T>();
- epsilon<T>();
- round_error<T>();
- printf("\n");
- min_exponent<T>();
- min_exponent10<T>();
- max_exponent<T>();
- max_exponent10<T>();
- printf("\n");
- has_infinity<T>();
- has_quiet_nan<T>();
- has_signaling_nan<T>();
- infinity_trait<T>::has_denorm();
- has_denorm_loss<T>();
- printf("\n");
- infinity_trait<T>::infinity();
- infinity_trait<T>::quiet_NaN();
- infinity_trait<T>::signaling_NaN();
- infinity_trait<T>::denorm_min();
- printf("\n");
- is_iec559<T>();
- printf("%s%s;\n", tab2, "static const bool is_bounded = true");
- is_modulo<T>();
- printf("\n");
- traps<T>();
- tinyness_before<T>();
- round_style<T>();
- declarator<T>::end();
- }
- };
-
-int main()
-{
- type_trait<bool>();
-
- type_trait<char>();
- type_trait<signed char>();
- type_trait<unsigned char>();
-#if defined( _GLIBCPP_USE_WCHAR_T)
- type_trait<wchar_t>();
-#endif
-
- type_trait<short>();
- type_trait<unsigned short>();
-
- type_trait<int>();
- type_trait<unsigned int>();
-
- type_trait<long>();
- type_trait<unsigned long>();
-
-#ifdef _GLIBCPP_USE_LONG_LONG
- type_trait<long long>();
- type_trait<unsigned long long>();
-#endif
-
- type_trait<float>();
- type_trait<double>();
- type_trait<long double>();
-
- // x86/linux gets this weirdness for the min/max functions:
- // static long double min() throw()
- // { return (__extension__ ((union __convert_long_double)
- // {__convert_long_double_i: {0x0, 0x80000000, 0x1, 0x0}})
- // .__convert_long_double_d); }
-}
-
-// G++ doesn't have support for automatic instantiation of static data
-// members on platforms that don't have weak symbols. On AIX, in
-// particular, static data members must be explicitly instantiated.
-// So, we explicitly instantiate some of the ones we need. To save
-// typing, we don't name the static data members explicitly; we
-// instead name their containing types.
-
-#define INSTANTIATIONS(TYPE) \
- template struct predicate<TYPE>; \
- template struct value<TYPE>
-
-INSTANTIATIONS (bool);
-INSTANTIATIONS (char);
-INSTANTIATIONS (signed char);
-INSTANTIATIONS (unsigned char);
-INSTANTIATIONS (short);
-INSTANTIATIONS (unsigned short);
-INSTANTIATIONS (int);
-INSTANTIATIONS (unsigned int);
-INSTANTIATIONS (long);
-INSTANTIATIONS (unsigned long);
-INSTANTIATIONS (float);
-INSTANTIATIONS (double);
-INSTANTIATIONS (long double);
-#ifdef _GLIBCPP_USE_WCHAR_T
-INSTANTIATIONS (wchar_t);
-#endif
diff --git a/libstdc++-v3/src/limits.cc b/libstdc++-v3/src/limits.cc
index bf7c1b0a165..38bf297aa52 100644
--- a/libstdc++-v3/src/limits.cc
+++ b/libstdc++-v3/src/limits.cc
@@ -35,6 +35,7 @@
//
#include <bits/std_limits.h>
+
namespace std
{
// bool
@@ -425,5 +426,3 @@ namespace std
const bool numeric_limits<long double>::tinyness_before;
const float_round_style numeric_limits<long double>::round_style;
} // namespace std
-
-
diff --git a/libstdc++-v3/src/limits_generic.cc b/libstdc++-v3/src/limits_generic.cc
deleted file mode 100644
index 655e3655003..00000000000
--- a/libstdc++-v3/src/limits_generic.cc
+++ /dev/null
@@ -1,340 +0,0 @@
-// Static data members of -*- C++ -*- numeric_limits classes
-
-// Copyright (C) 2000 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 2, 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.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr>
-
-//
-// ISO C++ 14882:1998
-// 18.2.1
-//
-
-#include <bits/std_limits.h>
-namespace std {
-
- const bool numeric_limits<bool>::is_specialized;
- const int numeric_limits<bool>::digits;
- const int numeric_limits<bool>::digits10;
- const bool numeric_limits<bool>::is_signed;
- const bool numeric_limits<bool>::is_integer;
- const bool numeric_limits<bool>::is_exact;
- const int numeric_limits<bool>::radix;
- const int numeric_limits<bool>::min_exponent;
- const int numeric_limits<bool>::min_exponent10;
- const int numeric_limits<bool>::max_exponent;
- const int numeric_limits<bool>::max_exponent10;
- const bool numeric_limits<bool>::has_infinity;
- const bool numeric_limits<bool>::has_quiet_NaN;
- const bool numeric_limits<bool>::has_signaling_NaN;
- const float_denorm_style numeric_limits<bool>::has_denorm;
- const bool numeric_limits<bool>::has_denorm_loss;
- const bool numeric_limits<bool>::is_iec559;
- const bool numeric_limits<bool>::is_bounded;
- const bool numeric_limits<bool>::is_modulo;
- const bool numeric_limits<bool>::traps;
- const bool numeric_limits<bool>::tinyness_before;
- const float_round_style numeric_limits<bool>::round_style;
-
- const bool numeric_limits<char>::is_specialized;
- const int numeric_limits<char>::digits;
- const int numeric_limits<char>::digits10;
- const bool numeric_limits<char>::is_signed;
- const bool numeric_limits<char>::is_integer;
- const bool numeric_limits<char>::is_exact;
- const int numeric_limits<char>::radix;
- const int numeric_limits<char>::min_exponent;
- const int numeric_limits<char>::min_exponent10;
- const int numeric_limits<char>::max_exponent;
- const int numeric_limits<char>::max_exponent10;
- const bool numeric_limits<char>::has_infinity;
- const bool numeric_limits<char>::has_quiet_NaN;
- const bool numeric_limits<char>::has_signaling_NaN;
- const float_denorm_style numeric_limits<char>::has_denorm;
- const bool numeric_limits<char>::has_denorm_loss;
- const bool numeric_limits<char>::is_iec559;
- const bool numeric_limits<char>::is_bounded;
- const bool numeric_limits<char>::is_modulo;
- const bool numeric_limits<char>::traps;
- const bool numeric_limits<char>::tinyness_before;
- const float_round_style numeric_limits<char>::round_style;
-
- const bool numeric_limits<signed char>::is_specialized;
- const int numeric_limits<signed char>::digits;
- const int numeric_limits<signed char>::digits10;
- const bool numeric_limits<signed char>::is_signed;
- const bool numeric_limits<signed char>::is_integer;
- const bool numeric_limits<signed char>::is_exact;
- const int numeric_limits<signed char>::radix;
- const int numeric_limits<signed char>::min_exponent;
- const int numeric_limits<signed char>::min_exponent10;
- const int numeric_limits<signed char>::max_exponent;
- const int numeric_limits<signed char>::max_exponent10;
- const bool numeric_limits<signed char>::has_infinity;
- const bool numeric_limits<signed char>::has_quiet_NaN;
- const bool numeric_limits<signed char>::has_signaling_NaN;
- const float_denorm_style numeric_limits<signed char>::has_denorm;
- const bool numeric_limits<signed char>::has_denorm_loss;
- const bool numeric_limits<signed char>::is_iec559;
- const bool numeric_limits<signed char>::is_bounded;
- const bool numeric_limits<signed char>::is_modulo;
- const bool numeric_limits<signed char>::traps;
- const bool numeric_limits<signed char>::tinyness_before;
- const float_round_style numeric_limits<signed char>::round_style;
-
- const bool numeric_limits<unsigned char>::is_specialized;
- const int numeric_limits<unsigned char>::digits;
- const int numeric_limits<unsigned char>::digits10;
- const bool numeric_limits<unsigned char>::is_signed;
- const bool numeric_limits<unsigned char>::is_integer;
- const bool numeric_limits<unsigned char>::is_exact;
- const int numeric_limits<unsigned char>::radix;
- const int numeric_limits<unsigned char>::min_exponent;
- const int numeric_limits<unsigned char>::min_exponent10;
- const int numeric_limits<unsigned char>::max_exponent;
- const int numeric_limits<unsigned char>::max_exponent10;
- const bool numeric_limits<unsigned char>::has_infinity;
- const bool numeric_limits<unsigned char>::has_quiet_NaN;
- const bool numeric_limits<unsigned char>::has_signaling_NaN;
- const float_denorm_style numeric_limits<unsigned char>::has_denorm;
- const bool numeric_limits<unsigned char>::has_denorm_loss;
- const bool numeric_limits<unsigned char>::is_iec559;
- const bool numeric_limits<unsigned char>::is_bounded;
- const bool numeric_limits<unsigned char>::is_modulo;
- const bool numeric_limits<unsigned char>::traps;
- const bool numeric_limits<unsigned char>::tinyness_before;
- const float_round_style numeric_limits<unsigned char>::round_style;
-
- const bool numeric_limits<short>::is_specialized;
- const int numeric_limits<short>::digits;
- const int numeric_limits<short>::digits10;
- const bool numeric_limits<short>::is_signed;
- const bool numeric_limits<short>::is_integer;
- const bool numeric_limits<short>::is_exact;
- const int numeric_limits<short>::radix;
- const int numeric_limits<short>::min_exponent;
- const int numeric_limits<short>::min_exponent10;
- const int numeric_limits<short>::max_exponent;
- const int numeric_limits<short>::max_exponent10;
- const bool numeric_limits<short>::has_infinity;
- const bool numeric_limits<short>::has_quiet_NaN;
- const bool numeric_limits<short>::has_signaling_NaN;
- const float_denorm_style numeric_limits<short>::has_denorm;
- const bool numeric_limits<short>::has_denorm_loss;
- const bool numeric_limits<short>::is_iec559;
- const bool numeric_limits<short>::is_bounded;
- const bool numeric_limits<short>::is_modulo;
- const bool numeric_limits<short>::traps;
- const bool numeric_limits<short>::tinyness_before;
- const float_round_style numeric_limits<short>::round_style;
-
- const bool numeric_limits<unsigned short>::is_specialized;
- const int numeric_limits<unsigned short>::digits;
- const int numeric_limits<unsigned short>::digits10;
- const bool numeric_limits<unsigned short>::is_signed;
- const bool numeric_limits<unsigned short>::is_integer;
- const bool numeric_limits<unsigned short>::is_exact;
- const int numeric_limits<unsigned short>::radix;
- const int numeric_limits<unsigned short>::min_exponent;
- const int numeric_limits<unsigned short>::min_exponent10;
- const int numeric_limits<unsigned short>::max_exponent;
- const int numeric_limits<unsigned short>::max_exponent10;
- const bool numeric_limits<unsigned short>::has_infinity;
- const bool numeric_limits<unsigned short>::has_quiet_NaN;
- const bool numeric_limits<unsigned short>::has_signaling_NaN;
- const float_denorm_style numeric_limits<unsigned short>::has_denorm;
- const bool numeric_limits<unsigned short>::has_denorm_loss;
- const bool numeric_limits<unsigned short>::is_iec559;
- const bool numeric_limits<unsigned short>::is_bounded;
- const bool numeric_limits<unsigned short>::is_modulo;
- const bool numeric_limits<unsigned short>::traps;
- const bool numeric_limits<unsigned short>::tinyness_before;
- const float_round_style numeric_limits<unsigned short>::round_style;
-
- const bool numeric_limits<int>::is_specialized;
- const int numeric_limits<int>::digits;
- const int numeric_limits<int>::digits10;
- const bool numeric_limits<int>::is_signed;
- const bool numeric_limits<int>::is_integer;
- const bool numeric_limits<int>::is_exact;
- const int numeric_limits<int>::radix;
- const int numeric_limits<int>::min_exponent;
- const int numeric_limits<int>::min_exponent10;
- const int numeric_limits<int>::max_exponent;
- const int numeric_limits<int>::max_exponent10;
- const bool numeric_limits<int>::has_infinity;
- const bool numeric_limits<int>::has_quiet_NaN;
- const bool numeric_limits<int>::has_signaling_NaN;
- const float_denorm_style numeric_limits<int>::has_denorm;
- const bool numeric_limits<int>::has_denorm_loss;
- const bool numeric_limits<int>::is_iec559;
- const bool numeric_limits<int>::is_bounded;
- const bool numeric_limits<int>::is_modulo;
- const bool numeric_limits<int>::traps;
- const bool numeric_limits<int>::tinyness_before;
- const float_round_style numeric_limits<int>::round_style;
-
- const bool numeric_limits<unsigned int>::is_specialized;
- const int numeric_limits<unsigned int>::digits;
- const int numeric_limits<unsigned int>::digits10;
- const bool numeric_limits<unsigned int>::is_signed;
- const bool numeric_limits<unsigned int>::is_integer;
- const bool numeric_limits<unsigned int>::is_exact;
- const int numeric_limits<unsigned int>::radix;
- const int numeric_limits<unsigned int>::min_exponent;
- const int numeric_limits<unsigned int>::min_exponent10;
- const int numeric_limits<unsigned int>::max_exponent;
- const int numeric_limits<unsigned int>::max_exponent10;
- const bool numeric_limits<unsigned int>::has_infinity;
- const bool numeric_limits<unsigned int>::has_quiet_NaN;
- const bool numeric_limits<unsigned int>::has_signaling_NaN;
- const float_denorm_style numeric_limits<unsigned int>::has_denorm;
- const bool numeric_limits<unsigned int>::has_denorm_loss;
- const bool numeric_limits<unsigned int>::is_iec559;
- const bool numeric_limits<unsigned int>::is_bounded;
- const bool numeric_limits<unsigned int>::is_modulo;
- const bool numeric_limits<unsigned int>::traps;
- const bool numeric_limits<unsigned int>::tinyness_before;
- const float_round_style numeric_limits<unsigned int>::round_style;
-
- const bool numeric_limits<long>::is_specialized;
- const int numeric_limits<long>::digits;
- const int numeric_limits<long>::digits10;
- const bool numeric_limits<long>::is_signed;
- const bool numeric_limits<long>::is_integer;
- const bool numeric_limits<long>::is_exact;
- const int numeric_limits<long>::radix;
- const int numeric_limits<long>::min_exponent;
- const int numeric_limits<long>::min_exponent10;
- const int numeric_limits<long>::max_exponent;
- const int numeric_limits<long>::max_exponent10;
- const bool numeric_limits<long>::has_infinity;
- const bool numeric_limits<long>::has_quiet_NaN;
- const bool numeric_limits<long>::has_signaling_NaN;
- const float_denorm_style numeric_limits<long>::has_denorm;
- const bool numeric_limits<long>::has_denorm_loss;
- const bool numeric_limits<long>::is_iec559;
- const bool numeric_limits<long>::is_bounded;
- const bool numeric_limits<long>::is_modulo;
- const bool numeric_limits<long>::traps;
- const bool numeric_limits<long>::tinyness_before;
- const float_round_style numeric_limits<long>::round_style;
-
- const bool numeric_limits<unsigned long>::is_specialized;
- const int numeric_limits<unsigned long>::digits;
- const int numeric_limits<unsigned long>::digits10;
- const bool numeric_limits<unsigned long>::is_signed;
- const bool numeric_limits<unsigned long>::is_integer;
- const bool numeric_limits<unsigned long>::is_exact;
- const int numeric_limits<unsigned long>::radix;
- const int numeric_limits<unsigned long>::min_exponent;
- const int numeric_limits<unsigned long>::min_exponent10;
- const int numeric_limits<unsigned long>::max_exponent;
- const int numeric_limits<unsigned long>::max_exponent10;
- const bool numeric_limits<unsigned long>::has_infinity;
- const bool numeric_limits<unsigned long>::has_quiet_NaN;
- const bool numeric_limits<unsigned long>::has_signaling_NaN;
- const float_denorm_style numeric_limits<unsigned long>::has_denorm;
- const bool numeric_limits<unsigned long>::has_denorm_loss;
- const bool numeric_limits<unsigned long>::is_iec559;
- const bool numeric_limits<unsigned long>::is_bounded;
- const bool numeric_limits<unsigned long>::is_modulo;
- const bool numeric_limits<unsigned long>::traps;
- const bool numeric_limits<unsigned long>::tinyness_before;
- const float_round_style numeric_limits<unsigned long>::round_style;
-
- const bool numeric_limits<float>::is_specialized;
- const int numeric_limits<float>::digits;
- const int numeric_limits<float>::digits10;
- const bool numeric_limits<float>::is_signed;
- const bool numeric_limits<float>::is_integer;
- const bool numeric_limits<float>::is_exact;
- const int numeric_limits<float>::radix;
- const int numeric_limits<float>::min_exponent;
- const int numeric_limits<float>::min_exponent10;
- const int numeric_limits<float>::max_exponent;
- const int numeric_limits<float>::max_exponent10;
- const bool numeric_limits<float>::has_infinity;
- const bool numeric_limits<float>::has_quiet_NaN;
- const bool numeric_limits<float>::has_signaling_NaN;
- const float_denorm_style numeric_limits<float>::has_denorm;
- const bool numeric_limits<float>::has_denorm_loss;
- const bool numeric_limits<float>::is_iec559;
- const bool numeric_limits<float>::is_bounded;
- const bool numeric_limits<float>::is_modulo;
- const bool numeric_limits<float>::traps;
- const bool numeric_limits<float>::tinyness_before;
- const float_round_style numeric_limits<float>::round_style;
-
- const bool numeric_limits<double>::is_specialized;
- const int numeric_limits<double>::digits;
- const int numeric_limits<double>::digits10;
- const bool numeric_limits<double>::is_signed;
- const bool numeric_limits<double>::is_integer;
- const bool numeric_limits<double>::is_exact;
- const int numeric_limits<double>::radix;
- const int numeric_limits<double>::min_exponent;
- const int numeric_limits<double>::min_exponent10;
- const int numeric_limits<double>::max_exponent;
- const int numeric_limits<double>::max_exponent10;
- const bool numeric_limits<double>::has_infinity;
- const bool numeric_limits<double>::has_quiet_NaN;
- const bool numeric_limits<double>::has_signaling_NaN;
- const float_denorm_style numeric_limits<double>::has_denorm;
- const bool numeric_limits<double>::has_denorm_loss;
- const bool numeric_limits<double>::is_iec559;
- const bool numeric_limits<double>::is_bounded;
- const bool numeric_limits<double>::is_modulo;
- const bool numeric_limits<double>::traps;
- const bool numeric_limits<double>::tinyness_before;
- const float_round_style numeric_limits<double>::round_style;
-
- const bool numeric_limits<long double>::is_specialized;
- const int numeric_limits<long double>::digits;
- const int numeric_limits<long double>::digits10;
- const bool numeric_limits<long double>::is_signed;
- const bool numeric_limits<long double>::is_integer;
- const bool numeric_limits<long double>::is_exact;
- const int numeric_limits<long double>::radix;
- const int numeric_limits<long double>::min_exponent;
- const int numeric_limits<long double>::min_exponent10;
- const int numeric_limits<long double>::max_exponent;
- const int numeric_limits<long double>::max_exponent10;
- const bool numeric_limits<long double>::has_infinity;
- const bool numeric_limits<long double>::has_quiet_NaN;
- const bool numeric_limits<long double>::has_signaling_NaN;
- const float_denorm_style numeric_limits<long double>::has_denorm;
- const bool numeric_limits<long double>::has_denorm_loss;
- const bool numeric_limits<long double>::is_iec559;
- const bool numeric_limits<long double>::is_bounded;
- const bool numeric_limits<long double>::is_modulo;
- const bool numeric_limits<long double>::traps;
- const bool numeric_limits<long double>::tinyness_before;
- const float_round_style numeric_limits<long double>::round_style;
-} // namespace std
-
-
diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in
index b09f33d2539..c9e86872504 100644
--- a/libstdc++-v3/testsuite/Makefile.in
+++ b/libstdc++-v3/testsuite/Makefile.in
@@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@
CLOCALE_H = @CLOCALE_H@
CMESSAGES_H = @CMESSAGES_H@
CPP = @CPP@
+CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
CSHADOW_FLAGS = @CSHADOW_FLAGS@
CSTDIO_H = @CSTDIO_H@
CXX = @CXX@
@@ -106,7 +107,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
LIBTOOL = @LIBTOOL@
-LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
OpenPOWER on IntegriCloud