about summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog2
-rw-r--r--nptl/Makefile5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/Makefile3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/unwindbuf.sym7
4 files changed, 15 insertions, 2 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 11071d68c3..a739fe1db7 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -2,6 +2,8 @@
 
 	* sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
 	Use correct cleanup handler registration.  Add unwind info.
+	* sysdeps/unix/sysv/linux/unwindbuf.sym: New file.
+	* sysdeps/unix/sysv/linux/Makefile: Add rule to build unwindbuf.h.
 	* tst-once3.c: Add cleanup handler and check it is called.
 	* tst-once4.c: Likewise.
 	* tst-oncex3.c: New file.
diff --git a/nptl/Makefile b/nptl/Makefile
index 09a7ecc1b2..a261efbb6d 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -244,7 +244,8 @@ 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-cleanupx0 tst-cleanupx1 tst-cleanupx2 tst-cleanupx3
+	 tst-cleanupx0 tst-cleanupx1 tst-cleanupx2 tst-cleanupx3 \
+	 tst-oncex3 tst-oncex4
 endif
 ifeq ($(build-shared),yes)
 tests += tst-atfork2 tst-tls3
@@ -369,6 +370,8 @@ CFLAGS-tst-cleanupx0.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-tst-cleanupx1.c += -fexceptions -fasynchronous-unwind-tables
 CFLAGS-tst-cleanupx2.c += -fexceptions
 CFLAGS-tst-cleanupx3.c += -fexceptions
+CFLAGS-tst-oncex3.c += -fexceptions
+CFLAGS-tst-oncex4.c += -fexceptions
 
 tst-cancel7-ARGS = --command "$(built-program-cmd)"
 tst-umask1-ARGS = $(objpfx)tst-umask1.temp
diff --git a/nptl/sysdeps/unix/sysv/linux/Makefile b/nptl/sysdeps/unix/sysv/linux/Makefile
index 510232c9c6..c2988bc902 100644
--- a/nptl/sysdeps/unix/sysv/linux/Makefile
+++ b/nptl/sysdeps/unix/sysv/linux/Makefile
@@ -23,7 +23,8 @@ sysdep_routines += register-atfork unregister-atfork libc_pthread_init \
 
 libpthread-sysdep_routines += pt-fork pthread_mutex_cond_lock
 
-gen-as-const-headers += lowlevelcond.sym lowlevelrwlock.sym lowlevelbarrier.sym
+gen-as-const-headers += lowlevelcond.sym lowlevelrwlock.sym \
+			lowlevelbarrier.sym unwindbuf.sym
 endif
 
 ifeq ($(subdir),posix)
diff --git a/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym b/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym
new file mode 100644
index 0000000000..8044b4078c
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/unwindbuf.sym
@@ -0,0 +1,7 @@
+#include <pthread.h>
+#include <stddef.h>
+
+--
+
+UNWINDBUFSIZE	sizeof (__pthread_unwind_buf_t)
+UWJMPBUF	offsetof (__pthread_unwind_buf_t, __cancel_jmp_buf)