From d866c65d2fa0c717d257256d71dccc00b8d26ebd Mon Sep 17 00:00:00 2001
From: redi
Date: Sun, 9 Sep 2012 23:08:48 +0000
Subject: [PATCH] 2012-09-10 Sebastian Huber
Jonathan Wakely
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 | 13 ++++++++
libstdc++-v3/acinclude.m4 | 25 ++++++++++++++++
libstdc++-v3/config.h.in | 3 ++
libstdc++-v3/configure | 46 ++++++++++++++++++++++-------
libstdc++-v3/configure.ac | 3 ++
libstdc++-v3/doc/html/manual/configure.html | 8 +++++
libstdc++-v3/doc/xml/manual/configure.xml | 13 ++++++++
libstdc++-v3/libsupc++/eh_term_handler.cc | 18 +++++------
libstdc++-v3/libsupc++/pure.cc | 4 +--
9 files changed, 111 insertions(+), 22 deletions(-)
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index a2ed07e..4ecedf8 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,16 @@
+2012-09-10 Sebastian Huber
+ Jonathan Wakely
+
+ 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
PR bootstrap/54419
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index c9b8d37..794df5c 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -2317,6 +2317,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
dnl like numeric_limits<> specializations are always available.
diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in
index 075c9f8..0667bbf 100644
--- a/libstdc++-v3/config.h.in
+++ b/libstdc++-v3/config.h.in
@@ -845,6 +845,9 @@
/* 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
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index b29ca1b..ba471ad 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -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
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
struct same
{ typedef T2 type; };
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index 555f380..c09c685 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -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)
diff --git a/libstdc++-v3/doc/html/manual/configure.html b/libstdc++-v3/doc/html/manual/configure.html
index a721df2..ec4e78b 100644
--- a/libstdc++-v3/doc/html/manual/configure.html
+++ b/libstdc++-v3/doc/html/manual/configure.html
@@ -215,4 +215,12 @@
freestanding environment, in which only a
minimal set of headers are provided. This option builds such an
environment.
+
--disable-libstdcxx-verbose
+ 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.