[hurd,commited] hurd: Avoid more libc.so local PLTs

Samuel Thibault samuel.thibault@ens-lyon.org
Tue Apr 3 08:20:00 GMT 2018


Andreas Schwab, on mar. 03 avril 2018 10:10:21 +0200, wrote:
> On Apr 03 2018, Samuel Thibault <samuel.thibault@ens-lyon.org> wrote:
> 
> > 	* hurd/catch-signal.c (__hurd_catch_signal): Call __libc_siglongjmp
> > 	instead if siglongjmp.
> > 	(hurd_safe_memmove): Call __libc_longjmp instead of longjmp.
> > 	* hurd/hurdfault.c (faulted): Call __libc_longjmp instead of longjmp.
> > 	* include/setjmp.h (__libc_siglongjmp, __libc_longjmp): New hidden
> > 	prototypes.
> > 	* libio/iolibio.h (_IO_puts): New hidden prototype.
> > 	* libio/ioputs.c (_IO_puts): New hidden def.
> > 	* setjmp/longjmp.c (__libc_longjmp, __libc_siglongjmp): New hidden
> > 	defs.
> > 	* sysdeps/mach/hurd/sigwait.c (__sigwait): Call __libc_longjmp instead
> > 	of longjmp.
> 
> https://build.opensuse.org/package/live_build_log/home:Andreas_Schwab:glibc/glibc/s/s390x
> 
> In file included from <command-line>:0:0:
> ../sysdeps/s390/longjmp.c:35:34: error: '__libc_longjmp' aliased to undefined symbol '__libc_siglongjmp'
>  strong_alias (__libc_siglongjmp, __libc_longjmp)
>                                   ^
> ./../include/libc-symbols.h:135:26: note: in definition of macro '_strong_alias'
>    extern __typeof (name) aliasname __attribute__ ((alias (#name)));
>                           ^~~~~~~~~
> ../sysdeps/s390/longjmp.c:35:1: note: in expansion of macro 'strong_alias'
>  strong_alias (__libc_siglongjmp, __libc_longjmp)

Ah, there is #define __libc_siglongjmp magic here indeed.  Does the
attached patch fix it?

Samuel
-------------- next part --------------
diff --git a/sysdeps/s390/longjmp.c b/sysdeps/s390/longjmp.c
index e61cdba2a3..e543415df0 100644
--- a/sysdeps/s390/longjmp.c
+++ b/sysdeps/s390/longjmp.c
@@ -33,6 +33,8 @@
    but were reverted before 2.20. Thus both versions are the same function.  */
 
 strong_alias (__libc_siglongjmp, __libc_longjmp)
+libc_hidden_def (__libc_longjmp)
+libc_hidden_def (__libc_siglongjmp)
 
 weak_alias (__libc_siglongjmp, __v1_longjmp)
 weak_alias (__libc_siglongjmp, __v2_longjmp)


More information about the Libc-alpha mailing list