Message ID | 20191201185306.1159853-2-samuel.thibault@ens-lyon.org |
---|---|
State | New |
Headers | show |
Series | fixes for hurd port | expand |
* Samuel Thibault: > diff --git a/sysdeps/mach/hurd/Versions b/sysdeps/mach/hurd/Versions > index f69d5fef67..cd148c820f 100644 > --- a/sysdeps/mach/hurd/Versions > +++ b/sysdeps/mach/hurd/Versions > @@ -1,7 +1,7 @@ > libc { > GLIBC_2.0 { > # functions with a weak definition in the dynamic linker > - __access; __getcwd; __mmap; > + __access; __getcwd; __mmap; __sigprocmask; > } I think I missed the libc update in the patch I posted. But this is wrong, you need to add it to GLIBC_PRIVATE for both libc and ld. Then there will be no abilist update, as expected.
Florian Weimer, le dim. 01 déc. 2019 19:58:51 +0100, a ecrit: > > diff --git a/sysdeps/mach/hurd/Versions b/sysdeps/mach/hurd/Versions > > index f69d5fef67..cd148c820f 100644 > > --- a/sysdeps/mach/hurd/Versions > > +++ b/sysdeps/mach/hurd/Versions > > @@ -1,7 +1,7 @@ > > libc { > > GLIBC_2.0 { > > # functions with a weak definition in the dynamic linker > > - __access; __getcwd; __mmap; > > + __access; __getcwd; __mmap; __sigprocmask; > > } > > I think I missed the libc update in the patch I posted. But this is > wrong, you need to add it to GLIBC_PRIVATE for both libc and ld. > Then there will be no abilist update, as expected. Then it's not only for that symbol, but others from dl-sysdep.c: I just followed what was done for the others. Samuel
* Samuel Thibault: > Florian Weimer, le dim. 01 déc. 2019 19:58:51 +0100, a ecrit: >> > diff --git a/sysdeps/mach/hurd/Versions b/sysdeps/mach/hurd/Versions >> > index f69d5fef67..cd148c820f 100644 >> > --- a/sysdeps/mach/hurd/Versions >> > +++ b/sysdeps/mach/hurd/Versions >> > @@ -1,7 +1,7 @@ >> > libc { >> > GLIBC_2.0 { >> > # functions with a weak definition in the dynamic linker >> > - __access; __getcwd; __mmap; >> > + __access; __getcwd; __mmap; __sigprocmask; >> > } >> >> I think I missed the libc update in the patch I posted. But this is >> wrong, you need to add it to GLIBC_PRIVATE for both libc and ld. >> Then there will be no abilist update, as expected. > > Then it's not only for that symbol, but others from dl-sysdep.c: I just > followed what was done for the others. That may be so, but we cannot change the symbol sets for historic releases. If you really want to use a non-private symbol, it would have to be at version GLIBC_2.31. But given that it's an internal interface, GLIBC_PRIVATE is the proper choice. (Initially, GLIBC_PRIVATE was not used for internal symbols.)
Florian Weimer, le dim. 01 déc. 2019 20:16:52 +0100, a ecrit: > That may be so, but we cannot change the symbol sets for historic > releases. Ah, right, ok, now fixed. Samuel
diff --git a/sysdeps/mach/hurd/Versions b/sysdeps/mach/hurd/Versions index f69d5fef67..cd148c820f 100644 --- a/sysdeps/mach/hurd/Versions +++ b/sysdeps/mach/hurd/Versions @@ -1,7 +1,7 @@ libc { GLIBC_2.0 { # functions with a weak definition in the dynamic linker - __access; __getcwd; __mmap; + __access; __getcwd; __mmap; __sigprocmask; } GLIBC_2.2.6 { # functions with a weak definition in the dynamic linker @@ -26,7 +26,7 @@ ld { __mmap; __open; __read; __sbrk; __strtoul_internal; __write; __writev; __xstat64; __fxstat64; _exit; _hurd_intr_rpc_mach_msg; - abort; + abort; __sigprocmask; } GLIBC_2.2 { # functions that must be shared with libc diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c index 719d603f44..fcbbe6a43a 100644 --- a/sysdeps/mach/hurd/dl-sysdep.c +++ b/sysdeps/mach/hurd/dl-sysdep.c @@ -264,13 +264,14 @@ _dl_sysdep_start_cleanup (void) __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 dynamic linker re-relocates itself to be user-visible (for -ldl), 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 - be overridable, and in libc.abilist and ld.abilist to be checked. */ + They also need to be set in the libc and ld section of + 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 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___assert_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 dynamic linking, just use the normal mach_msg. Since this defn is diff --git a/sysdeps/mach/hurd/i386/ld.abilist b/sysdeps/mach/hurd/i386/ld.abilist index c76b913486..09ff013c1f 100644 --- a/sysdeps/mach/hurd/i386/ld.abilist +++ b/sysdeps/mach/hurd/i386/ld.abilist @@ -8,6 +8,7 @@ GLIBC_2.2.6 __open F GLIBC_2.2.6 __open64 F GLIBC_2.2.6 __read F GLIBC_2.2.6 __sbrk F +GLIBC_2.2.6 __sigprocmask F GLIBC_2.2.6 __strtoul_internal F GLIBC_2.2.6 __write F GLIBC_2.2.6 __writev F diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 7c2cb2b05a..54270e4ce2 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -426,6 +426,7 @@ GLIBC_2.2.6 __signbit F GLIBC_2.2.6 __signbitf F GLIBC_2.2.6 __signbitl F GLIBC_2.2.6 __sigpause F +GLIBC_2.2.6 __sigprocmask F GLIBC_2.2.6 __sigsetjmp F GLIBC_2.2.6 __sigsuspend F GLIBC_2.2.6 __stpcpy F diff --git a/sysdeps/mach/hurd/i386/localplt.data b/sysdeps/mach/hurd/i386/localplt.data index a5b5241b84..1aef944337 100644 --- a/sysdeps/mach/hurd/i386/localplt.data +++ b/sysdeps/mach/hurd/i386/localplt.data @@ -40,6 +40,7 @@ ld.so: __sbrk ld.so: __strtoul_internal #ld.so: _exit ld.so: abort +ld.so: __sigprocmask ld.so: _hurd_intr_rpc_mach_msg ld.so: __errno_location # rtld_hidden is currently disabled to avoid having to special-case the