diff --git a/ChangeLog b/ChangeLog index 9eedd2bb72..f0db580588 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,33 @@ +2018-01-24 Carlos O'Donll + + Revert: + + 2017-12-19 H.J. Lu + + [BZ #22563] + * sysdeps/i386/nptl/tcb-offsets.sym (FEATURE_1_OFFSET): New. + * sysdeps/i386/nptl/tls.h (tcbhead_t): Add feature_1. + * sysdeps/x86_64/nptl/tcb-offsets.sym (FEATURE_1_OFFSET): New. + * sysdeps/x86_64/nptl/tls.h (tcbhead_t): Rename __glibc_unused1 + to feature_1. + + 2017-12-19 H.J. Lu + + [BZ #22563] + * bits/types/__cancel_jmp_buf_tag.h: New file. + * sysdeps/unix/sysv/linux/x86/bits/types/__cancel_jmp_buf_tag.h + * sysdeps/unix/sysv/linux/x86/pthreaddef.h: Likewise. + * sysdeps/unix/sysv/linux/x86/nptl/pthreadP.h: Likewise. + * nptl/Makefile (headers): Add + bits/types/__cancel_jmp_buf_tag.h. + * nptl/descr.h [NEED_SAVED_MASK_IN_CANCEL_JMP_BUF] + (pthread_unwind_buf): Add saved_mask to cancel_jmp_buf. + * sysdeps/nptl/pthread.h: Include + . + (__pthread_unwind_buf_t): Use struct __cancel_jmp_buf_tag with + __cancel_jmp_buf. + * sysdeps/unix/sysv/linux/hppa/pthread.h: Likewise. + 2018-01-25 Rafal Luzynski [BZ #10871] diff --git a/bits/types/__cancel_jmp_buf_tag.h b/bits/types/__cancel_jmp_buf_tag.h deleted file mode 100644 index 62f5c61f83..0000000000 --- a/bits/types/__cancel_jmp_buf_tag.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Define struct __cancel_jmp_buf_tag. - Copyright (C) 2017-2018 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef ____cancel_jmp_buf_tag_defined -#define ____cancel_jmp_buf_tag_defined 1 - -struct __cancel_jmp_buf_tag - { - __jmp_buf __cancel_jmp_buf; - int __mask_was_saved; - }; - -#endif diff --git a/nptl/Makefile b/nptl/Makefile index 7940b3d26b..6fc2c8bb6a 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -22,8 +22,7 @@ subdir := nptl include ../Makeconfig -headers := pthread.h semaphore.h bits/semaphore.h \ - bits/types/__cancel_jmp_buf_tag.h +headers := pthread.h semaphore.h bits/semaphore.h extra-libs := libpthread extra-libs-others := $(extra-libs) diff --git a/nptl/descr.h b/nptl/descr.h index 1cc6b09d1e..64ba29e1cb 100644 --- a/nptl/descr.h +++ b/nptl/descr.h @@ -65,9 +65,6 @@ struct pthread_unwind_buf { __jmp_buf jmp_buf; int mask_was_saved; -#ifdef NEED_SAVED_MASK_IN_CANCEL_JMP_BUF - __sigset_t saved_mask; -#endif } cancel_jmp_buf[1]; union diff --git a/sysdeps/i386/nptl/tcb-offsets.sym b/sysdeps/i386/nptl/tcb-offsets.sym index 250f1a6e13..695a810386 100644 --- a/sysdeps/i386/nptl/tcb-offsets.sym +++ b/sysdeps/i386/nptl/tcb-offsets.sym @@ -15,4 +15,3 @@ POINTER_GUARD offsetof (tcbhead_t, pointer_guard) #ifndef __ASSUME_PRIVATE_FUTEX PRIVATE_FUTEX offsetof (tcbhead_t, private_futex) #endif -FEATURE_1_OFFSET offsetof (tcbhead_t, feature_1) diff --git a/sysdeps/i386/nptl/tls.h b/sysdeps/i386/nptl/tls.h index 30643d452a..fcda135b7c 100644 --- a/sysdeps/i386/nptl/tls.h +++ b/sysdeps/i386/nptl/tls.h @@ -50,10 +50,6 @@ typedef struct void *__private_tm[4]; /* GCC split stack support. */ void *__private_ss; - /* Bit 0: IBT. - Bit 1: SHSTK. - */ - unsigned int feature_1; } tcbhead_t; # define TLS_MULTIPLE_THREADS_IN_TCB 1 diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h index c8ba5a75c5..df049abf74 100644 --- a/sysdeps/nptl/pthread.h +++ b/sysdeps/nptl/pthread.h @@ -27,7 +27,6 @@ #include #include #include -#include /* Detach state. */ @@ -524,7 +523,11 @@ extern void pthread_testcancel (void); typedef struct { - struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; + struct + { + __jmp_buf __cancel_jmp_buf; + int __mask_was_saved; + } __cancel_jmp_buf[1]; void *__pad[4]; } __pthread_unwind_buf_t __attribute__ ((__aligned__)); diff --git a/sysdeps/unix/sysv/linux/hppa/pthread.h b/sysdeps/unix/sysv/linux/hppa/pthread.h index 3df5e7c2ac..11a024db59 100644 --- a/sysdeps/unix/sysv/linux/hppa/pthread.h +++ b/sysdeps/unix/sysv/linux/hppa/pthread.h @@ -27,7 +27,6 @@ #include #include #include -#include /* Detach state. */ @@ -500,7 +499,11 @@ extern void pthread_testcancel (void); typedef struct { - struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; + struct + { + __jmp_buf __cancel_jmp_buf; + int __mask_was_saved; + } __cancel_jmp_buf[1]; void *__pad[4]; } __pthread_unwind_buf_t __attribute__ ((__aligned__)); diff --git a/sysdeps/unix/sysv/linux/x86/bits/types/__cancel_jmp_buf_tag.h b/sysdeps/unix/sysv/linux/x86/bits/types/__cancel_jmp_buf_tag.h deleted file mode 100644 index 70efbb190c..0000000000 --- a/sysdeps/unix/sysv/linux/x86/bits/types/__cancel_jmp_buf_tag.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Define struct __cancel_jmp_buf_tag. - Copyright (C) 2017-2018 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef ____cancel_jmp_buf_tag_defined -#define ____cancel_jmp_buf_tag_defined 1 - -#include - -struct __cancel_jmp_buf_tag - { - __jmp_buf __cancel_jmp_buf; - int __mask_was_saved; - __sigset_t __saved_mask; - }; - -#endif diff --git a/sysdeps/unix/sysv/linux/x86/nptl/pthreadP.h b/sysdeps/unix/sysv/linux/x86/nptl/pthreadP.h deleted file mode 100644 index 247a62e9a0..0000000000 --- a/sysdeps/unix/sysv/linux/x86/nptl/pthreadP.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Internal pthread header. Linux/x86 version. - Copyright (C) 2017-2018 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include_next - -#ifndef _PTHREADP_H_X86 -#define _PTHREADP_H_X86 1 - -extern struct pthread_unwind_buf ____pthread_unwind_buf_private; - -_Static_assert (sizeof (____pthread_unwind_buf_private.cancel_jmp_buf) - >= sizeof (struct __jmp_buf_tag), - "size of cancel_jmp_buf < sizeof __jmp_buf_tag"); - -extern __pthread_unwind_buf_t ____pthread_unwind_buf; - -_Static_assert (sizeof (____pthread_unwind_buf.__cancel_jmp_buf) - >= sizeof (struct __jmp_buf_tag), - "size of __cancel_jmp_buf < sizeof __jmp_buf_tag"); - -#endif diff --git a/sysdeps/unix/sysv/linux/x86/pthreaddef.h b/sysdeps/unix/sysv/linux/x86/pthreaddef.h deleted file mode 100644 index a405a65666..0000000000 --- a/sysdeps/unix/sysv/linux/x86/pthreaddef.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Pthread macros. Linux/x86 version. - Copyright (C) 2017-2018 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include_next - -/* Need saved_mask in cancel_jmp_buf. */ -#define NEED_SAVED_MASK_IN_CANCEL_JMP_BUF 1 diff --git a/sysdeps/x86_64/nptl/tcb-offsets.sym b/sysdeps/x86_64/nptl/tcb-offsets.sym index 03b6dba5c3..8a25c482cb 100644 --- a/sysdeps/x86_64/nptl/tcb-offsets.sym +++ b/sysdeps/x86_64/nptl/tcb-offsets.sym @@ -15,7 +15,6 @@ VGETCPU_CACHE_OFFSET offsetof (tcbhead_t, vgetcpu_cache) #ifndef __ASSUME_PRIVATE_FUTEX PRIVATE_FUTEX offsetof (tcbhead_t, private_futex) #endif -FEATURE_1_OFFSET offsetof (tcbhead_t, feature_1) -- Not strictly offsets, but these values are also used in the TCB. TCB_CANCELSTATE_BITMASK CANCELSTATE_BITMASK diff --git a/sysdeps/x86_64/nptl/tls.h b/sysdeps/x86_64/nptl/tls.h index 7f0b292f42..bdd02376f9 100644 --- a/sysdeps/x86_64/nptl/tls.h +++ b/sysdeps/x86_64/nptl/tls.h @@ -56,10 +56,7 @@ typedef struct # else int __glibc_reserved1; # endif - /* Bit 0: IBT. - Bit 1: SHSTK. - */ - unsigned int feature_1; + int __glibc_unused1; /* Reservation of some values for the TM ABI. */ void *__private_tm[4]; /* GCC split stack support. */