* 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
+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
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],
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.])
])
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],
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.])
])
/* 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
//
{ 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.
#
# 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()
<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
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>.
// -*- C++ -*- std::terminate handler
-// Copyright (C) 2002 Free Software Foundation
+// Copyright (C) 2002, 2003 Free Software Foundation
//
// This file is part of GCC.
//
// 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