[PATCH] aarch64: Don't define memchr/strlen when used in IFUNC [BZ #31777]
H.J. Lu
hjl.tools@gmail.com
Tue May 21 17:24:18 GMT 2024
On Tue, May 21, 2024 at 10:23 AM Adhemerval Zanella Netto
<adhemerval.zanella@linaro.org> wrote:
>
>
>
> On 21/05/24 11:37, H.J. Lu wrote:
> > Fix BZ #31777 by not defining memchr/strlen aliases when used in IFUNC.
> >
> > Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
> > ---
> > sysdeps/aarch64/memchr.S | 3 +++
> > sysdeps/aarch64/strlen.S | 3 +++
> > 2 files changed, 6 insertions(+)
> >
> > diff --git a/sysdeps/aarch64/memchr.S b/sysdeps/aarch64/memchr.S
> > index a9fa40519c..6aa93a344b 100644
> > --- a/sysdeps/aarch64/memchr.S
> > +++ b/sysdeps/aarch64/memchr.S
> > @@ -28,6 +28,7 @@
> >
> > #ifndef MEMCHR
> > # define MEMCHR __memchr
> > +# define NEED_memchr
> > #endif
> >
> > #define srcin x0
> > @@ -124,5 +125,7 @@ L(nomatch):
> > ret
> >
> > END (MEMCHR)
> > +#ifdef NEED_memchr
> > weak_alias (MEMCHR, memchr)
> > +#endif
> > libc_hidden_builtin_def (memchr)
>
> The aarch64 memchr_generic.S already redefine libc_hidden_builtin_def to
> avoid a similar issue, so I think it would be better to fix it on the
> same place (and it is similar to how other ports do):
I am dropping my patch.
> diff --git a/sysdeps/aarch64/multiarch/memchr_generic.S b/sysdeps/aarch64/multiarch/memchr_generic.S
> index 0ed5811745..8d554275ba 100644
> --- a/sysdeps/aarch64/multiarch/memchr_generic.S
> +++ b/sysdeps/aarch64/multiarch/memchr_generic.S
> @@ -24,6 +24,9 @@
> # undef libc_hidden_builtin_def
> # define libc_hidden_builtin_def(name)
>
> +# undef weak_alias
> +# define weak_alias(a, b)
> +
> /* Add a hidden definition for use within libc.so. */
> # ifdef SHARED
> .globl __GI_memchr; __GI_memchr = __memchr_generic
>
> > diff --git a/sysdeps/aarch64/strlen.S b/sysdeps/aarch64/strlen.S
> > index ab2a576cdb..ef8db695e6 100644
> > --- a/sysdeps/aarch64/strlen.S
> > +++ b/sysdeps/aarch64/strlen.S
> > @@ -26,6 +26,7 @@
> >
> > #ifndef STRLEN
> > # define STRLEN __strlen
> > +# define NEED_strlen
> > #endif
> >
> > #define srcin x0
> > @@ -89,5 +90,7 @@ L(loop_end):
> > ret
> >
> > END (STRLEN)
> > +#ifdef NEED_strlen
> > weak_alias (STRLEN, strlen)
> > +#endif
> > libc_hidden_builtin_def (strlen)
--
H.J.
More information about the Libc-alpha
mailing list