OSDN Git Service

2003-09-02 Phil Edwards <phil@codesourcery.com>
authorpme <pme@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 2 Sep 2003 18:46:54 +0000 (18:46 +0000)
committerpme <pme@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 2 Sep 2003 18:46:54 +0000 (18:46 +0000)
* 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

libstdc++-v3/ChangeLog
libstdc++-v3/acinclude.m4
libstdc++-v3/aclocal.m4
libstdc++-v3/config.h.in
libstdc++-v3/configure
libstdc++-v3/docs/html/configopts.html
libstdc++-v3/libsupc++/eh_term_handler.cc

index 139a753..2d96e45 100644 (file)
@@ -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      
index 5cc4f74..0ba24ba 100644 (file)
@@ -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.])
 ])
 
 
index 47bcaa7..4239908 100644 (file)
@@ -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.])
 ])
 
 
index d61a584..0e6bb08 100644 (file)
 /* 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
 //
index bd222ff..e9e51e3 100755 (executable)
@@ -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()
index 2f16b7a..2cfec44 100644 (file)
@@ -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>.
index 15a2cbd..f4f1193 100644 (file)
@@ -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.
 //
 // 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