Commit 3660e02f by Phil Edwards Committed by Phil Edwards

acinclude.m4 (GLIBCXX_ENABLE_HOSTED): #define _GLIBCXX_HOSTED appropriately.

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.

From-SVN: r71001
parent 742c0a4e
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> 2003-08-29 Nathan Myers <ncm@cantrip.org>
PR libstdc++/11990 PR libstdc++/11990
......
...@@ -1276,6 +1276,9 @@ dnl ...@@ -1276,6 +1276,9 @@ dnl
dnl Sets: dnl Sets:
dnl is_hosted (yes/no) dnl is_hosted (yes/no)
dnl dnl
dnl Defines:
dnl _GLIBCXX_HOSTED (always defined, either to 1 or 0)
dnl
AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [ AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [
AC_ARG_ENABLE([hosted-libstdcxx], AC_ARG_ENABLE([hosted-libstdcxx],
AC_HELP_STRING([--disable-hosted-libstdcxx], AC_HELP_STRING([--disable-hosted-libstdcxx],
...@@ -1284,12 +1287,16 @@ AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [ ...@@ -1284,12 +1287,16 @@ AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [
if test "$enable_hosted_libstdcxx" = no; then if test "$enable_hosted_libstdcxx" = no; then
AC_MSG_NOTICE([Only freestanding libraries will be built]) AC_MSG_NOTICE([Only freestanding libraries will be built])
is_hosted=no is_hosted=no
hosted_define=0
enable_abi_check=no enable_abi_check=no
enable_libstdcxx_pch=no enable_libstdcxx_pch=no
else else
is_hosted=yes is_hosted=yes
hosted_define=1
fi fi
GLIBCXX_CONDITIONAL(GLIBCXX_HOSTED, test $is_hosted = yes) 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.])
]) ])
......
...@@ -1289,6 +1289,9 @@ dnl ...@@ -1289,6 +1289,9 @@ dnl
dnl Sets: dnl Sets:
dnl is_hosted (yes/no) dnl is_hosted (yes/no)
dnl dnl
dnl Defines:
dnl _GLIBCXX_HOSTED (always defined, either to 1 or 0)
dnl
AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [ AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [
AC_ARG_ENABLE([hosted-libstdcxx], AC_ARG_ENABLE([hosted-libstdcxx],
AC_HELP_STRING([--disable-hosted-libstdcxx], AC_HELP_STRING([--disable-hosted-libstdcxx],
...@@ -1297,12 +1300,16 @@ AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [ ...@@ -1297,12 +1300,16 @@ AC_DEFUN(GLIBCXX_ENABLE_HOSTED, [
if test "$enable_hosted_libstdcxx" = no; then if test "$enable_hosted_libstdcxx" = no; then
AC_MSG_NOTICE([Only freestanding libraries will be built]) AC_MSG_NOTICE([Only freestanding libraries will be built])
is_hosted=no is_hosted=no
hosted_define=0
enable_abi_check=no enable_abi_check=no
enable_libstdcxx_pch=no enable_libstdcxx_pch=no
else else
is_hosted=yes is_hosted=yes
hosted_define=1
fi fi
GLIBCXX_CONDITIONAL(GLIBCXX_HOSTED, test $is_hosted = yes) 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.])
]) ])
......
...@@ -878,6 +878,9 @@ ...@@ -878,6 +878,9 @@
/* Define to 1 if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS #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. */ /* Define if the compiler is configured for setjmp/longjmp exceptions. */
#undef _GLIBCXX_SJLJ_EXCEPTIONS #undef _GLIBCXX_SJLJ_EXCEPTIONS
// //
......
...@@ -4819,13 +4819,20 @@ fi; ...@@ -4819,13 +4819,20 @@ fi;
{ echo "$as_me:$LINENO: Only freestanding libraries will be built" >&5 { echo "$as_me:$LINENO: Only freestanding libraries will be built" >&5
echo "$as_me: Only freestanding libraries will be built" >&6;} echo "$as_me: Only freestanding libraries will be built" >&6;}
is_hosted=no is_hosted=no
hosted_define=0
enable_abi_check=no enable_abi_check=no
enable_libstdcxx_pch=no enable_libstdcxx_pch=no
else else
is_hosted=yes is_hosted=yes
hosted_define=1
fi fi
cat >>confdefs.h <<_ACEOF
#define _GLIBCXX_HOSTED $hosted_define
_ACEOF
# Check for support bits and g++ features that don't require linking. # Check for support bits and g++ features that don't require linking.
...@@ -4862,7 +4869,7 @@ fi; ...@@ -4862,7 +4869,7 @@ fi;
# #
# Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style.
cat > conftest.$ac_ext << EOF cat > conftest.$ac_ext << EOF
#line 4865 "configure" #line 4872 "configure"
struct S { ~S(); }; struct S { ~S(); };
void bar(); void bar();
void foo() void foo()
...@@ -273,6 +273,14 @@ options</a></h1> ...@@ -273,6 +273,14 @@ options</a></h1>
testsuite. testsuite.
</p> </p>
</dd> </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> </dl>
<p>Return <a href="#top">to the top of the page</a> or <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>. <a href="http://gcc.gnu.org/libstdc++/">to the libstdc++ homepage</a>.
......
// -*- C++ -*- std::terminate handler // -*- C++ -*- std::terminate handler
// Copyright (C) 2002 Free Software Foundation // Copyright (C) 2002, 2003 Free Software Foundation
// //
// This file is part of GCC. // This file is part of GCC.
// //
...@@ -28,14 +28,24 @@ ...@@ -28,14 +28,24 @@
// the GNU General Public License. // the GNU General Public License.
#include "unwind-cxx.h" #include "unwind-cxx.h"
#include <bits/c++config.h>
/* We default to the talkative, informative handler. This pulls in the /* We default to the talkative, informative handler in a normal hosted
demangler, the dyn-string utilities, and elements of the I/O library. library. This pulls in the demangler, the dyn-string utilities, and
For a low-memory environment, you can return to the earlier "silent death" elements of the I/O library. For a low-memory environment, you can return
handler by including <cstdlib>, initializg to "std::abort", and rebuilding to the earlier "silent death" handler by including <cstdlib>, initializing
the library. */ 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. */ /* The current installed user handler. */
std::terminate_handler __cxxabiv1::__terminate_handler = std::terminate_handler __cxxabiv1::__terminate_handler =
#if _GLIBCXX_HOSTED
__gnu_cxx::__verbose_terminate_handler; __gnu_cxx::__verbose_terminate_handler;
#else
std::abort;
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment