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 | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lib/crypto/arm64/sha2-armv8.pl b/lib/crypto/arm64/sha2-armv8.pl
index 35ec9ae99fe1..8cd86768bf5c 100644
--- a/lib/crypto/arm64/sha2-armv8.pl
+++ b/lib/crypto/arm64/sha2-armv8.pl
@@ -237,7 +237,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 +287,7 @@ $code.=<<___;
        ret
 .size  $func,.-$func
 
+.pushsection .rodata
 .align 6
 .type  .LK$BITS,%object
 .LK$BITS:
@@ -365,6 +367,7 @@ $code.=<<___;
 #endif
 .asciz "SHA$BITS block transform for ARMv8, CRYPTOGAMS by <appro\@openssl.org>"
 .align 2
+.popsection
 ___
 
 if ($SZ==4) {
@@ -385,7 +388,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 +652,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