From: Andrew Pinski <apin...@cavium.com>

Use the PTR_* macros in dl-trampoline.S so it can be used for
both ILP32 and LP64.  Also add a comment about what was an magic number
(the size of the rela relocation entries).

* sysdeps/aarch64/dl-trampoline.S (ip0l): New define.
(RELA_SIZE): New define.
(_dl_runtime_resolve): Use PTR_REG, PTR_SIZE.
(_dl_runtime_profile): Likewise.  Use RELA_SIZE and ip0l.

Signed-off-by: Yury Norov <yno...@caviumnetworks.com>
---
 sysdeps/aarch64/dl-trampoline.S | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/sysdeps/aarch64/dl-trampoline.S b/sysdeps/aarch64/dl-trampoline.S
index 947a515..63ef6f7 100644
--- a/sysdeps/aarch64/dl-trampoline.S
+++ b/sysdeps/aarch64/dl-trampoline.S
@@ -22,9 +22,13 @@
 #include "dl-link.h"
 
 #define ip0 x16
+#define ip0l PTR_REG (16)
 #define ip1 x17
 #define lr  x30
 
+/* RELA relocatons are 3 pointers */
+#define RELA_SIZE (PTR_SIZE * 3)
+
        .text
        .globl _dl_runtime_resolve
        .type _dl_runtime_resolve, #function
@@ -79,7 +83,7 @@ _dl_runtime_resolve:
        cfi_rel_offset (q1, 80+7*16)
 
        /* Get pointer to linker struct.  */
-       ldr     x0, [ip0, #-8]
+       ldr     PTR_REG (0), [ip0, #-PTR_SIZE]
 
        /* Prepare to call _dl_fixup().  */
        ldr     x1, [sp, 80+8*16]       /* Recover &PLTGOT[n] */
@@ -87,7 +91,7 @@ _dl_runtime_resolve:
        sub     x1, x1, ip0
        add     x1, x1, x1, lsl #1
        lsl     x1, x1, #3
-       sub     x1, x1, #192
+       sub     x1, x1, #(RELA_SIZE<<3)
        lsr     x1, x1, #3
 
        /* Call fixup routine.  */
@@ -191,7 +195,7 @@ _dl_runtime_profile:
        stp     x0, x1, [x29, #OFFSET_RG + DL_OFFSET_RG_SP]
 
        /* Get pointer to linker struct.  */
-       ldr     x0, [ip0, #-8]
+       ldr     PTR_REG (0), [ip0, #-PTR_SIZE]
 
        /* Prepare to call _dl_profile_fixup().  */
        ldr     x1, [x29, OFFSET_PLTGOTN]       /* Recover &PLTGOT[n] */
@@ -199,7 +203,7 @@ _dl_runtime_profile:
        sub     x1, x1, ip0
        add     x1, x1, x1, lsl #1
        lsl     x1, x1, #3
-       sub     x1, x1, #192
+       sub     x1, x1, #(RELA_SIZE<<3)
        lsr     x1, x1, #3
 
        stp     x0, x1, [x29, #OFFSET_SAVED_CALL_X0]
@@ -210,8 +214,8 @@ _dl_runtime_profile:
        add     x4, x29, #OFFSET_FS             /* address of framesize */
        bl      _dl_profile_fixup
 
-       ldr     ip0, [x29, #OFFSET_FS]          /* framesize == 0 */
-       cmp     ip0, #0
+       ldr     ip0l, [x29, #OFFSET_FS]         /* framesize == 0 */
+       cmp     ip0l, #0
        bge     1f
        cfi_remember_state
 
@@ -243,7 +247,7 @@ _dl_runtime_profile:
 1:
        /* The new frame size is in ip0.  */
 
-       sub     x1, x29, ip0
+       sub     PTR_REG (1), PTR_REG (29), ip0l
        and     sp, x1, #0xfffffffffffffff0
 
        str     x0, [x29, #OFFSET_T1]
-- 
2.7.4

Reply via email to