Data embedded in .text pollutes i-cache and confuses objtool and other
tools that try to disassemble it.  Move it to .rodata.

Signed-off-by: Josh Poimboeuf <[email protected]>
---
 lib/crypto/arm64/sha2-armv8.pl | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/lib/crypto/arm64/sha2-armv8.pl b/lib/crypto/arm64/sha2-armv8.pl
index 35ec9ae99fe16..e0ee2d5367e72 100644
--- a/lib/crypto/arm64/sha2-armv8.pl
+++ b/lib/crypto/arm64/sha2-armv8.pl
@@ -207,12 +207,13 @@ $func:
 ___
 $code.=<<___   if ($SZ==4);
 #ifndef        __KERNEL__
+       adrp    x17,.LOPENSSL_armcap_P
+       add     x17,x17,:lo12:.LOPENSSL_armcap_P
 # ifdef        __ILP32__
-       ldrsw   x16,.LOPENSSL_armcap_P
+       ldrsw   x16,[x17]
 # else
-       ldr     x16,.LOPENSSL_armcap_P
+       ldr     x16,[x17]
 # endif
-       adr     x17,.LOPENSSL_armcap_P
        add     x16,x16,x17
        ldr     w16,[x16]
        tst     w16,#ARMV8_SHA256
@@ -237,7 +238,8 @@ $code.=<<___;
        ldp     $E,$F,[$ctx,#4*$SZ]
        add     $num,$inp,$num,lsl#`log(16*$SZ)/log(2)` // end of input
        ldp     $G,$H,[$ctx,#6*$SZ]
-       adr     $Ktbl,.LK$BITS
+       adrp    $Ktbl,.LK$BITS
+       add     $Ktbl,$Ktbl,:lo12:.LK$BITS
        stp     $ctx,$num,[x29,#96]
 
 .Loop:
@@ -286,6 +288,7 @@ $code.=<<___;
        ret
 .size  $func,.-$func
 
+.pushsection .rodata
 .align 6
 .type  .LK$BITS,%object
 .LK$BITS:
@@ -365,6 +368,7 @@ $code.=<<___;
 #endif
 .asciz "SHA$BITS block transform for ARMv8, CRYPTOGAMS by <appro\@openssl.org>"
 .align 2
+.popsection
 ___
 
 if ($SZ==4) {
@@ -385,7 +389,8 @@ sha256_block_armv8:
        add             x29,sp,#0
 
        ld1.32          {$ABCD,$EFGH},[$ctx]
-       adr             $Ktbl,.LK256
+       adrp            $Ktbl,.LK256
+       add             $Ktbl,$Ktbl,:lo12:.LK256
 
 .Loop_hw:
        ld1             {@MSG[0]-@MSG[3]},[$inp],#64
@@ -648,7 +653,8 @@ sha256_block_neon:
        mov     x29, sp
        sub     sp,sp,#16*4
 
-       adr     $Ktbl,.LK256
+       adrp    $Ktbl,.LK256
+       add     $Ktbl,$Ktbl,:lo12:.LK256
        add     $num,$inp,$num,lsl#6    // len to point at the end of inp
 
        ld1.8   {@X[0]},[$inp], #16
-- 
2.53.0


Reply via email to