about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog17
-rw-r--r--config.h.in3
-rw-r--r--config.make.in1
-rwxr-xr-xconfigure2
-rw-r--r--configure.ac1
-rw-r--r--nptl/Makefile2
-rw-r--r--nptl/descr.h6
-rw-r--r--nptl/unwind.c34
-rw-r--r--nptl/version.c2
-rw-r--r--sysdeps/nptl/Makefile2
-rw-r--r--sysdeps/nptl/configure78
-rw-r--r--sysdeps/nptl/configure.ac37
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