Message ID | 201605302107.u4UL3v4e048424@mx0a-001b2d01.pphosted.com |
---|---|
State | New |
Headers | show |
LGTM. On 30/05/2016 18:06, Tulio Magno Quites Machado Filho wrote: > Add missing symbols of stpncpy and strcasestr when multi-arch is > disabled. > Fix memset call from strncpy/stpncpy when multi-arch is disabled. > > 2016-05-30 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com> > > * sysdeps/powerpc/powerpc64/power8/strcasestr.S (__strcasestr): > New symbol defined as libc_hidden_def. > (strcasestr): Became a weak alias to __strcasestr. > * sysdeps/powerpc/powerpc64/power8/strncpy.S: Handle memset calls > according to multi-arch support. Move __stpncpy hidden > definition from here to... > * sysdeps/powerpc/powerpc64/power8/stpncpy.S: ...here. Add > symbol stpncpy. > * sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S: Undefine > libc_hidden_builtin_def. > * sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S: Specify which > memset symbol to use when multi-arch support is available. > --- > sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S | 3 +++ > sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S | 3 +++ > sysdeps/powerpc/powerpc64/power8/stpncpy.S | 4 ++++ > sysdeps/powerpc/powerpc64/power8/strcasestr.S | 7 +++++-- > sysdeps/powerpc/powerpc64/power8/strncpy.S | 16 ++++++++++++---- > 5 files changed, 27 insertions(+), 6 deletions(-) > > diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S > index 804e499..e08fbe5 100644 > --- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S > +++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S > @@ -36,4 +36,7 @@ > TRACEBACK(__stpncpy_power8) \ > END_2(__stpncpy_power8) > > +#undef libc_hidden_builtin_def > +#define libc_hidden_builtin_def(name) > + > #include <sysdeps/powerpc/powerpc64/power8/stpncpy.S> > diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S > index 3263bbd..7522155 100644 > --- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S > +++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S > @@ -37,4 +37,7 @@ > #undef libc_hidden_builtin_def > #define libc_hidden_builtin_def(name) > > +/* memset is used to pad the end of the string. */ > +#define MEMSET __memset_power8 > + > #include <sysdeps/powerpc/powerpc64/power8/strncpy.S> > diff --git a/sysdeps/powerpc/powerpc64/power8/stpncpy.S b/sysdeps/powerpc/powerpc64/power8/stpncpy.S > index 067910b..9393dd4 100644 > --- a/sysdeps/powerpc/powerpc64/power8/stpncpy.S > +++ b/sysdeps/powerpc/powerpc64/power8/stpncpy.S > @@ -18,3 +18,7 @@ > > #define USE_AS_STPNCPY > #include <sysdeps/powerpc/powerpc64/power8/strncpy.S> > + > +weak_alias (__stpncpy, stpncpy) > +libc_hidden_def (__stpncpy) > +libc_hidden_builtin_def (stpncpy) > diff --git a/sysdeps/powerpc/powerpc64/power8/strcasestr.S b/sysdeps/powerpc/powerpc64/power8/strcasestr.S > index 24b2b76..60015ae 100644 > --- a/sysdeps/powerpc/powerpc64/power8/strcasestr.S > +++ b/sysdeps/powerpc/powerpc64/power8/strcasestr.S > @@ -81,7 +81,7 @@ > /* TODO: change this to .machine power8 when the minimum required binutils > allows it. */ > .machine power7 > -EALIGN (strcasestr, 4, 0) > +EALIGN (__strcasestr, 4, 0) > CALL_MCOUNT 2 > mflr r0 /* Load link register LR to r0. */ > std r31, -8(r1) /* Save callers register r31. */ > @@ -527,5 +527,8 @@ L(end): > cfi_restore(r31) > mtlr r0 /* Branch to link register. */ > blr > -END (strcasestr) > +END (__strcasestr) > + > +weak_alias (__strcasestr, strcasestr) > +libc_hidden_def (__strcasestr) > libc_hidden_builtin_def (strcasestr) > diff --git a/sysdeps/powerpc/powerpc64/power8/strncpy.S b/sysdeps/powerpc/powerpc64/power8/strncpy.S > index 437edeb..b7fae6d 100644 > --- a/sysdeps/powerpc/powerpc64/power8/strncpy.S > +++ b/sysdeps/powerpc/powerpc64/power8/strncpy.S > @@ -24,6 +24,16 @@ > # define FUNC_NAME strncpy > #endif > > +#ifndef MEMSET > +/* For builds without IFUNC support, local calls should be made to internal > + GLIBC symbol (created by libc_hidden_builtin_def). */ > +# ifdef SHARED > +# define MEMSET __GI_memset > +# else > +# define MEMSET memset > +# endif > +#endif > + > #define FRAMESIZE (FRAME_MIN_SIZE+48) > > /* Implements the function > @@ -223,7 +233,7 @@ L(zero_pad_start_1): > stdu r1,-FRAMESIZE(r1) > cfi_adjust_cfa_offset(FRAMESIZE) > > - bl __memset_power8 > + bl MEMSET > nop > > /* Restore the stack frame. */ > @@ -442,8 +452,6 @@ L(zero_pad_start_prepare_1): > b L(zero_pad_start_1) > END (FUNC_NAME) > > -#ifdef USE_AS_STPNCPY > -libc_hidden_def (__stpncpy) > -#else > +#ifndef USE_AS_STPNCPY > libc_hidden_builtin_def (strncpy) > #endif >
Adhemerval Zanella <adhemerval.zanella@linaro.org> writes:
> LGTM.
Pushed as c24480ce.
Thanks!
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S index 804e499..e08fbe5 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S @@ -36,4 +36,7 @@ TRACEBACK(__stpncpy_power8) \ END_2(__stpncpy_power8) +#undef libc_hidden_builtin_def +#define libc_hidden_builtin_def(name) + #include <sysdeps/powerpc/powerpc64/power8/stpncpy.S> diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S index 3263bbd..7522155 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S @@ -37,4 +37,7 @@ #undef libc_hidden_builtin_def #define libc_hidden_builtin_def(name) +/* memset is used to pad the end of the string. */ +#define MEMSET __memset_power8 + #include <sysdeps/powerpc/powerpc64/power8/strncpy.S> diff --git a/sysdeps/powerpc/powerpc64/power8/stpncpy.S b/sysdeps/powerpc/powerpc64/power8/stpncpy.S index 067910b..9393dd4 100644 --- a/sysdeps/powerpc/powerpc64/power8/stpncpy.S +++ b/sysdeps/powerpc/powerpc64/power8/stpncpy.S @@ -18,3 +18,7 @@ #define USE_AS_STPNCPY #include <sysdeps/powerpc/powerpc64/power8/strncpy.S> + +weak_alias (__stpncpy, stpncpy) +libc_hidden_def (__stpncpy) +libc_hidden_builtin_def (stpncpy) diff --git a/sysdeps/powerpc/powerpc64/power8/strcasestr.S b/sysdeps/powerpc/powerpc64/power8/strcasestr.S index 24b2b76..60015ae 100644 --- a/sysdeps/powerpc/powerpc64/power8/strcasestr.S +++ b/sysdeps/powerpc/powerpc64/power8/strcasestr.S @@ -81,7 +81,7 @@ /* TODO: change this to .machine power8 when the minimum required binutils allows it. */ .machine power7 -EALIGN (strcasestr, 4, 0) +EALIGN (__strcasestr, 4, 0) CALL_MCOUNT 2 mflr r0 /* Load link register LR to r0. */ std r31, -8(r1) /* Save callers register r31. */ @@ -527,5 +527,8 @@ L(end): cfi_restore(r31) mtlr r0 /* Branch to link register. */ blr -END (strcasestr) +END (__strcasestr) + +weak_alias (__strcasestr, strcasestr) +libc_hidden_def (__strcasestr) libc_hidden_builtin_def (strcasestr) diff --git a/sysdeps/powerpc/powerpc64/power8/strncpy.S b/sysdeps/powerpc/powerpc64/power8/strncpy.S index 437edeb..b7fae6d 100644 --- a/sysdeps/powerpc/powerpc64/power8/strncpy.S +++ b/sysdeps/powerpc/powerpc64/power8/strncpy.S @@ -24,6 +24,16 @@ # define FUNC_NAME strncpy #endif +#ifndef MEMSET +/* For builds without IFUNC support, local calls should be made to internal + GLIBC symbol (created by libc_hidden_builtin_def). */ +# ifdef SHARED +# define MEMSET __GI_memset +# else +# define MEMSET memset +# endif +#endif + #define FRAMESIZE (FRAME_MIN_SIZE+48) /* Implements the function @@ -223,7 +233,7 @@ L(zero_pad_start_1): stdu r1,-FRAMESIZE(r1) cfi_adjust_cfa_offset(FRAMESIZE) - bl __memset_power8 + bl MEMSET nop /* Restore the stack frame. */ @@ -442,8 +452,6 @@ L(zero_pad_start_prepare_1): b L(zero_pad_start_1) END (FUNC_NAME) -#ifdef USE_AS_STPNCPY -libc_hidden_def (__stpncpy) -#else +#ifndef USE_AS_STPNCPY libc_hidden_builtin_def (strncpy) #endif