]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2012-09-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 9 Sep 2012 23:08:48 +0000 (23:08 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 9 Sep 2012 23:08:48 +0000 (23:08 +0000)
    Jonathan Wakely  <jwakely.gcc@gmail.com>

PR libstdc++/43852
* acinclude.m4 (GLIBCXX_ENABLE_VERBOSE): Define.
* configure.ac (GLIBCXX_ENABLE_VERBOSE): Use it.
* config.h.in: Regenerate.
* configure: Likewise.
* libsupc++/eh_term_handler.cc (_GLIBCXX_VERBOSE): Check new macro.
* libsupc++/pure.cc (_GLIBCXX_VERBOSE): Likewise.
* doc/xml/manual/configure.xml (--disable-libstdcxx-verbose): Document.
* doc/html/manual/configure.html: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@191121 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/acinclude.m4
libstdc++-v3/config.h.in
libstdc++-v3/configure
libstdc++-v3/configure.ac
libstdc++-v3/doc/html/manual/configure.html
libstdc++-v3/doc/xml/manual/configure.xml
libstdc++-v3/libsupc++/eh_term_handler.cc
libstdc++-v3/libsupc++/pure.cc

index a2ed07e018a9ad42e69a3a290f176331ebc0206e..4ecedf818bd1326ed8425400dad7dcb504bc6bb5 100644 (file)
@@ -1,3 +1,16 @@
+2012-09-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+           Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       PR libstdc++/43852
+       * acinclude.m4 (GLIBCXX_ENABLE_VERBOSE): Define.
+       * configure.ac (GLIBCXX_ENABLE_VERBOSE): Use it.
+       * config.h.in: Regenerate.
+       * configure: Likewise.
+       * libsupc++/eh_term_handler.cc (_GLIBCXX_VERBOSE): Check new macro.
+       * libsupc++/pure.cc (_GLIBCXX_VERBOSE): Likewise.
+       * doc/xml/manual/configure.xml (--disable-libstdcxx-verbose): Document.
+       * doc/html/manual/configure.html: Regenerate.
+
 2012-09-09  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
        PR bootstrap/54419
index c9b8d37e86a08f45cf8bd9d52fb01d171486d2ee..794df5c22be877ae13fc9fa8ef9fd45c24744490 100644 (file)
@@ -2316,6 +2316,31 @@ AC_DEFUN([GLIBCXX_ENABLE_HOSTED], [
 ])
 
 
+dnl
+dnl Check if the user wants a non-verbose library implementation.
+dnl
+dnl --disable-libstdcxx-verbose will turn off descriptive messages to
+dnl standard error on termination.
+dnl
+dnl Defines:
+dnl  _GLIBCXX_VERBOSE (always defined, either to 1 or 0)
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_VERBOSE], [
+  AC_ARG_ENABLE([libstdcxx-verbose],
+    AC_HELP_STRING([--disable-libstdcxx-verbose],
+                  [disable termination messages to standard error]),,
+                  [enable_libstdcxx_verbose=yes])
+  if test x"$enable_libstdcxx_verbose" = xyes; then
+    verbose_define=1
+  else
+    AC_MSG_NOTICE([verbose termination messages are disabled])
+    verbose_define=0
+  fi
+  AC_DEFINE_UNQUOTED(_GLIBCXX_VERBOSE, $verbose_define,
+    [Define to 1 if a verbose library is built, or 0 otherwise.])
+])
+
+
 dnl
 dnl Check for template specializations for the 'long long' type.
 dnl The result determines only whether 'long long' I/O is enabled; things
index 075c9f814a8d20c9dcd8ed230e5ab00a48d3e70d..0667bbf7df890dbf3ffcae5fe656a50c0ce8fe1c 100644 (file)
 /* Define if code specialized for wchar_t should be used. */
 #undef _GLIBCXX_USE_WCHAR_T
 
