From 001f81ad1e792dddd75aa8a6f9d1d9b0ba8dc16e Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Tue, 15 Nov 2016 15:51:01 +0100 Subject: [PATCH] s390x: Add hidden definition for __sigsetjmp --- ChangeLog | 9 ++++++++ sysdeps/s390/s390-32/setjmp.S | 42 ++++++++++++++++++++--------------- sysdeps/s390/s390-64/setjmp.S | 42 ++++++++++++++++++++--------------- 3 files changed, 57 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 740d796a92..e88b7603ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2016-11-15 Florian Weimer + + * sysdeps/s390/s390-64/setjmp.S (NEED_COMPAT_SYMBOLS): New macro. + (libc_hidden_def): Remove redefinition. + (__sigsetjmp): Add hidden definition. + * sysdeps/s390/s390-32/setjmp.S (NEED_COMPAT_SYMBOLS): New macro. + (libc_hidden_def): Remove redefinition. + (__sigsetjmp): Add hidden definition. + 2016-11-14 Joseph Myers * scripts/build-many-glibcs.py (os.path): Do not import. diff --git a/sysdeps/s390/s390-32/setjmp.S b/sysdeps/s390/s390-32/setjmp.S index dbacb0fdf2..9ed479bbb1 100644 --- a/sysdeps/s390/s390-32/setjmp.S +++ b/sysdeps/s390/s390-32/setjmp.S @@ -24,17 +24,16 @@ #include #include -#if !IS_IN (rtld) -# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) - /* we need a unique name in case of symbol versioning. */ -# define setjmp __v1setjmp -# define _setjmp __v1_setjmp -# define __sigsetjmp __v1__sigsetjmp - -# undef libc_hidden_def -# define libc_hidden_def(name) strong_alias(_setjmp, __GI__setjmp) -# endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) */ -#endif /* !IS_IN (rtld) */ +#if !IS_IN (rtld) && defined SHARED \ + && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) +# define NEED_COMPAT_SYMBOLS 1 +/* We need a unique name in case of symbol versioning. */ +# define setjmp __v1setjmp +# define _setjmp __v1_setjmp +# define __sigsetjmp __v1__sigsetjmp +#else +# define NEED_COMPAT_SYMBOLS 0 +#endif /* We include the BSD entry points here as well. */ ENTRY (setjmp) @@ -47,7 +46,11 @@ ENTRY(_setjmp) lhi %r3,0 /* second argument of zero */ j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */ END (_setjmp) +#if NEED_COMPAT_SYMBOLS +strong_alias (_setjmp, __GI__setjmp) +#else libc_hidden_def (_setjmp) +#endif ENTRY(__setjmp) lhi %r3,0 /* second argument of zero */ @@ -92,15 +95,19 @@ ENTRY(__sigsetjmp) .L1: .long __sigjmp_save #endif END (__sigsetjmp) +#if NEED_COMPAT_SYMBOLS +strong_alias (__sigsetjmp, __GI___sigsetjmp) +#else +libc_hidden_def (__sigsetjmp) +#endif -#if !IS_IN (rtld) -# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) +#if NEED_COMPAT_SYMBOLS /* In glibc release 2.19 new versions of setjmp-functions were introduced, but were reverted before 2.20. Thus both versions are the same function. */ -# undef setjmp -# undef _setjmp -# undef __sigsetjmp +# undef setjmp +# undef _setjmp +# undef __sigsetjmp strong_alias (__v1setjmp, __v2setjmp); versioned_symbol (libc, __v1setjmp, setjmp, GLIBC_2_0); @@ -113,5 +120,4 @@ compat_symbol (libc, __v2_setjmp, _setjmp, GLIBC_2_19); strong_alias (__v1__sigsetjmp, __v2__sigsetjmp); versioned_symbol (libc, __v1__sigsetjmp, __sigsetjmp, GLIBC_2_0); compat_symbol (libc, __v2__sigsetjmp, __sigsetjmp, GLIBC_2_19); -# endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) */ -#endif /* if !IS_IN (rtld) */ +#endif /* NEED_COMPAT_SYMBOLS */ diff --git a/sysdeps/s390/s390-64/setjmp.S b/sysdeps/s390/s390-64/setjmp.S index bbcb70db5f..63dd142d5d 100644 --- a/sysdeps/s390/s390-64/setjmp.S +++ b/sysdeps/s390/s390-64/setjmp.S @@ -24,17 +24,16 @@ #include #include -#if !IS_IN (rtld) -# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) - /* we need a unique name in case of symbol versioning. */ -# define setjmp __v1setjmp -# define _setjmp __v1_setjmp -# define __sigsetjmp __v1__sigsetjmp - -# undef libc_hidden_def -# define libc_hidden_def(name) strong_alias(_setjmp, __GI__setjmp) -# endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) */ -#endif /* !IS_IN (rtld) */ +#if !IS_IN (rtld) && defined SHARED \ + && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) +# define NEED_COMPAT_SYMBOLS 1 +/* We need a unique name in case of symbol versioning. */ +# define setjmp __v1setjmp +# define _setjmp __v1_setjmp +# define __sigsetjmp __v1__sigsetjmp +#else +# define NEED_COMPAT_SYMBOLS 0 +#endif /* We include the BSD entry points here as well. */ ENTRY (setjmp) @@ -47,7 +46,11 @@ ENTRY(_setjmp) slgr %r3,%r3 /* Second argument of zero. */ j .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp. */ END (_setjmp) +#if NEED_COMPAT_SYMBOLS +strong_alias (_setjmp, __GI__setjmp) +#else libc_hidden_def (_setjmp) +#endif ENTRY(__setjmp) slgr %r3,%r3 /* Second argument of zero. */ @@ -87,15 +90,19 @@ ENTRY(__sigsetjmp) jg __sigjmp_save #endif END (__sigsetjmp) +#if NEED_COMPAT_SYMBOLS +strong_alias (__sigsetjmp, __GI___sigsetjmp) +#else +libc_hidden_def (__sigsetjmp) +#endif -#if !IS_IN (rtld) -# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) +#if NEED_COMPAT_SYMBOLS /* In glibc release 2.19 new versions of setjmp-functions were introduced, but were reverted before 2.20. Thus both versions are the same function. */ -# undef setjmp -# undef _setjmp -# undef __sigsetjmp +# undef setjmp +# undef _setjmp +# undef __sigsetjmp strong_alias (__v1setjmp, __v2setjmp); versioned_symbol (libc, __v1setjmp, setjmp, GLIBC_2_0); @@ -108,5 +115,4 @@ compat_symbol (libc, __v2_setjmp, _setjmp, GLIBC_2_19); strong_alias (__v1__sigsetjmp, __v2__sigsetjmp); versioned_symbol (libc, __v1__sigsetjmp, __sigsetjmp, GLIBC_2_0); compat_symbol (libc, __v2__sigsetjmp, __sigsetjmp, GLIBC_2_19); -# endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) */ -#endif /* if !IS_IN (rtld) */ +#endif /* NEED_COMPAT_SYMBOLS */ -- 2.43.5