aboutsummaryrefslogtreecommitdiff
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 0a70fee..a9cfb3b 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 1418756..79efc54 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 5e4bbc8..75bb9cc 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 8f4bb72..22e18aa 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 ad5f3cc..784b3bd 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 311b1a7..7b816a3 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 a502048..bd99c36 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 904187e..5a41c1b 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 cfa2acb..ba01a65 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 e9339a3..212561b 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 18bae6b..0000000
--- 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 1ee3d57..0000000
--- 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