]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
powerpc: Add missing CFI register information (bug #23614)
authorTulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Thu, 13 Dec 2018 08:32:29 +0000 (09:32 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Thu, 13 Dec 2018 08:32:29 +0000 (09:32 +0100)
Add CFI information about the offset of registers stored in the stack
frame.

[BZ #23614]
* sysdeps/powerpc/powerpc64/addmul_1.S (FUNC): Add CFI offset for
registers saved in the stack frame.
* sysdeps/powerpc/powerpc64/lshift.S (__mpn_lshift): Likewise.
* sysdeps/powerpc/powerpc64/mul_1.S (__mpn_mul_1): Likewise.

Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Reviewed-by: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
(cherry picked from commit 1d880d4a9bf7608c2cd33bbe954ce6995f79121a)

ChangeLog
NEWS
sysdeps/powerpc/powerpc64/addmul_1.S
sysdeps/powerpc/powerpc64/lshift.S
sysdeps/powerpc/powerpc64/mul_1.S

index 00f0a086566e5b9bcd65f1b81fd63d2ab26faadf..edd595c60e71a9ab93bddff99eaa260b53ade4b9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2018-12-12  Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>
+
+       [BZ #23614]
+       * sysdeps/powerpc/powerpc64/addmul_1.S (FUNC): Add CFI offset for
+       registers saved in the stack frame.
+       * sysdeps/powerpc/powerpc64/lshift.S (__mpn_lshift): Likewise.
+       * sysdeps/powerpc/powerpc64/mul_1.S (__mpn_mul_1): Likewise.
+
 2018-11-30  Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>
 
        [BZ #23690]
diff --git a/NEWS b/NEWS
index 26191e7e429317143370d0e0978bb2ebe6accafb..d7590b3f25b80f75429c75b03f2a20b155d57fa6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -98,6 +98,7 @@ The following bugs are resolved with this release:
   [23538] pthread_cond_broadcast: Fix waiters-after-spinning case
   [23562] signal: Use correct type for si_band in siginfo_t
   [23579] libc: Errors misreported in preadv2
+  [23614] powerpc: missing CFI register information in __mpn_* functions
   [23690] Fix _dl_profile_fixup data-dependency issue
   [23709] Fix CPU string flags for Haswell-type CPUs
   [23821] si_band in siginfo_t has wrong type long int on sparc64
index 48e3b1b290084174e477fc4bb9ba9349efd2f62a..e450d6a52cdea0e3ee82339fb7d6c467649b15b3 100644 (file)
 #define N   r5
 #define VL  r6
 
+#define R27SAVE  (-40)
+#define R28SAVE  (-32)
+#define R29SAVE  (-24)
+#define R30SAVE  (-16)
+#define R31SAVE  (-8)
+
 ENTRY_TOCLESS (FUNC, 5)
-       std     r31, -8(r1)
+       std     r31, R31SAVE(r1)
        rldicl. r0, N, 0, 62
-       std     r30, -16(r1)
+       std     r30, R30SAVE(r1)
        cmpdi   VL, r0, 2
-       std     r29, -24(r1)
+       std     r29, R29SAVE(r1)
        addi    N, N, 3
-       std     r28, -32(r1)
+       std     r28, R28SAVE(r1)
        srdi    N, N, 2
-       std     r27, -40(r1)
+       std     r27, R27SAVE(r1)
+       cfi_offset(r31, R31SAVE)
+       cfi_offset(r30, R30SAVE)
+       cfi_offset(r29, R29SAVE)
+       cfi_offset(r28, R28SAVE)
+       cfi_offset(r27, R27SAVE)
        mtctr   N
        beq     cr0, L(b00)
        blt     cr6, L(b01)
@@ -199,10 +210,10 @@ L(end):   mulld   r0, r9, VL
        addic   r11, r11, 1
 #endif
        addze   RP, r8
-       ld      r31, -8(r1)
-       ld      r30, -16(r1)
-       ld      r29, -24(r1)
-       ld      r28, -32(r1)
-       ld      r27, -40(r1)
+       ld      r31, R31SAVE(r1)
+       ld      r30, R30SAVE(r1)
+       ld      r29, R29SAVE(r1)
+       ld      r28, R28SAVE(r1)
+       ld      r27, R27SAVE(r1)
        blr
 END(FUNC)
index 8b6396ee6cf21153d93800aaddbec6f039899556..855d6f2993d7634b5072273d512469682a56be13 100644 (file)
 #define TNC      r0
 #define U0      r30
 #define U1      r31
+#define U0SAVE  (-16)
+#define U1SAVE  (-8)
 #define RETVAL   r5
 
 ENTRY_TOCLESS (__mpn_lshift, 5)
-       std     U1, -8(r1)
-       std     U0, -16(r1)
+       std     U1, U1SAVE(r1)
+       std     U0, U0SAVE(r1)
+       cfi_offset(U1, U1SAVE)
+       cfi_offset(U0, U0SAVE)
        subfic  TNC, CNT, 64
        sldi    r7, N, RP
        add     UP, UP, r7
@@ -170,8 +174,8 @@ L(cj3):     or      r10, r12, r7
 L(cj2):        std     r10, -32(RP)
        std     r8, -40(RP)
 
-L(ret):        ld      U1, -8(r1)
-       ld      U0, -16(r1)
+L(ret):        ld      U1, U1SAVE(r1)
+       ld      U0, U0SAVE(r1)
        mr      RP, RETVAL
        blr
 END(__mpn_lshift)
index 953ded802888ecc1abc05e9af569b13bf162c5e0..cade3652586ba65af69d5efcbd4488910f111692 100644 (file)
 #define N   r5
 #define VL  r6
 
+#define R26SAVE  (-48)
+#define R27SAVE  (-40)
+
 ENTRY_TOCLESS (__mpn_mul_1, 5)
-       std     r27, -40(r1)
-       std     r26, -48(r1)
+       std     r27, R27SAVE(r1)
+       std     r26, R26SAVE(r1)
+       cfi_offset(r27, R27SAVE)
+       cfi_offset(r26, R26SAVE)
        li      r12, 0
        ld      r26, 0(UP)
 
@@ -129,7 +134,7 @@ L(end):     mulld   r0, r26, VL
        std     r0, 0(RP)
        std     r7, 8(RP)
 L(ret):        addze   RP, r8
-       ld      r27, -40(r1)
-       ld      r26, -48(r1)
+       ld      r27, R27SAVE(r1)
+       ld      r26, R26SAVE(r1)
        blr
 END(__mpn_mul_1)