]> sourceware.org Git - glibc.git/commitdiff
powerpc: Fix VSX register number on __strncpy_power9 [BZ #29197]
authorMatheus Castanho <msc@linux.ibm.com>
Tue, 7 Jun 2022 13:27:26 +0000 (10:27 -0300)
committerMatheus Castanho <msc@linux.ibm.com>
Tue, 7 Jun 2022 18:07:25 +0000 (15:07 -0300)
__strncpy_power9 initializes VR 18 with zeroes to be used throughout the
code, including when zero-padding the destination string. However, the
v18 reference was mistakenly being used for stxv and stxvl, which take a
VSX vector as operand. The code ended up using the uninitialized VSR 18
register by mistake.

Both occurrences have been changed to use the proper VSX number for VR 18
(i.e. VSR 50).

Tested on powerpc, powerpc64 and powerpc64le.

Signed-off-by: Kewen Lin <linkw@gcc.gnu.org>
sysdeps/powerpc/powerpc64/le/power9/strncpy.S

index ae231613167f62bc381d3a3ffc38029dbf784cd0..deb94671cc44c50191a573907ec3714383e36469 100644 (file)
@@ -352,7 +352,7 @@ L(zero_padding_loop):
        cmpldi  cr6,r5,16       /* Check if length was reached.  */
        ble     cr6,L(zero_padding_end)
 
-       stxv    v18,0(r11)
+       stxv    32+v18,0(r11)
        addi    r11,r11,16
        addi    r5,r5,-16
 
@@ -360,7 +360,7 @@ L(zero_padding_loop):
 
 L(zero_padding_end):
        sldi    r10,r5,56       /* stxvl wants size in top 8 bits  */
-       stxvl   v18,r11,r10     /* Partial store  */
+       stxvl   32+v18,r11,r10  /* Partial store  */
        blr
 
        .align  4
This page took 0.04427 seconds and 5 git commands to generate.