+2015-01-16 Stefan Liebler <stli@linux.vnet.ibm.com>
+
+ [BZ #17848]
+ * sysdeps/s390/s390-32/memcmp.S
+ (memcmp_g5): Rename to __memcmp_g5.
+ * sysdeps/s390/s390-32/memcpy.S
+ (memcpy_g5): Rename to __memcpy_g5.
+ Jump to __memcpy_mvcle instead of memcpy_mvcle.
+ (memcpy_mvcle) Rename to __memcpy_mvcle.
+ * sysdeps/s390/s390-32/memset.S
+ (memset_g5): Rename to __memset_g5.
+ * sysdeps/s390/s390-32/multiarch/ifunc-resolve.c
+ (IFUNC_RESOLVE): Prefix ifunc-resolve function
+ and use prefixed functions.
+ * sysdeps/s390/s390-32/multiarch/memcmp.S
+ (memcmp_z196): Rename to __memcmp_z196.
+ (memcmp_z10): Rename to __memcmp_z10.
+ (memcmp): Set alias to __memcmp_g5.
+ (bcmp): Set alias to __memcmp_g5.
+ * sysdeps/s390/s390-32/multiarch/memcpy.S
+ (memcpy_z196): Rename to __memcpy_z196.
+ Jump to __memcpy_mvcle instead of memcpy_mvcle.
+ (memcpy_z10): Rename to __memcpy_z10.
+ Jump to __memcpy_mvcle instead of memcpy_mvcle.
+ (memcpy): Set alias to __memcpy_g5.
+ * sysdeps/s390/s390-32/multiarch/memset.S
+ (memset_z196): Rename to __memset_z196.
+ Jump to __memset_mvcle instead of memset_mvcle.
+ (memset_z10): Rename to __memset_z10.
+ Jump to __memset_mvcle instead of memset_mvcle.
+ (memset_mvcle) Rename to __memset_mvcle.
+ (memset): Set alias to __memset_g5.
+ * sysdeps/s390/s390-64/memcmp.S
+ (memcmp_z900): Rename to __memcmp_z900.
+ * sysdeps/s390/s390-64/memcpy.S
+ (memcpy_z900): Rename to __memcpy_z900.
+ Jump to __memcpy_mvcle instead of memcpy_mvcle.
+ (memcpy_mvcle) Rename to __memcpy_mvcle.
+ * sysdeps/s390/s390-64/memset.S
+ (memset_z900): Rename to __memset_z900.
+ * sysdeps/s390/s390-64/multiarch/ifunc-resolve.c
+ (IFUNC_RESOLVE): Prefix ifunc-resolve function
+ and use prefixed functions.
+ * sysdeps/s390/s390-64/multiarch/memcmp.S
+ (memcmp_z196): Rename to __memcmp_z196.
+ (memcmp_z10): Rename to __memcmp_z10.
+ (memcmp): Set alias to __memcmp_z900.
+ (bcmp): Set alias to __memcmp_z900.
+ * sysdeps/s390/s390-64/multiarch/memcpy.S
+ (memcpy_z196): Rename to __memcpy_z196.
+ Jump to __memcpy_mvcle instead of memcpy_mvcle.
+ (memcpy_z10): Rename to __memcpy_z10.
+ Jump to __memcpy_mvcle instead of memcpy_mvcle.
+ (memcpy): Set alias to __memcpy_z900.
+ * sysdeps/s390/s390-64/multiarch/memset.S
+ (memset_z196): Rename to __memset_z196.
+ Jump to __memset_mvcle instead of memset_mvcle.
+ (memset_z10): Rename to __memset_z10.
+ Jump to __memset_mvcle instead of memset_mvcle.
+ (memset_mvcle) Rename to __memset_mvcle.
+ (memset): Set alias to __memset_z900.
+
2015-01-14 Joseph Myers <joseph@codesourcery.com>
[BZ #17748]
17630, 17633, 17634, 17635, 17647, 17653, 17657, 17658, 17664, 17665,
17668, 17682, 17717, 17719, 17722, 17723, 17724, 17725, 17732, 17733,
17744, 17745, 17746, 17747, 17748, 17775, 17777, 17780, 17781, 17782,
- 17791, 17793, 17796, 17797, 17803, 17806, 17834
+ 17791, 17793, 17796, 17797, 17803, 17806, 17834, 17848
* Optimized strcpy, stpcpy, strncpy, stpncpy, strcmp, and strncmp
implementations for powerpc64/powerpc64le.
.text
#ifdef USE_MULTIARCH
-ENTRY(memcmp_g5)
+ENTRY(__memcmp_g5)
#else
ENTRY(memcmp)
#endif
.L_G5_17:
clc 0(1,%r3),0(%r2)
#ifdef USE_MULTIARCH
-END(memcmp_g5)
+END(__memcmp_g5)
#else
END(memcmp)
libc_hidden_builtin_def (memcmp)
%r4 = number of bytes to copy. */
#ifdef USE_MULTIARCH
-ENTRY(memcpy_g5)
+ENTRY(__memcpy_g5)
#else
ENTRY(memcpy)
#endif
br %r14
.L_G5_13:
chi %r5,4096 # Switch to mvcle for copies >1MB
- jh memcpy_mvcle
+ jh __memcpy_mvcle
.L_G5_12:
mvc 0(256,%r1),0(%r3)
la %r1,256(%r1)
.L_G5_17:
mvc 0(1,%r1),0(%r3)
#ifdef USE_MULTIARCH
-END(memcpy_g5)
+END(__memcpy_g5)
#else
END(memcpy)
libc_hidden_builtin_def (memcpy)
#endif
-ENTRY(memcpy_mvcle)
+ENTRY(__memcpy_mvcle)
# Using as standalone function will result in unexpected
# results since the length field is incremented by 1 in order to
# compensate the changes already done in the functions above.
jo .L_MVCLE_1
lr %r2,%r1 # return destination address
br %r14
-END(memcpy_mvcle)
+END(__memcpy_mvcle)
.text
#ifdef USE_MULTIARCH
-ENTRY(memset_g5)
+ENTRY(__memset_g5)
#else
ENTRY(memset)
#endif
.L_G5_20:
mvc 1(1,%r1),0(%r1)
#ifdef USE_MULTIARCH
-END(memset_g5)
+END(__memset_g5)
#else
END(memset)
libc_hidden_builtin_def (memset)
#define IFUNC_RESOLVE(FUNC) \
asm (".globl " #FUNC "\n\t" \
".type " #FUNC ",@gnu_indirect_function\n\t" \
- ".set " #FUNC ",resolve_" #FUNC "\n\t" \
+ ".set " #FUNC ",__resolve_" #FUNC "\n\t" \
".globl __GI_" #FUNC "\n\t" \
".set __GI_" #FUNC "," #FUNC "\n"); \
\
/* Make the declarations of the optimized functions hidden in order
to prevent GOT slots being generated for them. */ \
- extern void *FUNC##_z196 attribute_hidden; \
- extern void *FUNC##_z10 attribute_hidden; \
- extern void *FUNC##_g5 attribute_hidden; \
+ extern void *__##FUNC##_z196 attribute_hidden; \
+ extern void *__##FUNC##_z10 attribute_hidden; \
+ extern void *__##FUNC##_g5 attribute_hidden; \
\
- void *resolve_##FUNC (unsigned long int dl_hwcap) \
+ void *__resolve_##FUNC (unsigned long int dl_hwcap) \
{ \
if ((dl_hwcap & HWCAP_S390_STFLE) \
&& (dl_hwcap & HWCAP_S390_ZARCH) \
: : "cc"); \
\
if ((stfle_bits & (1ULL << (63 - STFLE_BITS_Z196))) != 0) \
- return &FUNC##_z196; \
+ return &__##FUNC##_z196; \
else if ((stfle_bits & (1ULL << (63 - STFLE_BITS_Z10))) != 0) \
- return &FUNC##_z10; \
+ return &__##FUNC##_z10; \
} \
- return &FUNC##_g5; \
+ return &__##FUNC##_g5; \
}
IFUNC_RESOLVE(memset)
#if IS_IN (libc)
-ENTRY(memcmp_z196)
+ENTRY(__memcmp_z196)
.machine "z196"
.machinemode "zarch_nohighgprs"
ltr %r4,%r4
br %r14
.L_Z196_14:
clc 0(1,%r3),0(%r2)
-END(memcmp_z196)
+END(__memcmp_z196)
-ENTRY(memcmp_z10)
+ENTRY(__memcmp_z10)
.machine "z10"
.machinemode "zarch_nohighgprs"
ltr %r4,%r4
j .L_Z10_3
.L_Z10_15:
clc 0(1,%r3),0(%r2)
-END(memcmp_z10)
+END(__memcmp_z10)
#endif
#if !IS_IN (libc)
.globl memcmp
-.set memcmp,memcmp_g5
+.set memcmp,__memcmp_g5
.weak bcmp
-.set bcmp,memcmp_g5
+.set bcmp,__memcmp_g5
#endif
#if defined SHARED && IS_IN (libc)
-ENTRY(memcpy_z196)
+ENTRY(__memcpy_z196)
.machine "z196"
.machinemode "zarch_nohighgprs"
llgfr %r4,%r4
br %r14
.L_Z196_5:
cgfi %r5,262144 # Switch to mvcle for copies >64MB
- jh memcpy_mvcle
+ jh __memcpy_mvcle
.L_Z196_2:
pfd 1,768(%r3)
pfd 2,768(%r1)
j .L_Z196_3
.L_Z196_14:
mvc 0(1,%r1),0(%r3)
-END(memcpy_z196)
+END(__memcpy_z196)
-ENTRY(memcpy_z10)
+ENTRY(__memcpy_z10)
.machine "z10"
.machinemode "zarch_nohighgprs"
llgfr %r4,%r4
br %r14
.L_Z10_13:
cgfi %r5,65535 # Switch to mvcle for copies >16MB
- jh memcpy_mvcle
+ jh __memcpy_mvcle
.L_Z10_12:
pfd 1,768(%r3)
pfd 2,768(%r1)
j .L_Z10_3
.L_Z10_15:
mvc 0(1,%r1),0(%r3)
-END(memcpy_z10)
+END(__memcpy_z10)
#endif
#if !defined SHARED || !IS_IN (libc)
.globl memcpy
-.set memcpy,memcpy_g5
+.set memcpy,__memcpy_g5
#endif
#if IS_IN (libc)
-ENTRY(memset_z196)
+ENTRY(__memset_z196)
.machine "z196"
.machinemode "zarch_nohighgprs"
llgfr %r4,%r4
br %r14
.L_Z196_1:
cgfi %r5,1048576
- jh memset_mvcle # Switch to mvcle for >256MB
+ jh __memset_mvcle # Switch to mvcle for >256MB
.L_Z196_2:
pfd 2,1024(%r1)
mvc 1(256,%r1),0(%r1)
j .L_Z196_3
.L_Z196_17:
mvc 1(1,%r1),0(%r1)
-END(memset_z196)
+END(__memset_z196)
-ENTRY(memset_z10)
+ENTRY(__memset_z10)
.machine "z10"
.machinemode "zarch_nohighgprs"
llgfr %r4,%r4
br %r14
.L_Z10_15:
cgfi %r5,163840 # Switch to mvcle for >40MB
- jh memset_mvcle
+ jh __memset_mvcle
.L_Z10_14:
pfd 2,1024(%r1)
mvc 1(256,%r1),0(%r1)
j .L_Z10_3
.L_Z10_18:
mvc 1(1,%r1),0(%r1)
-END(memset_z10)
+END(__memset_z10)
-ENTRY(memset_mvcle)
+ENTRY(__memset_mvcle)
ahi %r4,2 # take back the change done by the caller
lr %r0,%r2 # save source address
lr %r1,%r3 # move pad byte to R1
lr %r2,%r0 # return value is source address
.L1:
br %r14
-END(memset_mvcle)
+END(__memset_mvcle)
#endif
#if !IS_IN (libc)
.globl memset
-.set memset,memset_g5
+.set memset,__memset_g5
#endif
.text
#ifdef USE_MULTIARCH
-ENTRY(memcmp_z900)
+ENTRY(__memcmp_z900)
#else
ENTRY(memcmp)
#endif
.L_Z900_15:
clc 0(1,%r3),0(%r2)
#ifdef USE_MULTIARCH
-END(memcmp_z900)
+END(__memcmp_z900)
#else
END(memcmp)
libc_hidden_builtin_def (memcmp)
.text
#ifdef USE_MULTIARCH
-ENTRY(memcpy_z900)
+ENTRY(__memcpy_z900)
#else
ENTRY(memcpy)
#endif
br %r14
.L_Z900_13:
chi %r5,4096 # Switch to mvcle for copies >1MB
- jh memcpy_mvcle
+ jh __memcpy_mvcle
.L_Z900_12:
mvc 0(256,%r1),0(%r3)
la %r1,256(%r1)
mvc 0(1,%r1),0(%r3)
#ifdef USE_MULTIARCH
-END(memcpy_z900)
+END(__memcpy_z900)
#else
END(memcpy)
libc_hidden_builtin_def (memcpy)
#endif
-ENTRY(memcpy_mvcle)
+ENTRY(__memcpy_mvcle)
# Using as standalone function will result in unexpected
# results since the length field is incremented by 1 in order to
# compensate the changes already done in the functions above.
jo .L_MVCLE_1
lgr %r2,%r1 # return destination address
br %r14
-END(memcpy_mvcle)
+END(__memcpy_mvcle)
.text
#ifdef USE_MULTIARCH
-ENTRY(memset_z900)
+ENTRY(__memset_z900)
#else
ENTRY(memset)
#endif
.L_Z900_18:
mvc 1(1,%r1),0(%r1)
#ifdef USE_MULTIARCH
-END(memset_z900)
+END(__memset_z900)
#else
END(memset)
libc_hidden_builtin_def (memset)
#define IFUNC_RESOLVE(FUNC) \
asm (".globl " #FUNC "\n\t" \
".type " #FUNC ",@gnu_indirect_function\n\t" \
- ".set " #FUNC ",resolve_" #FUNC "\n\t" \
+ ".set " #FUNC ",__resolve_" #FUNC "\n\t" \
".globl __GI_" #FUNC "\n\t" \
".set __GI_" #FUNC "," #FUNC "\n"); \
\
/* Make the declarations of the optimized functions hidden in order
to prevent GOT slots being generated for them. */ \
- extern void *FUNC##_z196 attribute_hidden; \
- extern void *FUNC##_z10 attribute_hidden; \
- extern void *FUNC##_z900 attribute_hidden; \
+ extern void *__##FUNC##_z196 attribute_hidden; \
+ extern void *__##FUNC##_z10 attribute_hidden; \
+ extern void *__##FUNC##_z900 attribute_hidden; \
\
- void *resolve_##FUNC (unsigned long int dl_hwcap) \
+ void *__resolve_##FUNC (unsigned long int dl_hwcap) \
{ \
if (dl_hwcap & HWCAP_S390_STFLE) \
{ \
: : "cc"); \
\
if ((stfle_bits & (1UL << (63 - STFLE_BITS_Z196))) != 0) \
- return &FUNC##_z196; \
+ return &__##FUNC##_z196; \
else if ((stfle_bits & (1UL << (63 - STFLE_BITS_Z10))) != 0) \
- return &FUNC##_z10; \
+ return &__##FUNC##_z10; \
else \
- return &FUNC##_z900; \
+ return &__##FUNC##_z900; \
} \
else \
- return &FUNC##_z900; \
+ return &__##FUNC##_z900; \
}
IFUNC_RESOLVE(memset)
#if IS_IN (libc)
-ENTRY(memcmp_z196)
+ENTRY(__memcmp_z196)
.machine "z196"
ltgr %r4,%r4
je .L_Z196_4
br %r14
.L_Z196_14:
clc 0(1,%r3),0(%r2)
-END(memcmp_z196)
+END(__memcmp_z196)
-ENTRY(memcmp_z10)
+ENTRY(__memcmp_z10)
.machine "z10"
ltgr %r4,%r4
je .L_Z10_4
j .L_Z10_3
.L_Z10_15:
clc 0(1,%r3),0(%r2)
-END(memcmp_z10)
+END(__memcmp_z10)
#endif
#if !IS_IN (libc)
.globl memcmp
-.set memcmp,memcmp_z900
+.set memcmp,__memcmp_z900
.weak bcmp
-.set bcmp,memcmp_z900
+.set bcmp,__memcmp_z900
#endif
#if defined SHARED && IS_IN (libc)
-ENTRY(memcpy_z196)
+ENTRY(__memcpy_z196)
.machine "z196"
ltgr %r4,%r4
je .L_Z196_4
br %r14
.L_Z196_5:
cgfi %r5,262144 # Switch to mvcle for copies >64MB
- jh memcpy_mvcle
+ jh __memcpy_mvcle
.L_Z196_2:
pfd 1,768(%r3)
pfd 2,768(%r1)
j .L_Z196_3
.L_Z196_14:
mvc 0(1,%r1),0(%r3)
-END(memcpy_z196)
+END(__memcpy_z196)
-ENTRY(memcpy_z10)
+ENTRY(__memcpy_z10)
.machine "z10"
cgije %r4,0,.L_Z10_4
aghi %r4,-1
br %r14
.L_Z10_13:
cgfi %r5,65535 # Switch to mvcle for copies >16MB
- jh memcpy_mvcle
+ jh __memcpy_mvcle
.L_Z10_12:
pfd 1,768(%r3)
pfd 2,768(%r1)
j .L_Z10_3
.L_Z10_15:
mvc 0(1,%r1),0(%r3)
-END(memcpy_z10)
+END(__memcpy_z10)
#endif
#if !defined SHARED || !IS_IN (libc)
.globl memcpy
-.set memcpy,memcpy_z900
+.set memcpy,__memcpy_z900
#endif
#if IS_IN (libc)
-ENTRY(memset_z196)
+ENTRY(__memset_z196)
.machine "z196"
ltgr %r4,%r4
je .L_Z196_4
br %r14
.L_Z196_1:
cgfi %r5,1048576
- jh memset_mvcle # Switch to mvcle for >256MB
+ jh __memset_mvcle # Switch to mvcle for >256MB
.L_Z196_2:
pfd 2,1024(%r1)
mvc 1(256,%r1),0(%r1)
j .L_Z196_3
.L_Z196_17:
mvc 1(1,%r1),0(%r1)
-END(memset_z196)
+END(__memset_z196)
-ENTRY(memset_z10)
+ENTRY(__memset_z10)
.machine "z10"
cgije %r4,0,.L_Z10_4
stc %r3,0(%r2)
br %r14
.L_Z10_15:
cgfi %r5,163840 # Switch to mvcle for >40MB
- jh memset_mvcle
+ jh __memset_mvcle
.L_Z10_14:
pfd 2,1024(%r1)
mvc 1(256,%r1),0(%r1)
j .L_Z10_3
.L_Z10_18:
mvc 1(1,%r1),0(%r1)
-END(memset_z10)
+END(__memset_z10)
-ENTRY(memset_mvcle)
+ENTRY(__memset_mvcle)
aghi %r4,2 # take back the change done by the caller
lgr %r0,%r2 # save source address
lgr %r1,%r3 # move pad byte to R1
lgr %r2,%r0 # return value is source address
.L1:
br %r14
-END(memset_mvcle)
+END(__memset_mvcle)
#endif
#if !IS_IN (libc)
.globl memset
-.set memset,memset_z900
+.set memset,__memset_z900
#endif