diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-06-06 20:21:22 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-06-06 20:24:30 +0200 |
commit | 02937d825a71636c13b3f4229e5d6c9e54e327d5 (patch) | |
tree | 822a53b962bde8520f69daf62d8a0d62967a16a1 /sysdeps/i386/htl | |
parent | 8fcc772da8381476e914979fc887fdc54e62b15f (diff) | |
download | glibc-02937d825a71636c13b3f4229e5d6c9e54e327d5.tar glibc-02937d825a71636c13b3f4229e5d6c9e54e327d5.tar.gz glibc-02937d825a71636c13b3f4229e5d6c9e54e327d5.tar.bz2 glibc-02937d825a71636c13b3f4229e5d6c9e54e327d5.zip |
hurd: fix clearing SS_ONSTACK when longjmp-ing from sighandler
* sysdeps/i386/htl/Makefile: New file.
* sysdeps/i386/htl/tcb-offsets.sym: New file.
* sysdeps/mach/hurd/i386/Makefile [setjmp] (gen-as-const-headers): Add
signal-defines.sym.
* sysdeps/mach/hurd/i386/____longjmp_chk.S: Include tcb-offsets.h.
(____longjmp_chk): Harmonize with i386's __longjmp. Clear SS_ONSTACK
when jumping off the alternate stack.
* sysdeps/mach/hurd/i386/__longjmp.S: New file.
Diffstat (limited to 'sysdeps/i386/htl')
-rw-r--r-- | sysdeps/i386/htl/Makefile | 20 | ||||
-rw-r--r-- | sysdeps/i386/htl/tcb-offsets.sym | 8 |
2 files changed, 28 insertions, 0 deletions
diff --git a/sysdeps/i386/htl/Makefile b/sysdeps/i386/htl/Makefile new file mode 100644 index 0000000000..8573ce6990 --- /dev/null +++ b/sysdeps/i386/htl/Makefile @@ -0,0 +1,20 @@ +# Copyright (C) 2020 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 +# <https://www.gnu.org/licenses/>. + +ifeq ($(subdir),csu) +gen-as-const-headers += tcb-offsets.sym +endif diff --git a/sysdeps/i386/htl/tcb-offsets.sym b/sysdeps/i386/htl/tcb-offsets.sym new file mode 100644 index 0000000000..7b7c719369 --- /dev/null +++ b/sysdeps/i386/htl/tcb-offsets.sym @@ -0,0 +1,8 @@ +#include <sysdep.h> +#include <tls.h> +#include <kernel-features.h> + +MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) +SYSINFO_OFFSET offsetof (tcbhead_t, sysinfo) +POINTER_GUARD offsetof (tcbhead_t, pointer_guard) +SIGSTATE_OFFSET offsetof (tcbhead_t, _hurd_sigstate) |