+/* Define to 1 if a verbose library is built, or 0 otherwise. */
+#undef _GLIBCXX_VERBOSE
+
 /* Defined if as can handle rdrand. */
 #undef _GLIBCXX_X86_RDRAND
 
index b29ca1b942c118083f7601fa8b4cff62ad47eff7..ba471ad3b450fbe85106a1728bbbad771e257c2d 100755 (executable)
@@ -843,6 +843,7 @@ enable_fast_install
 with_gnu_ld
 enable_libtool_lock
 enable_hosted_libstdcxx
+enable_libstdcxx_verbose
 enable_sjlj_exceptions
 enable_libstdcxx_pch
 enable_cstdio
@@ -1517,6 +1518,8 @@ Optional Features:
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-hosted-libstdcxx
                           only build freestanding C++ runtime support
+  --disable-libstdcxx-verbose
+                          disable termination messages to standard error
   --enable-sjlj-exceptions
                           force use of builtin_setjmp for exceptions
                           [default=auto]
@@ -11504,7 +11507,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11507 "configure"
+#line 11510 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11610,7 +11613,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11613 "configure"
+#line 11616 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -14936,6 +14939,29 @@ _ACEOF
 
 
 
+# Enable descriptive messages to standard output on termination.
+
+  # Check whether --enable-libstdcxx-verbose was given.
+if test "${enable_libstdcxx_verbose+set}" = set; then :
+  enableval=$enable_libstdcxx_verbose;
+else
+  enable_libstdcxx_verbose=yes
+fi
+
+  if test x"$enable_libstdcxx_verbose" = xyes; then
+    verbose_define=1
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: verbose termination messages are disabled" >&5
+$as_echo "$as_me: verbose termination messages are disabled" >&6;}
+    verbose_define=0
+  fi
+
+cat >>confdefs.h <<_ACEOF
+#define _GLIBCXX_VERBOSE $verbose_define
+_ACEOF
+
+
+
 # Enable compiler support that doesn't require linking.
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exception model to use" >&5
@@ -14968,7 +14994,7 @@ fi
     #
     # Fake what AC_TRY_COMPILE does.  XXX Look at redoing this new-style.
     cat > conftest.$ac_ext << EOF
-#line 14971 "configure"
+#line 14997 "configure"
 struct S { ~S(); };
 void bar();
 void foo()
@@ -15303,7 +15329,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
   # Fake what AC_TRY_COMPILE does.
 
     cat > conftest.$ac_ext << EOF
