about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-11-11 12:52:35 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-11-11 20:41:25 +0000
commit1ccbb9258eed0f667edf459a28ba23a805549b36 (patch)
treead130ed6b0e7a1a1c5ee5ee87f27ed88264abf44 /sysdeps
parent9cec82de715b3ffc625a6c67d107a3fcb26af566 (diff)
downloadglibc-1ccbb9258eed0f667edf459a28ba23a805549b36.tar.gz
glibc-1ccbb9258eed0f667edf459a28ba23a805549b36.tar.xz
glibc-1ccbb9258eed0f667edf459a28ba23a805549b36.zip
hurd: Notify the proc server later during initialization
Notifying the proc server is an involved task, and unleashes various signal
handling etc. so we have to do this after e.g. ifunc relocations are
completed.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/hurd/include/hurd.h3
-rw-r--r--sysdeps/mach/hurd/i386/init-first.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/hurd/include/hurd.h b/sysdeps/hurd/include/hurd.h
index dc877173b5..7da9af2656 100644
--- a/sysdeps/hurd/include/hurd.h
+++ b/sysdeps/hurd/include/hurd.h
@@ -1,6 +1,8 @@
 #ifndef	_HURD_H
 #include_next <hurd.h>
 
+void _hurd_libc_proc_init (char **argv);
+
 /* Like __USEPORT, but cleans fd on cancel.  */
 #define	__USEPORT_CANCEL(which, expr) \
   HURD_PORT_USE_CANCEL (&_hurd_ports[INIT_PORT_##which], (expr))
@@ -8,5 +10,6 @@
 #ifndef _ISOMAC
 libc_hidden_proto (_hurd_exec_paths)
 libc_hidden_proto (_hurd_init)
+libc_hidden_proto (_hurd_libc_proc_init)
 #endif
 #endif
diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c
index 6c35dc8104..a3d2fdaba0 100644
--- a/sysdeps/mach/hurd/i386/init-first.c
+++ b/sysdeps/mach/hurd/i386/init-first.c
@@ -63,6 +63,9 @@ posixland_init (int argc, char **argv, char **envp)
     {
       /* Set the FPU control word to the proper default value.  */
       __setfpucw (__fpu_control);
+
+      /* Now we have relocations etc. we can start signals etc.  */
+      _hurd_libc_proc_init (argv);
     }
   else
     {