diff options
Diffstat (limited to 'sysdeps/mach/hurd')
-rw-r--r-- | sysdeps/mach/hurd/configure | 2 | ||||
-rw-r--r-- | sysdeps/mach/hurd/configure.ac (renamed from sysdeps/mach/hurd/configure.in) | 0 | ||||
-rw-r--r-- | sysdeps/mach/hurd/dl-sysdep.h | 7 | ||||
-rw-r--r-- | sysdeps/mach/hurd/fork.c | 15 | ||||
-rw-r--r-- | sysdeps/mach/hurd/i386/tls.h | 1 |
5 files changed, 23 insertions, 2 deletions
diff --git a/sysdeps/mach/hurd/configure b/sysdeps/mach/hurd/configure index 84948a549c..a0f97217e9 100644 --- a/sysdeps/mach/hurd/configure +++ b/sysdeps/mach/hurd/configure @@ -1,4 +1,4 @@ -# This file is generated from configure.in by Autoconf. DO NOT EDIT! +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! $as_echo "#define NO_HIDDEN 1" >>confdefs.h diff --git a/sysdeps/mach/hurd/configure.in b/sysdeps/mach/hurd/configure.ac index ad915a568b..ad915a568b 100644 --- a/sysdeps/mach/hurd/configure.in +++ b/sysdeps/mach/hurd/configure.ac diff --git a/sysdeps/mach/hurd/dl-sysdep.h b/sysdeps/mach/hurd/dl-sysdep.h index 52563b0ca0..0e7cac4ab0 100644 --- a/sysdeps/mach/hurd/dl-sysdep.h +++ b/sysdeps/mach/hurd/dl-sysdep.h @@ -29,3 +29,10 @@ # define DL_ARGV_NOT_RELRO 1 # define LIBC_STACK_END_NOT_RELRO 1 #endif + +#include <signal.h> +inline void _dl_mask_all_signals (sigset_t *) internal_function; +inline void _dl_mask_all_signals (sigset_t *) { } + +inline void _dl_unmask_all_signals (sigset_t *) internal_function; +inline void _dl_unmask_all_signals (sigset_t *) { } diff --git a/sysdeps/mach/hurd/fork.c b/sysdeps/mach/hurd/fork.c index 6d5bfa9606..f5d8063f1f 100644 --- a/sysdeps/mach/hurd/fork.c +++ b/sysdeps/mach/hurd/fork.c @@ -34,6 +34,11 @@ symbol_set_declare (_hurd_fork_locks) +/* Application callbacks registered through pthread_atfork. */ +DEFINE_HOOK (_hurd_atfork_prepare_hook, (void)); +DEFINE_HOOK (_hurd_atfork_child_hook, (void)); +DEFINE_HOOK (_hurd_atfork_parent_hook, (void)); + /* Things that want to be called before we fork, to prepare the parent for task_create, when the new child task will inherit our address space. */ DEFINE_HOOK (_hurd_fork_prepare_hook, (void)); @@ -62,6 +67,8 @@ __fork (void) error_t err; struct hurd_sigstate *volatile ss; + RUN_HOOK (_hurd_atfork_prepare_hook, ()); + ss = _hurd_self_sigstate (); __spin_lock (&ss->critical_section_lock); @@ -718,6 +725,14 @@ __fork (void) _hurd_critical_section_unlock (ss); + if (!err) + { + if (pid != 0) + RUN_HOOK (_hurd_atfork_parent_hook, ()); + else + RUN_HOOK (_hurd_atfork_child_hook, ()); + } + return err ? __hurd_fail (err) : pid; } libc_hidden_def (__fork) diff --git a/sysdeps/mach/hurd/i386/tls.h b/sysdeps/mach/hurd/i386/tls.h index 87fa4caa69..25623e910c 100644 --- a/sysdeps/mach/hurd/i386/tls.h +++ b/sysdeps/mach/hurd/i386/tls.h @@ -118,7 +118,6 @@ _hurd_tls_init (tcbhead_t *tcb, int secondcall) operation can cause a failure 'errno' must not be touched. */ # define TLS_INIT_TP(descr, secondcall) \ _hurd_tls_init ((tcbhead_t *) (descr), (secondcall)) -# define TLS_INIT_TP_EXPENSIVE 1 /* Return the TCB address of the current thread. */ # define THREAD_SELF \ |