summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorpme <pme@138bc75d-0d04-0410-961f-82ee72b054a4>2003-09-02 18:46:54 +0000
committerpme <pme@138bc75d-0d04-0410-961f-82ee72b054a4>2003-09-02 18:46:54 +0000
commitc3bc94d98e6c970517938ecc0ade4ecc2fc82671 (patch)
tree6b410b5f9b983f63fb719aae0356a28474f0f73c /libstdc++-v3
parent09a84b984997013facef0c34368eaa60d1210c6c (diff)
downloadgcc-c3bc94d98e6c970517938ecc0ade4ecc2fc82671.tar.gz
2003-09-02 Phil Edwards <phil@codesourcery.com>
* acinclude.m4 (GLIBCXX_ENABLE_HOSTED): #define _GLIBCXX_HOSTED appropriately. * config.h.in: Add _GLIBCXX_HOSTED. * libsupc++/eh_term_handler.cc: Test it here; initialize __terminate_handler to std::abort if freestanding. * aclocal.m4, configure: Regenerated. * docs/html/configopts.html: Document --disable-hosted-libstdcxx. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71001 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog10
-rw-r--r--libstdc++-v3/acinclude.m47
-rw-r--r--libstdc++-v3/aclocal.m47
-rw-r--r--libstdc++-v3/config.h.in3
-rwxr-xr-xlibstdc++-v3/configure9
-rw-r--r--libstdc++-v3/docs/html/configopts.html10
-rw-r--r--libstdc++-v3/libsupc++/eh_term_handler.cc24
7 files changed, 61 insertions, 9 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 139a75382e5..2d96e45cb3a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,13 @@
+2003-09-02 Phil Edwards <phil@codesourcery.com>
+
+ * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): #define _GLIBCXX_HOSTED
+ appropriately.
+ * config.h.in: Add _GLIBCXX_HOSTED.
+ * libsupc++/eh_term_handler.cc: Test it here; initialize
+ __terminate_handler to std::abort if freestanding.
+ * aclocal.m4, configure: Regenerated.
+ * docs/html/configopts.html: Document --disable-hosted-libstdcxx.
+
2003-08-29 Nathan Myers <ncm@cantrip.org>
PR libstdc++/11990
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 5cc4f747313..0ba24bad7fd 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1276,6 +1276,9 @@ dnl
dnl Sets:
dnl is_hosted (yes/no)
dnl
+dnl Defines:
+dnl _GLIBCXX_HOSTED (always defined, either to 1 or 0)
+dnl
AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [
AC_ARG_ENABLE([hosted-libstdcxx],
AC_HELP_STRING([--disable-hosted-libstdcxx],
@@ -1284,12 +1287,16 @@ AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [
if test "$enable_hosted_libstdcxx" = no; then
AC_MSG_NOTICE([Only freestanding libraries will be built])
is_hosted=no
+ hosted_define=0
enable_abi_check=no
enable_libstdcxx_pch=no
else
is_hosted=yes
+ hosted_define=1
fi
GLIBCXX_CONDITIONAL(GLIBCXX_HOSTED, test $is_hosted = yes)
+ AC_DEFINE_UNQUOTED(_GLIBCXX_HOSTED, $hosted_define,
+ [Define to 1 if a full hosted library is built, or 0 if freestanding.])
])
diff --git a/libstdc++-v3/aclocal.m4 b/libstdc++-v3/aclocal.m4
index 47bcaa7da6b..42399080ba3 100644
--- a/libstdc++-v3/aclocal.m4
+++ b/libstdc++-v3/aclocal.m4
@@ -1289,6 +1289,9 @@ dnl
dnl Sets:
dnl is_hosted (yes/no)
dnl
+dnl Defines:
+dnl _GLIBCXX_HOSTED (always defined, either to 1 or 0)
+dnl
AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [
AC_ARG_ENABLE([hosted-libstdcxx],
AC_HELP_STRING([--disable-hosted-libstdcxx],
@@ -1297,12 +1300,16 @@ AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [
if test "$enable_hosted_libstdcxx" = no; then
AC_MSG_NOTICE([Only freestanding libraries will be built])
is_hosted=no
+ hosted_define=0
enable_abi_check=no
enable_libstdcxx_pch=no
else
is_hosted=yes
+ hosted_define=1
fi
GLIBCXX_CONDITIONAL(GLIBCXX_HOSTED, test $is_hosted = yes)
+ AC_DEFINE_UNQUOTED(_GLIBCXX_HOSTED, $hosted_define,
+ [Define to 1 if a full hosted library is built, or 0 if freestanding.])
])
diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in
index d61a5845989..0e6bb080c3b 100644
--- a/libstdc++-v3/config.h.in
+++ b/libstdc++-v3/config.h.in
@@ -878,6 +878,9 @@
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
+/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
+#undef _GLIBCXX_HOSTED
+
/* Define if the compiler is configured for setjmp/longjmp exceptions. */
#undef _GLIBCXX_SJLJ_EXCEPTIONS
//
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index bd222ff37f5..e9e51e36ad6 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -4819,13 +4819,20 @@ fi;
{ echo "$as_me:$LINENO: Only freestanding libraries will be built" >&5
echo "$as_me: Only freestanding libraries will be built" >&6;}
is_hosted=no
+ hosted_define=0
enable_abi_check=no
enable_libstdcxx_pch=no
else
is_hosted=yes
+ hosted_define=1
fi
+cat >>confdefs.h <<_ACEOF
+#define _GLIBCXX_HOSTED $hosted_define
+_ACEOF
+
+
# Check for support bits and g++ features that don't require linking.
@@ -4862,7 +4869,7 @@ fi;
#
# Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style.
cat > conftest.$ac_ext << EOF
-#line 4865 "configure"
+#line 4872 "configure"
struct S { ~S(); };
void bar();
void foo()
diff --git a/libstdc++-v3/docs/html/configopts.html b/libstdc++-v3/docs/html/configopts.html
index 2f16b7a6b2c..2cfec4475c4 100644
--- a/libstdc++-v3/docs/html/configopts.html
+++ b/libstdc++-v3/docs/html/configopts.html
@@ -146,7 +146,7 @@ options</a></h1>
<dt><code>--enable-libstdcxx-debug </code></dt>
<dd><p>Build separate debug libraries in addition to what is normally built.
- By default, the debug libraries are compiled with
+ By default, the debug libraries are compiled with
<code> CXXFLAGS='-g3 -O0'</code>
, are installed in <code>${libdir}/debug</code>, and have the
same names and versioning information as the non-debug
@@ -273,6 +273,14 @@ options</a></h1>
testsuite.
</p>
</dd>
+
+ <dt><code>--disable-hosted-libstdcxx </code></dt>
+ <dd><p>By default, a complete <em>hosted</em> C++ library is built. The
+ C++ Standard also describes a <em>freestanding</em> environment,
+ in which only a minimal set of headers are provided. This option
+ builds such an environment.
+ </p>
+ </dd>
</dl>
<p>Return <a href="#top">to the top of the page</a> or
<a href="http://gcc.gnu.org/libstdc++/">to the libstdc++ homepage</a>.
diff --git a/libstdc++-v3/libsupc++/eh_term_handler.cc b/libstdc++-v3/libsupc++/eh_term_handler.cc
index 15a2cbd92d6..f4f1193e71a 100644
--- a/libstdc++-v3/libsupc++/eh_term_handler.cc
+++ b/libstdc++-v3/libsupc++/eh_term_handler.cc
@@ -1,5 +1,5 @@
// -*- C++ -*- std::terminate handler
-// Copyright (C) 2002 Free Software Foundation
+// Copyright (C) 2002, 2003 Free Software Foundation
//
// This file is part of GCC.
//
@@ -28,14 +28,24 @@
// the GNU General Public License.
#include "unwind-cxx.h"
+#include <bits/c++config.h>
-/* We default to the talkative, informative handler. This pulls in the
- demangler, the dyn-string utilities, and elements of the I/O library.
- For a low-memory environment, you can return to the earlier "silent death"
- handler by including <cstdlib>, initializg to "std::abort", and rebuilding
- the library. */
+/* We default to the talkative, informative handler in a normal hosted
+ library. This pulls in the demangler, the dyn-string utilities, and
+ elements of the I/O library. For a low-memory environment, you can return
+ to the earlier "silent death" handler by including <cstdlib>, initializing
+ to "std::abort", and rebuilding the library. In a freestanding mode, we
+ default to this latter approach. */
+
+#if ! _GLIBCXX_HOSTED
+# include <cstdlib>
+#endif
/* The current installed user handler. */
std::terminate_handler __cxxabiv1::__terminate_handler =
- __gnu_cxx::__verbose_terminate_handler;
+#if _GLIBCXX_HOSTED
+ __gnu_cxx::__verbose_terminate_handler;
+#else
+ std::abort;
+#endif