-#line 15306 "configure"
+#line 15332 "configure"
 int main()
 {
   typedef bool atomic_type;
@@ -15338,7 +15364,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
     rm -f conftest*
 
     cat > conftest.$ac_ext << EOF
-#line 15341 "configure"
+#line 15367 "configure"
 int main()
 {
   typedef short atomic_type;
@@ -15373,7 +15399,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
     rm -f conftest*
 
     cat > conftest.$ac_ext << EOF
-#line 15376 "configure"
+#line 15402 "configure"
 int main()
 {
   // NB: _Atomic_word not necessarily int.
@@ -15409,7 +15435,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
     rm -f conftest*
 
     cat > conftest.$ac_ext << EOF
-#line 15412 "configure"
+#line 15438 "configure"
 int main()
 {
   typedef long long atomic_type;
@@ -15488,7 +15514,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu
   # unnecessary for this test.
 
     cat > conftest.$ac_ext << EOF
-#line 15491 "configure"
+#line 15517 "configure"
 int main()
 {
   _Decimal32 d1;
@@ -15530,7 +15556,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
   # unnecessary for this test.
 
     cat > conftest.$ac_ext << EOF
-#line 15533 "configure"
+#line 15559 "configure"
 template<typename T1, typename T2>
   struct same
   { typedef T2 type; };
@@ -15564,7 +15590,7 @@ $as_echo "$enable_int128" >&6; }
     rm -f conftest*
 
     cat > conftest.$ac_ext << EOF
-#line 15567 "configure"
+#line 15593 "configure"
 template<typename T1, typename T2>
   struct same
   { typedef T2 type; };
index 555f380495bc299fb970c5447c4a3d679dd90137..c09c685e099dcf2de89f9087a3d8cd9df7088c50 100644 (file)
@@ -104,6 +104,9 @@ postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
 ## than just ignoring the results.  Faster /and/ more correct, win win.
 GLIBCXX_ENABLE_HOSTED
 
+# Enable descriptive messages to standard output on termination.
+GLIBCXX_ENABLE_VERBOSE
+
 # Enable compiler support that doesn't require linking.
 GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
 GLIBCXX_ENABLE_PCH($is_hosted)
index a721df2cd757fcb6bb80ac0e719aa58209e342f5..ec4e78ba7fcb726d023a62716c15177b42b2f9e1 100644 (file)
      <span class="emphasis"><em>freestanding</em></span> environment, in which only a
      minimal set of headers are provided.  This option builds such an
      environment.
+     </p></dd><dt><span class="term"><code class="code">--disable-libstdcxx-verbose</code></span></dt><dd><p>
+     By default, the library is configured to write descriptive messages
+     to standard error for certain events such as calling a pure virtual
+     function or the invocation of the standard terminate handler.  Those
+     messages cause the library to depend on the demangler and standard I/O
+     facilites, which might be undesirable in a low-memory environment or
+     when standard error is not available.  This option disables those
+     messages.  This option does not change the library ABI.
      </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Setup </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Make</td></tr></table></div></body></html>
index 83443ef4c1f2f8267b2457f24e091a4108945f15..bc98d7a16e95afa919420604094818784d27289a 100644 (file)
      </para>
  </listitem></varlistentry>
 
+<varlistentry><term><code>--disable-libstdcxx-verbose</code></term>
+ <listitem>
+   <para>
+     By default, the library is configured to write descriptive messages
+     to standard error for certain events such as calling a pure virtual
+     function or the invocation of the standard terminate handler.  Those
+     messages cause the library to depend on the demangler and standard I/O
+     facilites, which might be undesirable in a low-memory environment or
+     when standard error is not available.  This option disables those
+     messages.  This option does not change the library ABI.
+   </para>
+ </listitem></varlistentry>
+
 </variablelist>
 
 </section>
index 52a074596fe9460ccc9a064d84beea576bc84606..f4bf2a30821bde70a9a8f8f0910323aff52cc839 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*- std::terminate handler
-// Copyright (C) 2002, 2003, 2009 Free Software Foundation
+// Copyright (C) 2002-2012 Free Software Foundation
 //
 // This file is part of GCC.
 //
 /* 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
+   to the earlier "silent death" handler by configuring GCC with
+   --disable-libstdcxx-verbose and rebuilding the library.
+   In a freestanding environment, we default to this latter approach.  */
 
+#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE
 /* The current installed user handler.  */
 std::terminate_handler __cxxabiv1::__terminate_handler =
-#if _GLIBCXX_HOSTED
        __gnu_cxx::__verbose_terminate_handler;
 #else
-       std::abort;
+# include <cstdlib>
+/* The current installed user handler.  */
+std::terminate_handler __cxxabiv1::__terminate_handler = std::abort;
 #endif
 
index 4879e59de3565709823a910cbbc066f11ebaa21e..a7745979be7211058df377f451c0f0e2f7b1ff1b 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*- 
-// Copyright (C) 2000, 2001, 2009, 2011 Free Software Foundation
+// Copyright (C) 2000-2012 Free Software Foundation
 //
 // This file is part of GCC.
 //
@@ -26,7 +26,7 @@
 #include <cxxabi.h>
 #include "unwind-cxx.h"
 
-#if _GLIBCXX_HOSTED
+#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE
 #ifdef _GLIBCXX_HAVE_UNISTD_H
 # include <unistd.h>
 # define writestr(str) write(2, str, sizeof(str) - 1)