diff options
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | config.h.in | 3 | ||||
-rw-r--r-- | config.make.in | 1 | ||||
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | nptl/Makefile | 2 | ||||
-rw-r--r-- | nptl/descr.h | 6 | ||||
-rw-r--r-- | nptl/unwind.c | 34 | ||||
-rw-r--r-- | nptl/version.c | 2 | ||||
-rw-r--r-- | sysdeps/nptl/Makefile | 2 | ||||
-rw-r--r-- | sysdeps/nptl/configure | 78 | ||||
-rw-r--r-- | sysdeps/nptl/configure.ac | 37 |
12 files changed, 18 insertions, 167 deletions
diff --git a/ChangeLog b/ChangeLog index 0a70fee964..a9cfb3b397 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2015-10-27 Joseph Myers <joseph@codesourcery.com> + + * sysdeps/nptl/configure.ac: Remove file. + * sysdeps/nptl/configure: Remove generated file. + * configure.ac (libc_cv_forced_unwind): Do not substitute. + * configure: Regenerated. + * config.h.in (HAVE_FORCED_UNWIND): Remove #undef. + * config.make.in (have-forced-unwind): Remove variable. + * nptl/Makefile [$(have-forced-unwind) = yes]: Make code + unconditional. + * nptl/descr.h [HAVE_FORCED_UNWIND]: Likewise. + * nptl/unwind.c [HAVE_FORCED_UNWIND]: Likewise. + (__pthread_unwind) [!HAVE_FORCED_UNWIND]: Remove conditional code. + * nptl/version.c [HAVE_FORCED_UNWIND]: Make code unconditional. + * sysdeps/nptl/Makefile [$(have-forced-unwind) = yes]: Make code + unconditional. + 2015-10-27 Paul E. Murphy <murphyp@linux.vnet.ibm.com> [BZ #19174] diff --git a/config.h.in b/config.h.in index 1418756eee..79efc54436 100644 --- a/config.h.in +++ b/config.h.in @@ -119,9 +119,6 @@ /* Mach/i386 specific: define if the `i386_set_gdt' RPC is available. */ #undef HAVE_I386_SET_GDT -/* Defined if forced unwind support is available. */ -#undef HAVE_FORCED_UNWIND - /* Defined of libidn is available. */ #undef HAVE_LIBIDN diff --git a/config.make.in b/config.make.in index 5e4bbc8772..75bb9cc69e 100644 --- a/config.make.in +++ b/config.make.in @@ -53,7 +53,6 @@ have-protected-data = @libc_cv_protected_data@ with-fp = @with_fp@ enable-timezone-tools = @enable_timezone_tools@ unwind-find-fde = @libc_cv_gcc_unwind_find_fde@ -have-forced-unwind = @libc_cv_forced_unwind@ have-fpie = @libc_cv_fpie@ stack-protector = @stack_protector@ have-selinux = @have_selinux@ diff --git a/configure b/configure index 8f4bb72118..22e18aa69e 100755 --- a/configure +++ b/configure @@ -600,7 +600,6 @@ shared static ldd_rewrite_script use_ldconfig -libc_cv_forced_unwind libc_cv_rootsbindir libc_cv_localstatedir libc_cv_sysconfdir @@ -6717,7 +6716,6 @@ fi - if test x$use_ldconfig = xyes; then $as_echo "#define USE_LDCONFIG 1" >>confdefs.h diff --git a/configure.ac b/configure.ac index ad5f3ccf51..784b3bd120 100644 --- a/configure.ac +++ b/configure.ac @@ -1858,7 +1858,6 @@ AC_SUBST(libc_cv_localedir) AC_SUBST(libc_cv_sysconfdir) AC_SUBST(libc_cv_localstatedir) AC_SUBST(libc_cv_rootsbindir) -AC_SUBST(libc_cv_forced_unwind) if test x$use_ldconfig = xyes; then AC_DEFINE(USE_LDCONFIG) diff --git a/nptl/Makefile b/nptl/Makefile index 311b1a78b4..7b816a3e2d 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -311,14 +311,12 @@ LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst CFLAGS-tst-cleanup2.c = -fno-builtin CFLAGS-tst-cleanupx2.c = -fno-builtin -ifeq ($(have-forced-unwind),yes) tests += tst-cancelx2 tst-cancelx3 tst-cancelx4 tst-cancelx5 \ tst-cancelx6 tst-cancelx7 tst-cancelx8 tst-cancelx9 tst-cancelx10 \ tst-cancelx11 tst-cancelx12 tst-cancelx13 tst-cancelx14 tst-cancelx15 \ tst-cancelx16 tst-cancelx17 tst-cancelx18 tst-cancelx20 tst-cancelx21 \ tst-cleanupx0 tst-cleanupx1 tst-cleanupx2 tst-cleanupx3 tst-cleanupx4 \ tst-oncex3 tst-oncex4 -endif ifeq ($(build-shared),yes) tests += tst-atfork2 tst-tls3 tst-tls4 tst-tls5 tst-_res1 tst-fini1 \ tst-stackguard1 diff --git a/nptl/descr.h b/nptl/descr.h index a502048b44..bd99c367a7 100644 --- a/nptl/descr.h +++ b/nptl/descr.h @@ -32,9 +32,7 @@ #include <dl-sysdep.h> #include "../nptl_db/thread_db.h" #include <tls.h> -#ifdef HAVE_FORCED_UNWIND -# include <unwind.h> -#endif +#include <unwind.h> #define __need_res_state #include <resolv.h> #include <kernel-features.h> @@ -362,10 +360,8 @@ struct pthread /* Next descriptor with a pending event. */ struct pthread *nextevent; -#ifdef HAVE_FORCED_UNWIND /* Machine-specific unwind info. */ struct _Unwind_Exception exc; -#endif /* If nonzero pointer to area allocated for the stack and its size. */ diff --git a/nptl/unwind.c b/nptl/unwind.c index 904187ed55..5a41c1b61d 100644 --- a/nptl/unwind.c +++ b/nptl/unwind.c @@ -25,8 +25,6 @@ #include "pthreadP.h" #include <jmpbuf-unwind.h> -#ifdef HAVE_FORCED_UNWIND - #ifdef _STACK_GROWS_DOWN # define FRAME_LEFT(frame, other, adj) \ ((uintptr_t) frame - adj >= (uintptr_t) other - adj) @@ -107,8 +105,6 @@ unwind_cleanup (_Unwind_Reason_Code reason, struct _Unwind_Exception *exc) __libc_fatal ("FATAL: exception not rethrown\n"); } -#endif /* have forced unwind */ - void __cleanup_fct_attribute __attribute ((noreturn)) @@ -117,42 +113,12 @@ __pthread_unwind (__pthread_unwind_buf_t *buf) struct pthread_unwind_buf *ibuf = (struct pthread_unwind_buf *) buf; struct pthread *self = THREAD_SELF; -#ifdef HAVE_FORCED_UNWIND /* This is not a catchable exception, so don't provide any details about the exception type. We do need to initialize the field though. */ THREAD_SETMEM (self, exc.exception_class, 0); THREAD_SETMEM (self, exc.exception_cleanup, &unwind_cleanup); _Unwind_ForcedUnwind (&self->exc, unwind_stop, ibuf); -#else - /* Handle the compatibility stuff first. Execute all handlers - registered with the old method. We don't execute them in order, - instead, they will run first. */ - struct _pthread_cleanup_buffer *oldp = ibuf->priv.data.cleanup; - struct _pthread_cleanup_buffer *curp = THREAD_GETMEM (self, cleanup); - - if (curp != oldp) - { - do - { - /* Pointer to the next element. */ - struct _pthread_cleanup_buffer *nextp = curp->__prev; - - /* Call the handler. */ - curp->__routine (curp->__arg); - - /* To the next. */ - curp = nextp; - } - while (curp != oldp); - - /* Mark the current element as handled. */ - THREAD_SETMEM (self, cleanup, curp); - } - - /* We simply jump to the registered setjmp buffer. */ - __libc_unwind_longjmp ((struct __jmp_buf_tag *) ibuf->cancel_jmp_buf, 1); -#endif /* NOTREACHED */ /* We better do not get here. */ diff --git a/nptl/version.c b/nptl/version.c index cfa2acb3d8..ba01a6540a 100644 --- a/nptl/version.c +++ b/nptl/version.c @@ -27,9 +27,7 @@ static const char banner[] = This is free software; see the source for copying conditions.\n\ There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\ PARTICULAR PURPOSE.\n" -#ifdef HAVE_FORCED_UNWIND "Forced unwind support included.\n" -#endif ; diff --git a/sysdeps/nptl/Makefile b/sysdeps/nptl/Makefile index e9339a3e12..212561b3f1 100644 --- a/sysdeps/nptl/Makefile +++ b/sysdeps/nptl/Makefile @@ -24,11 +24,9 @@ ifeq ($(subdir),rt) librt-sysdep_routines += timer_routines librt-cancellation CFLAGS-librt-cancellation.c += -fexceptions -fasynchronous-unwind-tables -ifeq ($(have-forced-unwind),yes) tests += tst-mqueue8x CFLAGS-tst-mqueue8x.c += -fexceptions endif -endif ifeq ($(subdir),posix) CFLAGS-confstr.c += -DLIBPTHREAD_VERSION='"NPTL $(version)"' diff --git a/sysdeps/nptl/configure b/sysdeps/nptl/configure deleted file mode 100644 index 18bae6bbc0..0000000000 --- a/sysdeps/nptl/configure +++ /dev/null @@ -1,78 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for forced unwind support" >&5 -$as_echo_n "checking for forced unwind support... " >&6; } -if ${libc_cv_forced_unwind+:} false; then : - $as_echo_n "(cached) " >&6 -else - old_CPPFLAGS="$CPPFLAGS" -# Without inhibit_libc #define'd, GCC's unwind.h (at least for ia64) -# will try to include <stdlib.h>, which doesn't exist yet if we're -# building libc in a bare environment. -CPPFLAGS="$CPPFLAGS -Dinhibit_libc=1" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <unwind.h> -int -main () -{ - -struct _Unwind_Exception exc; -struct _Unwind_Context *context; -_Unwind_GetCFA (context) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - libc_cv_forced_unwind=yes -else - libc_cv_forced_unwind=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CPPFLAGS="$old_CPPFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_forced_unwind" >&5 -$as_echo "$libc_cv_forced_unwind" >&6; } -if test $libc_cv_forced_unwind = yes; then - $as_echo "#define HAVE_FORCED_UNWIND 1" >>confdefs.h - - old_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -Werror -fexceptions" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C cleanup handling" >&5 -$as_echo_n "checking for C cleanup handling... " >&6; } -if ${libc_cv_c_cleanup+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -extern void some_function (void); -void cl (void *a) { } -int -main () -{ - - int a __attribute__ ((cleanup (cl))); - some_function () - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - libc_cv_c_cleanup=yes -else - libc_cv_c_cleanup=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_c_cleanup" >&5 -$as_echo "$libc_cv_c_cleanup" >&6; } - CFLAGS="$old_CFLAGS" - if test $libc_cv_c_cleanup = no; then - as_fn_error $? "the compiler must support C cleanup handling" "$LINENO" 5 - fi -else - as_fn_error $? "forced unwind support is required" "$LINENO" 5 -fi diff --git a/sysdeps/nptl/configure.ac b/sysdeps/nptl/configure.ac deleted file mode 100644 index 1ee3d576be..0000000000 --- a/sysdeps/nptl/configure.ac +++ /dev/null @@ -1,37 +0,0 @@ -dnl configure fragment for new libpthread implementation. -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. - -dnl Iff <unwind.h> is available, make sure it is the right one and it -dnl contains struct _Unwind_Exception. -AC_CACHE_CHECK(dnl -for forced unwind support, libc_cv_forced_unwind, [dnl -old_CPPFLAGS="$CPPFLAGS" -# Without inhibit_libc #define'd, GCC's unwind.h (at least for ia64) -# will try to include <stdlib.h>, which doesn't exist yet if we're -# building libc in a bare environment. -CPPFLAGS="$CPPFLAGS -Dinhibit_libc=1" -AC_TRY_COMPILE([#include <unwind.h>], [ -struct _Unwind_Exception exc; -struct _Unwind_Context *context; -_Unwind_GetCFA (context)], -libc_cv_forced_unwind=yes, libc_cv_forced_unwind=no) -CPPFLAGS="$old_CPPFLAGS"]) -if test $libc_cv_forced_unwind = yes; then - AC_DEFINE(HAVE_FORCED_UNWIND) -dnl Check for C cleanup handling. - old_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -Werror -fexceptions" - AC_CACHE_CHECK([for C cleanup handling], libc_cv_c_cleanup, [dnl - AC_TRY_COMPILE([ -extern void some_function (void); -void cl (void *a) { }], [ - int a __attribute__ ((cleanup (cl))); - some_function ()], -libc_cv_c_cleanup=yes, libc_cv_c_cleanup=no)]) - CFLAGS="$old_CFLAGS" - if test $libc_cv_c_cleanup = no; then - AC_MSG_ERROR([the compiler must support C cleanup handling]) - fi -else - AC_MSG_ERROR(forced unwind support is required) -fi |