hurd: Fix ld.so link

Since a2e8aa0d9e ("Block signals during the initial part of dlopen") dl_open
uses sigprocmask, so we need a stub implementation.
This commit is contained in:
Samuel Thibault 2019-12-01 14:58:25 +00:00
parent 26e14efdb8
commit d5ed9ba29a
5 changed files with 17 additions and 5 deletions

View File

@ -1,7 +1,7 @@
libc { libc {
GLIBC_2.0 { GLIBC_2.0 {
# functions with a weak definition in the dynamic linker # functions with a weak definition in the dynamic linker
__access; __getcwd; __mmap; __access; __getcwd; __mmap; __sigprocmask;
} }
GLIBC_2.2.6 { GLIBC_2.2.6 {
# functions with a weak definition in the dynamic linker # functions with a weak definition in the dynamic linker
@ -26,7 +26,7 @@ ld {
__mmap; __open; __read; __sbrk; __strtoul_internal; __mmap; __open; __read; __sbrk; __strtoul_internal;
__write; __writev; __xstat64; __fxstat64; __write; __writev; __xstat64; __fxstat64;
_exit; _hurd_intr_rpc_mach_msg; _exit; _hurd_intr_rpc_mach_msg;
abort; abort; __sigprocmask;
} }
GLIBC_2.2 { GLIBC_2.2 {
# functions that must be shared with libc # functions that must be shared with libc

View File

@ -264,13 +264,14 @@ _dl_sysdep_start_cleanup (void)
__mach_port_deallocate (__mach_task_self (), __mach_task_self_); __mach_port_deallocate (__mach_task_self (), __mach_task_self_);
} }
/* Minimal open/close/mmap implementation sufficient for initial loading of /* Minimal open/close/mmap/etc. implementation sufficient for initial loading of
shared libraries. These are weak definitions so that when the shared libraries. These are weak definitions so that when the
dynamic linker re-relocates itself to be user-visible (for -ldl), dynamic linker re-relocates itself to be user-visible (for -ldl),
it will get the user's definition (i.e. usually libc's). it will get the user's definition (i.e. usually libc's).
They also need to be set in the ld section of sysdeps/mach/hurd/Versions, to They also need to be set in the libc and ld section of
be overridable, and in libc.abilist and ld.abilist to be checked. */ sysdeps/mach/hurd/Versions, to be overridable, and in libc.abilist and
ld.abilist to be checked. */
/* This macro checks that the function does not get renamed to be hidden: we do /* This macro checks that the function does not get renamed to be hidden: we do
need these to be overridable by libc's. */ need these to be overridable by libc's. */
@ -674,6 +675,14 @@ strong_alias (abort, __GI___chk_fail)
strong_alias (abort, __GI___fortify_fail) strong_alias (abort, __GI___fortify_fail)
strong_alias (abort, __GI___assert_fail) strong_alias (abort, __GI___assert_fail)
strong_alias (abort, __GI___assert_perror_fail) strong_alias (abort, __GI___assert_perror_fail)
check_no_hidden(__sigprocmask);
int weak_function
__sigprocmask (int how, const sigset_t *set, sigset_t *oset)
{
/* We do not have signals yet at this stage. */
return 0;
}
/* This function is called by interruptible RPC stubs. For initial /* This function is called by interruptible RPC stubs. For initial
dynamic linking, just use the normal mach_msg. Since this defn is dynamic linking, just use the normal mach_msg. Since this defn is

View File

@ -8,6 +8,7 @@ GLIBC_2.2.6 __open F
GLIBC_2.2.6 __open64 F GLIBC_2.2.6 __open64 F
GLIBC_2.2.6 __read F GLIBC_2.2.6 __read F
GLIBC_2.2.6 __sbrk F GLIBC_2.2.6 __sbrk F
GLIBC_2.2.6 __sigprocmask F
GLIBC_2.2.6 __strtoul_internal F GLIBC_2.2.6 __strtoul_internal F
GLIBC_2.2.6 __write F GLIBC_2.2.6 __write F
GLIBC_2.2.6 __writev F GLIBC_2.2.6 __writev F

View File

@ -426,6 +426,7 @@ GLIBC_2.2.6 __signbit F
GLIBC_2.2.6 __signbitf F GLIBC_2.2.6 __signbitf F
GLIBC_2.2.6 __signbitl F GLIBC_2.2.6 __signbitl F
GLIBC_2.2.6 __sigpause F GLIBC_2.2.6 __sigpause F
GLIBC_2.2.6 __sigprocmask F
GLIBC_2.2.6 __sigsetjmp F GLIBC_2.2.6 __sigsetjmp F
GLIBC_2.2.6 __sigsuspend F GLIBC_2.2.6 __sigsuspend F
GLIBC_2.2.6 __stpcpy F GLIBC_2.2.6 __stpcpy F

View File

@ -40,6 +40,7 @@ ld.so: __sbrk
ld.so: __strtoul_internal ld.so: __strtoul_internal
#ld.so: _exit #ld.so: _exit
ld.so: abort ld.so: abort
ld.so: __sigprocmask
ld.so: _hurd_intr_rpc_mach_msg ld.so: _hurd_intr_rpc_mach_msg
ld.so: __errno_location ld.so: __errno_location
# rtld_hidden is currently disabled to avoid having to special-case the # rtld_hidden is currently disabled to avoid having to special-case the