diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2015-05-13 21:15:31 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2015-05-13 21:15:31 +0000 |
commit | 9b92a9f3b66085450297135e51e0810727d59f8c (patch) | |
tree | dc6a0f80d4e52e052312acffbba59b37f142e9ef /libstdc++-v3 | |
parent | 7893307bb20d7e1a6bd2de2fb8b5e779d376439f (diff) | |
download | gcc-9b92a9f3b66085450297135e51e0810727d59f8c.zip gcc-9b92a9f3b66085450297135e51e0810727d59f8c.tar.gz gcc-9b92a9f3b66085450297135e51e0810727d59f8c.tar.bz2 |
sjlj.m4: New file.
config/
* sjlj.m4: New file.
libgcc/
* configure.ac: Include config/sjlj.m4.
Remove manual SJLJ check, add GCC_CHECK_SJLJ_EXCEPTIONS and adjust.
* config.in: Regenerate.
* configure: Likewise.
* config.host: Replace enable_sjlj_exceptions by ac_cv_sjlj_exceptions.
libjava/
* configure.ac: Include config/sjlj.m4.
Remove manual SJLJ check, add GCC_CHECK_SJLJ_EXCEPTIONS and adjust.
* include/config.h.in: Regenerate.
* configure: Likewise.
* exception.cc: Replace SJLJ_EXCEPTIONS by __USING_SJLJ_EXCEPTIONS__.
* stacktrace.cc: Likewise.
* include/default-signal.h: Likewise.
* sysdep/i386/backtrace.h: Likewise.
libobjc/
* configure.ac: Remove manual SJLJ check.
* config.h.in: Regenerate.
* configure: Likewise.
* exception.c: Replace SJLJ_EXCEPTIONS by __USING_SJLJ_EXCEPTIONS__.
libstdc++-v3/
* acinclude.m4 (GLIBCXX_ENABLE_SJLJ_EXCEPTIONS): Delete.
* configure.ac: Remove GLIBCXX_ENABLE_SJLJ_EXCEPTIONS.
* config.h.in: Regenerate.
* configure: Likewise.
* libsupc++/eh_personality.cc: Replace _GLIBCXX_SJLJ_EXCEPTIONS by
__USING_SJLJ_EXCEPTIONS__.
* libsupc++/eh_throw.cc: Likewise.
* libsupc++/eh_ptr.cc: Likewise.
* doc/html/manual/appendix_porting.html: Remove
GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
* doc/xml/manual/build_hacking.xml: Likewise.
* doc/html/manual/configure.html: Remove --enable-sjlj-exceptions.
* doc/xml/manual/configure.xml: Likewise.
From-SVN: r223181
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 16 | ||||
-rw-r--r-- | libstdc++-v3/acinclude.m4 | 73 | ||||
-rw-r--r-- | libstdc++-v3/config.h.in | 3 | ||||
-rwxr-xr-x | libstdc++-v3/configure | 108 | ||||
-rw-r--r-- | libstdc++-v3/configure.ac | 1 | ||||
-rw-r--r-- | libstdc++-v3/doc/html/manual/appendix_porting.html | 1 | ||||
-rw-r--r-- | libstdc++-v3/doc/html/manual/configure.html | 5 | ||||
-rw-r--r-- | libstdc++-v3/doc/xml/manual/build_hacking.xml | 1 | ||||
-rw-r--r-- | libstdc++-v3/doc/xml/manual/configure.xml | 9 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/eh_personality.cc | 12 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/eh_ptr.cc | 2 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/eh_throw.cc | 4 |
12 files changed, 34 insertions, 201 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b9a0ad7..0507331 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,19 @@ +2015-05-13 Eric Botcazou <ebotcazou@adacore.com> + + * acinclude.m4 (GLIBCXX_ENABLE_SJLJ_EXCEPTIONS): Delete. + * configure.ac: Remove GLIBCXX_ENABLE_SJLJ_EXCEPTIONS. + * config.h.in: Regenerate. + * configure: Likewise. + * libsupc++/eh_personality.cc: Replace _GLIBCXX_SJLJ_EXCEPTIONS by + __USING_SJLJ_EXCEPTIONS__. + * libsupc++/eh_throw.cc: Likewise. + * libsupc++/eh_ptr.cc: Likewise. + * doc/html/manual/appendix_porting.html: Remove + GLIBCXX_ENABLE_SJLJ_EXCEPTIONS + * doc/xml/manual/build_hacking.xml: Likewise. + * doc/html/manual/configure.html: Remove --enable-sjlj-exceptions. + * doc/xml/manual/configure.xml: Likewise. + 2015-05-13 Jonathan Wakely <jwakely@redhat.com> * include/bits/shared_ptr_base.h (__shared_count(unique_ptr&&)): Check diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 6f67774..46e303c 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -3129,79 +3129,6 @@ EOF dnl -dnl Check for exception handling support. If an explicit enable/disable -dnl sjlj exceptions is given, we don't have to detect. Otherwise the -dnl target may or may not support call frame exceptions. -dnl -dnl --enable-sjlj-exceptions forces the use of builtin setjmp. -dnl --disable-sjlj-exceptions forces the use of call frame unwinding. -dnl Neither one forces an attempt at detection. -dnl -dnl Defines: -dnl _GLIBCXX_SJLJ_EXCEPTIONS if the compiler is configured for it -dnl -AC_DEFUN([GLIBCXX_ENABLE_SJLJ_EXCEPTIONS], [ - AC_MSG_CHECKING([for exception model to use]) - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - GLIBCXX_ENABLE(sjlj-exceptions,auto,, - [force use of builtin_setjmp for exceptions], - [permit yes|no|auto]) - - if test $enable_sjlj_exceptions = auto; then - # Botheration. Now we've got to detect the exception model. Link tests - # against libgcc.a are problematic since we've not been given proper -L - # bits for single-tree newlib and libgloss. - # - # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. - cat > conftest.$ac_ext << EOF -[#]line __oline__ "configure" -struct S { ~S(); }; -void bar(); -void foo() -{ - S s; - bar(); -} -EOF - old_CXXFLAGS="$CXXFLAGS" - CXXFLAGS=-S - if AC_TRY_EVAL(ac_compile); then - if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=yes - elif grep _Unwind_SjLj_Register conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=yes - elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=no - elif grep __cxa_end_cleanup conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=no - fi - fi - CXXFLAGS="$old_CXXFLAGS" - rm -f conftest* - fi - - # This is a tad weird, for hysterical raisins. We have to map - # enable/disable to two different models. - case $enable_sjlj_exceptions in - yes) - AC_DEFINE(_GLIBCXX_SJLJ_EXCEPTIONS, 1, - [Define if the compiler is configured for setjmp/longjmp exceptions.]) - ac_exception_model_name=sjlj - ;; - no) - ac_exception_model_name="call frame" - ;; - *) - AC_MSG_ERROR([unable to detect exception model]) - ;; - esac - AC_LANG_RESTORE - AC_MSG_RESULT($ac_exception_model_name) -]) - - -dnl dnl Allow visibility attributes to be used on namespaces, objects, etc. dnl dnl --enable-libstdcxx-visibility enables attempt to use visibility attributes. diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index 88d56b5..945d44e 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -768,9 +768,6 @@ /* Define if size_t is unsigned int. */ #undef _GLIBCXX_SIZE_T_IS_UINT -/* Define if the compiler is configured for setjmp/longjmp exceptions. */ -#undef _GLIBCXX_SJLJ_EXCEPTIONS - /* Define to the value of the EOF integer constant. */ #undef _GLIBCXX_STDIO_EOF diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 35508d3..c206bcf 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -862,7 +862,6 @@ with_gnu_ld enable_libtool_lock enable_hosted_libstdcxx enable_libstdcxx_verbose -enable_sjlj_exceptions enable_libstdcxx_pch enable_cstdio enable_clocale @@ -1542,9 +1541,6 @@ Optional Features: 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] --enable-libstdcxx-pch build pre-compiled libstdc++ headers [default=$is_hosted] --enable-cstdio[=PACKAGE] @@ -11655,7 +11651,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11658 "configure" +#line 11654 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11761,7 +11757,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11764 "configure" +#line 11760 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15151,92 +15147,6 @@ _ACEOF # Enable compiler support that doesn't require linking. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exception model to use" >&5 -$as_echo_n "checking for exception model to use... " >&6; } - - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - # Check whether --enable-sjlj-exceptions was given. -if test "${enable_sjlj_exceptions+set}" = set; then : - enableval=$enable_sjlj_exceptions; - case "$enableval" in - yes|no|auto) ;; - *) as_fn_error "Unknown argument to enable/disable sjlj-exceptions" "$LINENO" 5 ;; - esac - -else - enable_sjlj_exceptions=auto -fi - - - - if test $enable_sjlj_exceptions = auto; then - # Botheration. Now we've got to detect the exception model. Link tests - # against libgcc.a are problematic since we've not been given proper -L - # bits for single-tree newlib and libgloss. - # - # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. - cat > conftest.$ac_ext << EOF -#line 15184 "configure" -struct S { ~S(); }; -void bar(); -void foo() -{ - S s; - bar(); -} -EOF - old_CXXFLAGS="$CXXFLAGS" - CXXFLAGS=-S - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=yes - elif grep _Unwind_SjLj_Register conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=yes - elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=no - elif grep __cxa_end_cleanup conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=no - fi - fi - CXXFLAGS="$old_CXXFLAGS" - rm -f conftest* - fi - - # This is a tad weird, for hysterical raisins. We have to map - # enable/disable to two different models. - case $enable_sjlj_exceptions in - yes) - -$as_echo "#define _GLIBCXX_SJLJ_EXCEPTIONS 1" >>confdefs.h - - ac_exception_model_name=sjlj - ;; - no) - ac_exception_model_name="call frame" - ;; - *) - as_fn_error "unable to detect exception model" "$LINENO" 5 - ;; - esac - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_exception_model_name" >&5 -$as_echo "$ac_exception_model_name" >&6; } - - # Check whether --enable-libstdcxx-pch was given. if test "${enable_libstdcxx_pch+set}" = set; then : enableval=$enable_libstdcxx_pch; @@ -15533,7 +15443,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; } # Fake what AC_TRY_COMPILE does. cat > conftest.$ac_ext << EOF -#line 15536 "configure" +#line 15446 "configure" int main() { typedef bool atomic_type; @@ -15568,7 +15478,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15571 "configure" +#line 15481 "configure" int main() { typedef short atomic_type; @@ -15603,7 +15513,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15606 "configure" +#line 15516 "configure" int main() { // NB: _Atomic_word not necessarily int. @@ -15639,7 +15549,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15642 "configure" +#line 15552 "configure" int main() { typedef long long atomic_type; @@ -15718,7 +15628,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 15721 "configure" +#line 15631 "configure" int main() { _Decimal32 d1; @@ -15760,7 +15670,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15763 "configure" +#line 15673 "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; @@ -15794,7 +15704,7 @@ $as_echo "$enable_int128" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15797 "configure" +#line 15707 "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index 311baa5..7eac8a1 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -147,7 +147,6 @@ GLIBCXX_ENABLE_HOSTED GLIBCXX_ENABLE_VERBOSE # Enable compiler support that doesn't require linking. -GLIBCXX_ENABLE_SJLJ_EXCEPTIONS GLIBCXX_ENABLE_PCH($is_hosted) GLIBCXX_ENABLE_THREADS GLIBCXX_ENABLE_ATOMIC_BUILTINS diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html index cee8168..e2eebe6 100644 --- a/libstdc++-v3/doc/html/manual/appendix_porting.html +++ b/libstdc++-v3/doc/html/manual/appendix_porting.html @@ -162,7 +162,6 @@ in the build directory starts the build process. The <code class="literal">all</ GLIBCXX_ENABLE_DEBUG_FLAGS GLIBCXX_ENABLE_LONG_LONG GLIBCXX_ENABLE_PCH - GLIBCXX_ENABLE_SJLJ_EXCEPTIONS GLIBCXX_ENABLE_SYMVERS GLIBCXX_ENABLE_THREADS </pre><p> diff --git a/libstdc++-v3/doc/html/manual/configure.html b/libstdc++-v3/doc/html/manual/configure.html index 96f40a6..5ec0cf2 100644 --- a/libstdc++-v3/doc/html/manual/configure.html +++ b/libstdc++-v3/doc/html/manual/configure.html @@ -22,11 +22,6 @@ libstdc++ built many different ways: "-msoft-float" and not, etc. A different libstdc++ will be built for each of the different multilib versions. This option is on by default. - </p></dd><dt><span class="term"><code class="code">--enable-sjlj-exceptions</code></span></dt><dd><p>Forces old, set-jump/long-jump exception handling model. If - at all possible, the new, frame unwinding exception handling routines - should be used instead, as they significantly reduce both - runtime memory usage and executable size. This option can - change the library ABI. </p></dd><dt><span class="term"><code class="code">--enable-version-specific-runtime-libs</code></span></dt><dd><p>Specify that run-time libraries should be installed in the compiler-specific subdirectory (i.e., <code class="code">${libdir}/gcc-lib/${target_alias}/${gcc_version}</code>) diff --git a/libstdc++-v3/doc/xml/manual/build_hacking.xml b/libstdc++-v3/doc/xml/manual/build_hacking.xml index afcc373..1b789d3 100644 --- a/libstdc++-v3/doc/xml/manual/build_hacking.xml +++ b/libstdc++-v3/doc/xml/manual/build_hacking.xml @@ -232,7 +232,6 @@ in the build directory starts the build process. The <literal>all</literal> targ GLIBCXX_ENABLE_DEBUG_FLAGS GLIBCXX_ENABLE_LONG_LONG GLIBCXX_ENABLE_PCH - GLIBCXX_ENABLE_SJLJ_EXCEPTIONS GLIBCXX_ENABLE_SYMVERS GLIBCXX_ENABLE_THREADS </programlisting> diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml index 56d071e..9ba9c1a 100644 --- a/libstdc++-v3/doc/xml/manual/configure.xml +++ b/libstdc++-v3/doc/xml/manual/configure.xml @@ -45,15 +45,6 @@ </para> </listitem></varlistentry> - <varlistentry><term><code>--enable-sjlj-exceptions</code></term> - <listitem><para>Forces old, set-jump/long-jump exception handling model. If - at all possible, the new, frame unwinding exception handling routines - should be used instead, as they significantly reduce both - runtime memory usage and executable size. This option can - change the library ABI. - </para> - </listitem></varlistentry> - <varlistentry><term><code>--enable-version-specific-runtime-libs</code></term> <listitem><para>Specify that run-time libraries should be installed in the compiler-specific subdirectory (i.e., diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc index 74bc884..f35d51e 100644 --- a/libstdc++-v3/libsupc++/eh_personality.cc +++ b/libstdc++-v3/libsupc++/eh_personality.cc @@ -327,16 +327,16 @@ namespace __cxxabiv1 // Using a different personality function name causes link failures // when trying to mix code using different exception handling models. -#ifdef _GLIBCXX_SJLJ_EXCEPTIONS +#ifdef __USING_SJLJ_EXCEPTIONS__ #define PERSONALITY_FUNCTION __gxx_personality_sj0 #define __builtin_eh_return_data_regno(x) x -#elif defined(__SEH__) && !defined (_GLIBCXX_SJLJ_EXCEPTIONS) +#elif defined(__SEH__) #define PERSONALITY_FUNCTION __gxx_personality_imp #else #define PERSONALITY_FUNCTION __gxx_personality_v0 #endif -#if defined (__SEH__) && !defined (_GLIBCXX_SJLJ_EXCEPTIONS) +#if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__) static #else extern "C" @@ -455,7 +455,7 @@ PERSONALITY_FUNCTION (int version, action_record = 0; handler_switch_value = 0; -#ifdef _GLIBCXX_SJLJ_EXCEPTIONS +#ifdef __USING_SJLJ_EXCEPTIONS__ // The given "IP" is an index into the call-site table, with two // exceptions -- -1 means no-action, and 0 means terminate. But // since we're using uleb128 values, we've not got random access @@ -508,7 +508,7 @@ PERSONALITY_FUNCTION (int version, goto found_something; } } -#endif // _GLIBCXX_SJLJ_EXCEPTIONS +#endif // __USING_SJLJ_EXCEPTIONS__ // If ip is not present in the table, call terminate. This is for // a destructor inside a cleanup, or a library routine the compiler @@ -789,7 +789,7 @@ __cxa_call_unexpected (void *exc_obj_in) } #endif -#if defined (__SEH__) && !defined (_GLIBCXX_SJLJ_EXCEPTIONS) +#if defined (__SEH__) && !defined (__USING_SJLJ_EXCEPTIONS__) extern "C" EXCEPTION_DISPOSITION __gxx_personality_seh0 (PEXCEPTION_RECORD ms_exc, void *this_frame, diff --git a/libstdc++-v3/libsupc++/eh_ptr.cc b/libstdc++-v3/libsupc++/eh_ptr.cc index dae9246..3872767 100644 --- a/libstdc++-v3/libsupc++/eh_ptr.cc +++ b/libstdc++-v3/libsupc++/eh_ptr.cc @@ -248,7 +248,7 @@ std::rethrow_exception(std::exception_ptr ep) __cxa_eh_globals *globals = __cxa_get_globals (); globals->uncaughtExceptions += 1; -#ifdef _GLIBCXX_SJLJ_EXCEPTIONS +#ifdef __USING_SJLJ_EXCEPTIONS__ _Unwind_SjLj_RaiseException (&dep->unwindHeader); #else _Unwind_RaiseException (&dep->unwindHeader); diff --git a/libstdc++-v3/libsupc++/eh_throw.cc b/libstdc++-v3/libsupc++/eh_throw.cc index d3fa70d..4c953e0 100644 --- a/libstdc++-v3/libsupc++/eh_throw.cc +++ b/libstdc++-v3/libsupc++/eh_throw.cc @@ -76,7 +76,7 @@ __cxxabiv1::__cxa_throw (void *obj, std::type_info *tinfo, __GXX_INIT_PRIMARY_EXCEPTION_CLASS(header->exc.unwindHeader.exception_class); header->exc.unwindHeader.exception_cleanup = __gxx_exception_cleanup; -#ifdef _GLIBCXX_SJLJ_EXCEPTIONS +#ifdef __USING_SJLJ_EXCEPTIONS__ _Unwind_SjLj_RaiseException (&header->exc.unwindHeader); #else _Unwind_RaiseException (&header->exc.unwindHeader); @@ -109,7 +109,7 @@ __cxxabiv1::__cxa_rethrow () header->exceptionType); } -#ifdef _GLIBCXX_SJLJ_EXCEPTIONS +#ifdef __USING_SJLJ_EXCEPTIONS__ _Unwind_SjLj_Resume_or_Rethrow (&header->unwindHeader); #else #if defined(_LIBUNWIND_STD_ABI) |