This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add hidden visibility to internal function prototypes


On Mon, Aug 21, 2017 at 10:59 AM, Joseph Myers <joseph@codesourcery.com> wrote:
> The commit
>
> commit 568ff4296c72534e49c8d9c83c33f3a0069cccc7
> Author: H.J. Lu <hjl.tools@gmail.com>
> Date:   Mon Aug 21 05:50:38 2017 -0700
>
>     Add hidden visibility to internal function prototypes
>
> breaks the build of the testsuite for many platforms:
>
> https://sourceware.org/ml/libc-testresults/2017-q3/msg00300.html
>
> The errors are of the following form, building math/atest-exp:
>
> [...]
> /scratch/jmyers/glibc-bot/build/glibcs/aarch64-linux-gnu/glibc/stdlib/rshift.o: In function `__mpn_rshift':
> /scratch/jmyers/glibc-bot/build/glibcs/aarch64-linux-gnu/glibc-src/stdlib/rshift.c:45: undefined reference to `__assert_fail'
> /scratch/jmyers/glibc-bot/install/compilers/aarch64-linux-gnu/lib/gcc/aarch64-glibc-linux-gnu/7.2.1/../../../../aarch64-glibc-linux-gnu/bin/ld: /scratch/jmyers/glibc-bot/build/glibcs/aarch64-linux-gnu/glibc/math/atest-exp: hidden symbol `__assert_fail' isn't defined
> /scratch/jmyers/glibc-bot/install/compilers/aarch64-linux-gnu/lib/gcc/aarch64-glibc-linux-gnu/7.2.1/../../../../aarch64-glibc-linux-gnu/bin/ld: final link failed: Bad value
>
> This test is using various objects from the build of libc.  Some of
> those objects contain references to __assert_fail.  Because those
> references are hidden, they cannot refer to __assert_fail from
> libc.so.  Given the tests using internal objects those symbols in
> libc.a can't safely be made hidden, so this patch reverts the problem
> commit until any alternative approach that doesn't break the build can
> be found.

Can't these link against libc.so instead of libc.a?

> Committed (having tested on aarch64 with build-many-glibcs.py that this
> fixes the build).
>
> diff --git a/ChangeLog b/ChangeLog
> index b0f3a17..0e0ab13 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,5 +1,14 @@
>  2017-08-21  Joseph Myers  <joseph@codesourcery.com>
>
> +       Revert:
> +       2017-08-21  H.J. Lu  <hongjiu.lu@intel.com>
> +
> +       * include/libc-symbols.h (__hidden_proto_hiddenattr): New for
> +       building libc.a.
> +       (hidden_proto): Likewise.
> +       (hidden_tls_proto): Likewise.
> +       (__hidden_proto): Likewise.
> +
>         [BZ #21973]
>         * sysdeps/sparc/sparc32/fpu/w_sqrt_compat.S: Remove file.
>         * sysdeps/sparc/sparc32/fpu/w_sqrtf_compat.S: Likewise.
> diff --git a/include/libc-symbols.h b/include/libc-symbols.h
> index fe3571a..d6a1c26 100644
> --- a/include/libc-symbols.h
> +++ b/include/libc-symbols.h
> @@ -513,20 +513,8 @@ for linking")
>  # endif
>  #else
>  # ifndef __ASSEMBLER__
> -#  if !defined SHARED && IS_IN (libc) && !defined LIBC_NONSHARED \
> -      && !defined NO_HIDDEN
> -#   define __hidden_proto_hiddenattr(attrs...) \
> -  __attribute__ ((visibility ("hidden"), ##attrs))
> -#   define hidden_proto(name, attrs...) \
> -  __hidden_proto (name, , name, ##attrs)
> -#   define hidden_tls_proto(name, attrs...) \
> -  __hidden_proto (name, __thread, name, ##attrs)
> -#  define __hidden_proto(name, thread, internal, attrs...)          \
> -  extern thread __typeof (name) name __hidden_proto_hiddenattr (attrs);
> -# else
> -#   define hidden_proto(name, attrs...)
> -#   define hidden_tls_proto(name, attrs...)
> -# endif
> +#  define hidden_proto(name, attrs...)
> +#  define hidden_tls_proto(name, attrs...)
>  # else
>  #  define HIDDEN_JUMPTARGET(name) JUMPTARGET(name)
>  # endif /* Not  __ASSEMBLER__ */
>
> --
> Joseph S. Myers
> joseph@codesourcery.com



-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]