mirror of git://gcc.gnu.org/git/gcc.git
re PR libstdc++/43852 (Embedded systems friendly libstdc++)
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. Co-Authored-By: Jonathan Wakely <jwakely.gcc@gmail.com> From-SVN: r191121
This commit is contained in:
parent
82a0aae0ff
commit
5a86d36fcc
|
|
@ -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>
|
2012-09-09 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||||
|
|
||||||
PR bootstrap/54419
|
PR bootstrap/54419
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
dnl Check for template specializations for the 'long long' type.
|
dnl Check for template specializations for the 'long long' type.
|
||||||
dnl The result determines only whether 'long long' I/O is enabled; things
|
dnl The result determines only whether 'long long' I/O is enabled; things
|
||||||
|
|
|
||||||
|
|
@ -845,6 +845,9 @@
|
||||||
/* Define if code specialized for wchar_t should be used. */
|
/* Define if code specialized for wchar_t should be used. */
|
||||||
#undef _GLIBCXX_USE_WCHAR_T
|
#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. */
|
/* Defined if as can handle rdrand. */
|
||||||
#undef _GLIBCXX_X86_RDRAND
|
#undef _GLIBCXX_X86_RDRAND
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -843,6 +843,7 @@ enable_fast_install
|
||||||
with_gnu_ld
|
with_gnu_ld
|
||||||
enable_libtool_lock
|
enable_libtool_lock
|
||||||
enable_hosted_libstdcxx
|
enable_hosted_libstdcxx
|
||||||
|
enable_libstdcxx_verbose
|
||||||
enable_sjlj_exceptions
|
enable_sjlj_exceptions
|
||||||
enable_libstdcxx_pch
|
enable_libstdcxx_pch
|
||||||
enable_cstdio
|
enable_cstdio
|
||||||
|
|
@ -1517,6 +1518,8 @@ Optional Features:
|
||||||
--disable-libtool-lock avoid locking (might break parallel builds)
|
--disable-libtool-lock avoid locking (might break parallel builds)
|
||||||
--disable-hosted-libstdcxx
|
--disable-hosted-libstdcxx
|
||||||
only build freestanding C++ runtime support
|
only build freestanding C++ runtime support
|
||||||
|
--disable-libstdcxx-verbose
|
||||||
|
disable termination messages to standard error
|
||||||
--enable-sjlj-exceptions
|
--enable-sjlj-exceptions
|
||||||
force use of builtin_setjmp for exceptions
|
force use of builtin_setjmp for exceptions
|
||||||
[default=auto]
|
[default=auto]
|
||||||
|
|
@ -11504,7 +11507,7 @@ else
|
||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11507 "configure"
|
#line 11510 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
|
|
@ -11610,7 +11613,7 @@ else
|
||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11613 "configure"
|
#line 11616 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_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.
|
# Enable compiler support that doesn't require linking.
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for exception model to use" >&5
|
{ $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.
|
# Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style.
|
||||||
cat > conftest.$ac_ext << EOF
|
cat > conftest.$ac_ext << EOF
|
||||||
#line 14971 "configure"
|
#line 14997 "configure"
|
||||||
struct S { ~S(); };
|
struct S { ~S(); };
|
||||||
void bar();
|
void bar();
|
||||||
void foo()
|
void foo()
|
||||||
|
|
@ -15303,7 +15329,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
|
||||||
# Fake what AC_TRY_COMPILE does.
|
# Fake what AC_TRY_COMPILE does.
|
||||||
|
|
||||||
cat > conftest.$ac_ext << EOF
|
cat > conftest.$ac_ext << EOF
|
||||||
#line 15306 "configure"
|
#line 15332 "configure"
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef bool atomic_type;
|
typedef bool atomic_type;
|
||||||
|
|
@ -15338,7 +15364,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
|
||||||
rm -f conftest*
|
rm -f conftest*
|
||||||
|
|
||||||
cat > conftest.$ac_ext << EOF
|
cat > conftest.$ac_ext << EOF
|
||||||
#line 15341 "configure"
|
#line 15367 "configure"
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef short atomic_type;
|
typedef short atomic_type;
|
||||||
|
|
@ -15373,7 +15399,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
|
||||||
rm -f conftest*
|
rm -f conftest*
|
||||||
|
|
||||||
cat > conftest.$ac_ext << EOF
|
cat > conftest.$ac_ext << EOF
|
||||||
#line 15376 "configure"
|
#line 15402 "configure"
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// NB: _Atomic_word not necessarily int.
|
// NB: _Atomic_word not necessarily int.
|
||||||
|
|
@ -15409,7 +15435,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
|
||||||
rm -f conftest*
|
rm -f conftest*
|
||||||
|
|
||||||
cat > conftest.$ac_ext << EOF
|
cat > conftest.$ac_ext << EOF
|
||||||
#line 15412 "configure"
|
#line 15438 "configure"
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef long long atomic_type;
|
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.
|
# unnecessary for this test.
|
||||||
|
|
||||||
cat > conftest.$ac_ext << EOF
|
cat > conftest.$ac_ext << EOF
|
||||||
#line 15491 "configure"
|
#line 15517 "configure"
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
_Decimal32 d1;
|
_Decimal32 d1;
|
||||||
|
|
@ -15530,7 +15556,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||||
# unnecessary for this test.
|
# unnecessary for this test.
|
||||||
|
|
||||||
cat > conftest.$ac_ext << EOF
|
cat > conftest.$ac_ext << EOF
|
||||||
#line 15533 "configure"
|
#line 15559 "configure"
|
||||||
template<typename T1, typename T2>
|
template<typename T1, typename T2>
|
||||||
struct same
|
struct same
|
||||||
{ typedef T2 type; };
|
{ typedef T2 type; };
|
||||||
|
|
@ -15564,7 +15590,7 @@ $as_echo "$enable_int128" >&6; }
|
||||||
rm -f conftest*
|
rm -f conftest*
|
||||||
|
|
||||||
cat > conftest.$ac_ext << EOF
|
cat > conftest.$ac_ext << EOF
|
||||||
#line 15567 "configure"
|
#line 15593 "configure"
|
||||||
template<typename T1, typename T2>
|
template<typename T1, typename T2>
|
||||||
struct same
|
struct same
|
||||||
{ typedef T2 type; };
|
{ typedef T2 type; };
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,9 @@ postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
|
||||||
## than just ignoring the results. Faster /and/ more correct, win win.
|
## than just ignoring the results. Faster /and/ more correct, win win.
|
||||||
GLIBCXX_ENABLE_HOSTED
|
GLIBCXX_ENABLE_HOSTED
|
||||||
|
|
||||||
|
# Enable descriptive messages to standard output on termination.
|
||||||
|
GLIBCXX_ENABLE_VERBOSE
|
||||||
|
|
||||||
# Enable compiler support that doesn't require linking.
|
# Enable compiler support that doesn't require linking.
|
||||||
GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
|
GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
|
||||||
GLIBCXX_ENABLE_PCH($is_hosted)
|
GLIBCXX_ENABLE_PCH($is_hosted)
|
||||||
|
|
|
||||||
|
|
@ -215,4 +215,12 @@
|
||||||
<span class="emphasis"><em>freestanding</em></span> environment, in which only a
|
<span class="emphasis"><em>freestanding</em></span> environment, in which only a
|
||||||
minimal set of headers are provided. This option builds such an
|
minimal set of headers are provided. This option builds such an
|
||||||
environment.
|
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>
|
</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>
|
||||||
|
|
|
||||||
|
|
@ -370,6 +370,19 @@
|
||||||
</para>
|
</para>
|
||||||
</listitem></varlistentry>
|
</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>
|
</variablelist>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// -*- C++ -*- std::terminate handler
|
// -*- 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.
|
// This file is part of GCC.
|
||||||
//
|
//
|
||||||
|
|
@ -28,19 +28,17 @@
|
||||||
/* We default to the talkative, informative handler in a normal hosted
|
/* We default to the talkative, informative handler in a normal hosted
|
||||||
library. This pulls in the demangler, the dyn-string utilities, and
|
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
|
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 the earlier "silent death" handler by configuring GCC with
|
||||||
to "std::abort", and rebuilding the library. In a freestanding mode, we
|
--disable-libstdcxx-verbose and rebuilding the library.
|
||||||
default to this latter approach. */
|
In a freestanding environment, we default to this latter approach. */
|
||||||
|
|
||||||
#if ! _GLIBCXX_HOSTED
|
|
||||||
# include <cstdlib>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE
|
||||||
/* 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
|
#else
|
||||||
std::abort;
|
# include <cstdlib>
|
||||||
|
/* The current installed user handler. */
|
||||||
|
std::terminate_handler __cxxabiv1::__terminate_handler = std::abort;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
// Copyright (C) 2000, 2001, 2009, 2011 Free Software Foundation
|
// Copyright (C) 2000-2012 Free Software Foundation
|
||||||
//
|
//
|
||||||
// This file is part of GCC.
|
// This file is part of GCC.
|
||||||
//
|
//
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
#include <cxxabi.h>
|
#include <cxxabi.h>
|
||||||
#include "unwind-cxx.h"
|
#include "unwind-cxx.h"
|
||||||
|
|
||||||
#if _GLIBCXX_HOSTED
|
#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE
|
||||||
#ifdef _GLIBCXX_HAVE_UNISTD_H
|
#ifdef _GLIBCXX_HAVE_UNISTD_H
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
# define writestr(str) write(2, str, sizeof(str) - 1)
|
# define writestr(str) write(2, str, sizeof(str) - 1)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue