> Date: Sat, 14 Jan 2023 16:56:32 +0100 > From: Theo Buehler <t...@theobuehler.org> > > This is a backport of kettenis's diff. Most of it applied with a few > offsets. I had to hand-apply two or three hunks due to whitespace noise. > > The only real changes are the hunks containing __ILP32__ which were > needed to make it link. They are part of the diff to OpenSSL 3, which > came from https://github.com/openssl/openssl/pull/8256 which was never > backported. > > If this goes in, I'll also take care of sslscan similar to postfix. > > Tests pass apart from one unrelated failure that has been around for a > while: > > ../test/recipes/90-test_shlibload.t ................ > Dubious, test returned 9 (wstat 2304, 0x900) > Failed 9/10 subtests
Looks good to me. You didn't remove the .LOPENSSL_armcap_P bits furter up in the files that are part of that __ILP32__ stuff. But that doesn't really matter. > Index: Makefile > =================================================================== > RCS file: /cvs/ports/security/openssl/1.1/Makefile,v > retrieving revision 1.46 > diff -u -p -r1.46 Makefile > --- Makefile 9 Jan 2023 17:27:50 -0000 1.46 > +++ Makefile 14 Jan 2023 15:38:45 -0000 > @@ -3,7 +3,7 @@ PORTROACH= limit:^1\.1\.[0-9][a-z] skipb > V= 1.1.1s > PKGSPEC= openssl->=1.1.0v0,<1.2v0 > EPOCH= 0 > -REVISION= 1 > +REVISION= 2 > > SHLIBVER= 11.6 > SHARED_LIBS= crypto ${SHLIBVER} \ > @@ -35,7 +35,9 @@ MAN_PREFIX= @man lib/eopenssl11/man > INSTALL_TARGET+= install_man_docs > .endif > > +.if ${MACHINE_ARCH} != arch64 > USE_NOEXECONLY= Yes > +.endif > > # install to unusual directory name - this port is *not* intended to be > # picked up by configure scripts without explicitly CPPFLAGS/LDFLAGS. > Index: patches/patch-Configurations_10-main_conf > =================================================================== > RCS file: > /cvs/ports/security/openssl/1.1/patches/patch-Configurations_10-main_conf,v > retrieving revision 1.5 > diff -u -p -r1.5 patch-Configurations_10-main_conf > --- patches/patch-Configurations_10-main_conf 11 Mar 2022 19:53:36 -0000 > 1.5 > +++ patches/patch-Configurations_10-main_conf 14 Jan 2023 15:38:45 -0000 > @@ -1,7 +1,7 @@ > Index: Configurations/10-main.conf > --- Configurations/10-main.conf.orig > +++ Configurations/10-main.conf > -@@ -958,6 +958,7 @@ my %targets = ( > +@@ -965,6 +965,7 @@ my %targets = ( > }, > "BSD-x86-elf" => { > inherit_from => [ "BSD-x86" ], > Index: patches/patch-crypto_aes_asm_aesv8-armx_pl > =================================================================== > RCS file: patches/patch-crypto_aes_asm_aesv8-armx_pl > diff -N patches/patch-crypto_aes_asm_aesv8-armx_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_aes_asm_aesv8-armx_pl 14 Jan 2023 15:38:45 > -0000 > @@ -0,0 +1,27 @@ > +Index: crypto/aes/asm/aesv8-armx.pl > +--- crypto/aes/asm/aesv8-armx.pl.orig > ++++ crypto/aes/asm/aesv8-armx.pl > +@@ -79,11 +79,13 @@ my ($zero,$rcon,$mask,$in0,$in1,$tmp,$key)= > + > + > + $code.=<<___; > ++.rodata > + .align 5 > + .Lrcon: > + .long 0x01,0x01,0x01,0x01 > + .long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d // > rotate-n-splat > + .long 0x1b,0x1b,0x1b,0x1b > ++.previous > + > + .globl ${prefix}_set_encrypt_key > + .type ${prefix}_set_encrypt_key,%function > +@@ -109,7 +111,8 @@ $code.=<<___; > + tst $bits,#0x3f > + b.ne .Lenc_key_abort > + > +- adr $ptr,.Lrcon > ++ adrp $ptr,.Lrcon > ++ add $ptr,$ptr,:lo12:.Lrcon > + cmp $bits,#192 > + > + veor $zero,$zero,$zero > Index: patches/patch-crypto_aes_asm_vpaes-armv8_pl > =================================================================== > RCS file: patches/patch-crypto_aes_asm_vpaes-armv8_pl > diff -N patches/patch-crypto_aes_asm_vpaes-armv8_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_aes_asm_vpaes-armv8_pl 14 Jan 2023 15:38:45 > -0000 > @@ -0,0 +1,150 @@ > +Index: crypto/aes/asm/vpaes-armv8.pl > +--- crypto/aes/asm/vpaes-armv8.pl.orig > ++++ crypto/aes/asm/vpaes-armv8.pl > +@@ -49,7 +49,7 @@ open OUT,"| \"$^X\" $xlate $flavour $output"; > + *STDOUT=*OUT; > + > + $code.=<<___; > +-.text > ++.rodata > + > + .type _vpaes_consts,%object > + .align 7 // totally strategic alignment > +@@ -140,6 +140,9 @@ _vpaes_consts: > + .asciz "Vector Permutation AES for ARMv8, Mike Hamburg (Stanford > University)" > + .size _vpaes_consts,.-_vpaes_consts > + .align 6 > ++ > ++.text > ++ > + ___ > + > + { > +@@ -159,7 +162,8 @@ $code.=<<___; > + .type _vpaes_encrypt_preheat,%function > + .align 4 > + _vpaes_encrypt_preheat: > +- adr x10, .Lk_inv > ++ adrp x10, .Lk_inv > ++ add x10, x10, :lo12:.Lk_inv > + movi v17.16b, #0x0f > + ld1 {v18.2d-v19.2d}, [x10],#32 // .Lk_inv > + ld1 {v20.2d-v23.2d}, [x10],#64 // .Lk_ipt, .Lk_sbo > +@@ -187,7 +191,9 @@ _vpaes_encrypt_preheat: > + _vpaes_encrypt_core: > + mov x9, $key > + ldr w8, [$key,#240] // pull rounds > +- adr x11, .Lk_mc_forward+16 > ++ adrp x11, .Lk_mc_forward > ++ add x11, x11, :lo12:.Lk_mc_forward > ++ add x11, x11, #16 > + // vmovdqa .Lk_ipt(%rip), > %xmm2 # iptlo > + ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 > # round0 key > + and v1.16b, v7.16b, v17.16b // vpand %xmm9, %xmm0, > %xmm1 > +@@ -274,7 +280,9 @@ vpaes_encrypt: > + _vpaes_encrypt_2x: > + mov x9, $key > + ldr w8, [$key,#240] // pull rounds > +- adr x11, .Lk_mc_forward+16 > ++ adrp x11, .Lk_mc_forward > ++ add x11, x11, :lo12:.Lk_mc_forward > ++ add x11, x11, #16 > + // vmovdqa .Lk_ipt(%rip), > %xmm2 # iptlo > + ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 > # round0 key > + and v1.16b, v14.16b, v17.16b // vpand %xmm9, %xmm0, > %xmm1 > +@@ -377,9 +385,11 @@ _vpaes_encrypt_2x: > + .type _vpaes_decrypt_preheat,%function > + .align 4 > + _vpaes_decrypt_preheat: > +- adr x10, .Lk_inv > ++ adrp x10, .Lk_inv > ++ add x10, x10, :lo12:.Lk_inv > + movi v17.16b, #0x0f > +- adr x11, .Lk_dipt > ++ adrp x11, .Lk_dipt > ++ add x11, x11, :lo12:.Lk_dipt > + ld1 {v18.2d-v19.2d}, [x10],#32 // .Lk_inv > + ld1 {v20.2d-v23.2d}, [x11],#64 // .Lk_dipt, .Lk_dsbo > + ld1 {v24.2d-v27.2d}, [x11],#64 // .Lk_dsb9, .Lk_dsbd > +@@ -401,10 +411,13 @@ _vpaes_decrypt_core: > + // vmovdqa .Lk_dipt(%rip), > %xmm2 # iptlo > + lsl x11, x8, #4 // mov %rax, %r11; shl > \$4, %r11 > + eor x11, x11, #0x30 // xor \$0x30, %r11 > +- adr x10, .Lk_sr > ++ adrp x10, .Lk_sr > ++ add x10, x10, :lo12:.Lk_sr > + and x11, x11, #0x30 // and \$0x30, %r11 > + add x11, x11, x10 > +- adr x10, .Lk_mc_forward+48 > ++ adrp x10, .Lk_mc_forward > ++ add x10, x10, :lo12:.Lk_mc_forward > ++ add x10, x10, #48 > + > + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm4 > # round0 key > + and v1.16b, v7.16b, v17.16b // vpand %xmm9, %xmm0, > %xmm1 > +@@ -512,10 +525,13 @@ _vpaes_decrypt_2x: > + // vmovdqa .Lk_dipt(%rip), > %xmm2 # iptlo > + lsl x11, x8, #4 // mov %rax, %r11; shl > \$4, %r11 > + eor x11, x11, #0x30 // xor \$0x30, %r11 > +- adr x10, .Lk_sr > ++ adrp x10, .Lk_sr > ++ add x10, x10, :lo12:.Lk_sr > + and x11, x11, #0x30 // and \$0x30, %r11 > + add x11, x11, x10 > +- adr x10, .Lk_mc_forward+48 > ++ adrp x10, .Lk_mc_forward > ++ add x10, x10, :lo12:.Lk_mc_forward > ++ add x10, x10, #48 > + > + ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm4 > # round0 key > + and v1.16b, v14.16b, v17.16b // vpand %xmm9, %xmm0, > %xmm1 > +@@ -651,14 +667,18 @@ $code.=<<___; > + .type _vpaes_key_preheat,%function > + .align 4 > + _vpaes_key_preheat: > +- adr x10, .Lk_inv > ++ adrp x10, .Lk_inv > ++ add x10, x10, :lo12:.Lk_inv > + movi v16.16b, #0x5b // .Lk_s63 > +- adr x11, .Lk_sb1 > ++ adrp x11, .Lk_sb1 > ++ add x11, x11, :lo12:.Lk_sb1 > + movi v17.16b, #0x0f // .Lk_s0F > + ld1 {v18.2d-v21.2d}, [x10] // .Lk_inv, .Lk_ipt > +- adr x10, .Lk_dksd > ++ adrp x10, .Lk_dksd > ++ add x10, x10, :lo12:.Lk_dksd > + ld1 {v22.2d-v23.2d}, [x11] // .Lk_sb1 > +- adr x11, .Lk_mc_forward > ++ adrp x11, .Lk_mc_forward > ++ add x11, x11, :lo12:.Lk_mc_forward > + ld1 {v24.2d-v27.2d}, [x10],#64 // .Lk_dksd, .Lk_dksb > + ld1 {v28.2d-v31.2d}, [x10],#64 // .Lk_dkse, .Lk_dks9 > + ld1 {v8.2d}, [x10] // .Lk_rcon > +@@ -682,7 +702,8 @@ _vpaes_schedule_core: > + bl _vpaes_schedule_transform > + mov v7.16b, v0.16b // vmovdqa %xmm0, %xmm7 > + > +- adr x10, .Lk_sr // lea .Lk_sr(%rip),%r10 > ++ adrp x10, .Lk_sr // lea .Lk_sr(%rip),%r10 > ++ add x10, x10, :lo12:.Lk_sr > + add x8, x8, x10 > + cbnz $dir, .Lschedule_am_decrypting > + > +@@ -808,12 +829,14 @@ _vpaes_schedule_core: > + .align 4 > + .Lschedule_mangle_last: > + // schedule last round key from xmm0 > +- adr x11, .Lk_deskew // lea .Lk_deskew(%rip),%r11 > # prepare to deskew > ++ adrp x11, .Lk_deskew // lea .Lk_deskew(%rip),%r11 > # prepare to deskew > ++ add x11, x11, :lo12:.Lk_deskew > + cbnz $dir, .Lschedule_mangle_last_dec > + > + // encrypting > + ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10),%xmm1 > +- adr x11, .Lk_opt // lea .Lk_opt(%rip), %r11 > # prepare to output transform > ++ adrp x11, .Lk_opt // lea .Lk_opt(%rip), %r11 > # prepare to output transform > ++ add x11, x11, :lo12:.Lk_opt > + add $out, $out, #32 // add \$32, %rdx > + tbl v0.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, > %xmm0 # output permute > + > Index: patches/patch-crypto_bn_asm_armv8-mont_pl > =================================================================== > RCS file: patches/patch-crypto_bn_asm_armv8-mont_pl > diff -N patches/patch-crypto_bn_asm_armv8-mont_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_bn_asm_armv8-mont_pl 14 Jan 2023 15:38:45 -0000 > @@ -0,0 +1,11 @@ > +Index: crypto/bn/asm/armv8-mont.pl > +--- crypto/bn/asm/armv8-mont.pl.orig > ++++ crypto/bn/asm/armv8-mont.pl > +@@ -1505,6 +1505,7 @@ __bn_mul4x_mont: > + ___ > + } > + $code.=<<___; > ++.rodata > + .asciz "Montgomery Multiplication for ARMv8, CRYPTOGAMS by > <appro\@openssl.org>" > + .align 4 > + ___ > Index: patches/patch-crypto_chacha_asm_chacha-armv8_pl > =================================================================== > RCS file: patches/patch-crypto_chacha_asm_chacha-armv8_pl > diff -N patches/patch-crypto_chacha_asm_chacha-armv8_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_chacha_asm_chacha-armv8_pl 14 Jan 2023 15:38:45 > -0000 > @@ -0,0 +1,51 @@ > +Index: crypto/chacha/asm/chacha-armv8.pl > +--- crypto/chacha/asm/chacha-armv8.pl.orig > ++++ crypto/chacha/asm/chacha-armv8.pl > +@@ -122,7 +122,7 @@ my ($a3,$b3,$c3,$d3)=map(($_&~3)+(($_+1)&3),($a2,$b2,$ > + $code.=<<___; > + #include "arm_arch.h" > + > +-.text > ++.rodata > + > + .extern OPENSSL_armcap_P > + .hidden OPENSSL_armcap_P > +@@ -140,6 +140,8 @@ $code.=<<___; > + #endif > + .asciz "ChaCha20 for ARMv8, CRYPTOGAMS by <appro\@openssl.org>" > + > ++.text > ++ > + .globl ChaCha20_ctr32 > + .type ChaCha20_ctr32,%function > + .align 5 > +@@ -162,7 +164,8 @@ ChaCha20_ctr32: > + stp x29,x30,[sp,#-96]! > + add x29,sp,#0 > + > +- adr @x[0],.Lsigma > ++ adrp @x[0],.Lsigma > ++ add @x[0],@x[0],:lo12:.Lsigma > + stp x19,x20,[sp,#16] > + stp x21,x22,[sp,#32] > + stp x23,x24,[sp,#48] > +@@ -385,7 +388,8 @@ ChaCha20_neon: > + stp x29,x30,[sp,#-96]! > + add x29,sp,#0 > + > +- adr @x[0],.Lsigma > ++ adrp @x[0],.Lsigma > ++ add @x[0],@x[0],:lo12:.Lsigma > + stp x19,x20,[sp,#16] > + stp x21,x22,[sp,#32] > + stp x23,x24,[sp,#48] > +@@ -707,7 +711,8 @@ ChaCha20_512_neon: > + stp x29,x30,[sp,#-96]! > + add x29,sp,#0 > + > +- adr @x[0],.Lsigma > ++ adrp @x[0],.Lsigma > ++ add @x[0],@x[0],:lo12:.Lsigma > + stp x19,x20,[sp,#16] > + stp x21,x22,[sp,#32] > + stp x23,x24,[sp,#48] > Index: patches/patch-crypto_ec_asm_ecp_nistz256-armv8_pl > =================================================================== > RCS file: patches/patch-crypto_ec_asm_ecp_nistz256-armv8_pl > diff -N patches/patch-crypto_ec_asm_ecp_nistz256-armv8_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_ec_asm_ecp_nistz256-armv8_pl 14 Jan 2023 15:38:45 > -0000 > @@ -0,0 +1,233 @@ > +Index: crypto/ec/asm/ecp_nistz256-armv8.pl > +--- crypto/ec/asm/ecp_nistz256-armv8.pl.orig > ++++ crypto/ec/asm/ecp_nistz256-armv8.pl > +@@ -52,7 +52,7 @@ my ($acc6,$acc7)=($ap,$bp); # used in > __ecp_nistz256_s > + $code.=<<___; > + #include "arm_arch.h" > + > +-.text > ++.rodata > + ___ > + ######################################################################## > + # Convert ecp_nistz256_table.c to layout expected by ecp_nistz_gather_w7 > +@@ -114,6 +114,8 @@ $code.=<<___; > + .quad 0xccd1c8aaee00bc4f > + .asciz "ECP_NISTZ256 for ARMv8, CRYPTOGAMS by <appro\@openssl.org>" > + > ++.text > ++ > + // void ecp_nistz256_to_mont(BN_ULONG x0[4],const BN_ULONG x1[4]); > + .globl ecp_nistz256_to_mont > + .type ecp_nistz256_to_mont,%function > +@@ -124,12 +126,16 @@ ecp_nistz256_to_mont: > + add x29,sp,#0 > + stp x19,x20,[sp,#16] > + > +- ldr $bi,.LRR // bp[0] > ++ adrp $bi,.LRR > ++ ldr $bi,[$bi,:lo12:.LRR] // bp[0] > + ldp $a0,$a1,[$ap] > + ldp $a2,$a3,[$ap,#16] > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > +- adr $bp,.LRR // &bp[0] > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > ++ adrp $bp,.LRR // &bp[0] > ++ add $bp,$bp,:lo12:.LRR > + > + bl __ecp_nistz256_mul_mont > + > +@@ -152,9 +158,12 @@ ecp_nistz256_from_mont: > + mov $bi,#1 // bp[0] > + ldp $a0,$a1,[$ap] > + ldp $a2,$a3,[$ap,#16] > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > +- adr $bp,.Lone // &bp[0] > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > ++ adrp $bp,.Lone // &bp[0] > ++ add $bp,$bp,:lo12:.Lone > + > + bl __ecp_nistz256_mul_mont > + > +@@ -178,8 +187,10 @@ ecp_nistz256_mul_mont: > + ldr $bi,[$bp] // bp[0] > + ldp $a0,$a1,[$ap] > + ldp $a2,$a3,[$ap,#16] > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + > + bl __ecp_nistz256_mul_mont > + > +@@ -201,8 +212,10 @@ ecp_nistz256_sqr_mont: > + > + ldp $a0,$a1,[$ap] > + ldp $a2,$a3,[$ap,#16] > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + > + bl __ecp_nistz256_sqr_mont > + > +@@ -226,8 +239,10 @@ ecp_nistz256_add: > + ldp $t0,$t1,[$bp] > + ldp $acc2,$acc3,[$ap,#16] > + ldp $t2,$t3,[$bp,#16] > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + > + bl __ecp_nistz256_add > + > +@@ -247,8 +262,10 @@ ecp_nistz256_div_by_2: > + > + ldp $acc0,$acc1,[$ap] > + ldp $acc2,$acc3,[$ap,#16] > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + > + bl __ecp_nistz256_div_by_2 > + > +@@ -268,8 +285,10 @@ ecp_nistz256_mul_by_2: > + > + ldp $acc0,$acc1,[$ap] > + ldp $acc2,$acc3,[$ap,#16] > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + mov $t0,$acc0 > + mov $t1,$acc1 > + mov $t2,$acc2 > +@@ -293,8 +312,10 @@ ecp_nistz256_mul_by_3: > + > + ldp $acc0,$acc1,[$ap] > + ldp $acc2,$acc3,[$ap,#16] > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + mov $t0,$acc0 > + mov $t1,$acc1 > + mov $t2,$acc2 > +@@ -330,8 +351,10 @@ ecp_nistz256_sub: > + > + ldp $acc0,$acc1,[$ap] > + ldp $acc2,$acc3,[$ap,#16] > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + > + bl __ecp_nistz256_sub_from > + > +@@ -354,8 +377,10 @@ ecp_nistz256_neg: > + mov $acc1,xzr > + mov $acc2,xzr > + mov $acc3,xzr > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + > + bl __ecp_nistz256_sub_from > + > +@@ -733,9 +758,11 @@ ecp_nistz256_point_double: > + mov $rp_real,$rp > + ldp $acc2,$acc3,[$ap,#48] > + mov $ap_real,$ap > +- ldr $poly1,.Lpoly+8 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > + mov $t0,$acc0 > +- ldr $poly3,.Lpoly+24 > ++ ldr $poly3,[$poly3,#24] > + mov $t1,$acc1 > + ldp $a0,$a1,[$ap_real,#64] // forward load for p256_sqr_mont > + mov $t2,$acc2 > +@@ -894,8 +921,10 @@ ecp_nistz256_point_add: > + mov $rp_real,$rp > + mov $ap_real,$ap > + mov $bp_real,$bp > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + orr $t0,$a0,$a1 > + orr $t2,$a2,$a3 > + orr $in2infty,$t0,$t2 > +@@ -1148,8 +1177,10 @@ ecp_nistz256_point_add_affine: > + mov $rp_real,$rp > + mov $ap_real,$ap > + mov $bp_real,$bp > +- ldr $poly1,.Lpoly+8 > +- ldr $poly3,.Lpoly+24 > ++ adrp $poly3,.Lpoly > ++ add $poly3,$poly3,:lo12:.Lpoly > ++ ldr $poly1,[$poly3,#8] > ++ ldr $poly3,[$poly3,#24] > + > + ldp $a0,$a1,[$ap,#64] // in1_z > + ldp $a2,$a3,[$ap,#64+16] > +@@ -1300,7 +1331,9 @@ $code.=<<___; > + stp $acc2,$acc3,[$rp_real,#$i+16] > + ___ > + $code.=<<___ if ($i == 0); > +- adr $bp_real,.Lone_mont-64 > ++ adrp $bp_real,.Lone_mont > ++ add $bp,$bp,:lo12:.Lone_mont > ++ sub $bp,$bp,#64 > + ___ > + } > + $code.=<<___; > +@@ -1349,7 +1382,8 @@ ecp_nistz256_ord_mul_mont: > + stp x21,x22,[sp,#32] > + stp x23,x24,[sp,#48] > + > +- adr $ordk,.Lord > ++ adrp $ordk,.Lord > ++ add $ordk,$ordk,:lo12:.Lord > + ldr $bi,[$bp] // bp[0] > + ldp $a0,$a1,[$ap] > + ldp $a2,$a3,[$ap,#16] > +@@ -1490,7 +1524,8 @@ ecp_nistz256_ord_sqr_mont: > + stp x21,x22,[sp,#32] > + stp x23,x24,[sp,#48] > + > +- adr $ordk,.Lord > ++ adrp $ordk,.Lord > ++ add $ordk,$ordk,:lo12:.Lord > + ldp $a0,$a1,[$ap] > + ldp $a2,$a3,[$ap,#16] > + > Index: patches/patch-crypto_modes_asm_ghashv8-armx_pl > =================================================================== > RCS file: patches/patch-crypto_modes_asm_ghashv8-armx_pl > diff -N patches/patch-crypto_modes_asm_ghashv8-armx_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_modes_asm_ghashv8-armx_pl 14 Jan 2023 15:38:45 > -0000 > @@ -0,0 +1,11 @@ > +Index: crypto/modes/asm/ghashv8-armx.pl > +--- crypto/modes/asm/ghashv8-armx.pl.orig > ++++ crypto/modes/asm/ghashv8-armx.pl > +@@ -698,6 +698,7 @@ ___ > + } > + > + $code.=<<___; > ++.rodata > + .asciz "GHASH for ARMv8, CRYPTOGAMS by <appro\@openssl.org>" > + .align 2 > + #endif > Index: patches/patch-crypto_poly1305_asm_poly1305-armv8_pl > =================================================================== > RCS file: patches/patch-crypto_poly1305_asm_poly1305-armv8_pl > diff -N patches/patch-crypto_poly1305_asm_poly1305-armv8_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_poly1305_asm_poly1305-armv8_pl 14 Jan 2023 > 15:38:45 -0000 > @@ -0,0 +1,52 @@ > +Index: crypto/poly1305/asm/poly1305-armv8.pl > +--- crypto/poly1305/asm/poly1305-armv8.pl.orig > ++++ crypto/poly1305/asm/poly1305-armv8.pl > +@@ -75,17 +75,12 @@ poly1305_init: > + csel x0,xzr,x0,eq > + b.eq .Lno_key > + > +-#ifdef __ILP32__ > +- ldrsw $t1,.LOPENSSL_armcap_P > +-#else > +- ldr $t1,.LOPENSSL_armcap_P > +-#endif > +- adr $t0,.LOPENSSL_armcap_P > ++ adrp x17,OPENSSL_armcap_P > ++ ldr w17,[x17,#:lo12:OPENSSL_armcap_P] > + > + ldp $r0,$r1,[$inp] // load key > + mov $s1,#0xfffffffc0fffffff > + movk $s1,#0x0fff,lsl#48 > +- ldr w17,[$t0,$t1] > + #ifdef __ARMEB__ > + rev $r0,$r0 // flip bytes > + rev $r1,$r1 > +@@ -430,7 +425,8 @@ poly1305_blocks_neon: > + ldr x30,[sp,#8] > + > + add $in2,$inp,#32 > +- adr $zeros,.Lzeros > ++ adrp $zeros,.Lzeros > ++ add $zeros,$zeros,:lo12:.Lzeros > + subs $len,$len,#64 > + csel $in2,$zeros,$in2,lo > + > +@@ -442,7 +438,8 @@ poly1305_blocks_neon: > + .align 4 > + .Leven_neon: > + add $in2,$inp,#32 > +- adr $zeros,.Lzeros > ++ adrp $zeros,.Lzeros > ++ add $zeros,$zeros,:lo12:.Lzeros > + subs $len,$len,#64 > + csel $in2,$zeros,$in2,lo > + > +@@ -920,6 +917,8 @@ poly1305_emit_neon: > + > + ret > + .size poly1305_emit_neon,.-poly1305_emit_neon > ++ > ++.rodata > + > + .align 5 > + .Lzeros: > Index: patches/patch-crypto_sha_asm_keccak1600-armv8_pl > =================================================================== > RCS file: patches/patch-crypto_sha_asm_keccak1600-armv8_pl > diff -N patches/patch-crypto_sha_asm_keccak1600-armv8_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_sha_asm_keccak1600-armv8_pl 14 Jan 2023 15:38:45 > -0000 > @@ -0,0 +1,45 @@ > +Index: crypto/sha/asm/keccak1600-armv8.pl > +--- crypto/sha/asm/keccak1600-armv8.pl.orig > ++++ crypto/sha/asm/keccak1600-armv8.pl > +@@ -76,7 +76,7 @@ my @rhotates = ([ 0, 1, 62, 28, 27 ], > + [ 18, 2, 61, 56, 14 ]); > + > + $code.=<<___; > +-.text > ++.rodata > + > + .align 8 // strategic alignment and padding that allows to use > + // address value as loop termination condition... > +@@ -117,10 +117,13 @@ my @A = map([ "x$_", "x".($_+1), "x".($_+2), "x".($_+3 > + my @C = map("x$_", (26,27,28,30)); > + > + $code.=<<___; > ++.text > ++ > + .type KeccakF1600_int,%function > + .align 5 > + KeccakF1600_int: > +- adr $C[2],iotas > ++ adrp $C[2],iotas > ++ add $C[2],$C[2],:lo12:iotas > + .inst 0xd503233f // paciasp > + stp $C[2],x30,[sp,#16] // 32 bytes on top are mine > + b .Loop > +@@ -547,7 +550,8 @@ $code.=<<___; > + .align 5 > + KeccakF1600_ce: > + mov x9,#12 > +- adr x10,iotas > ++ adrp x10,iotas > ++ add x10,x10,:lo12:iotas > + b .Loop_ce > + .align 4 > + .Loop_ce: > +@@ -849,6 +853,7 @@ SHA3_squeeze_cext: > + ___ > + } }}} > + $code.=<<___; > ++.rodata > + .asciz "Keccak-1600 absorb and squeeze for ARMv8, CRYPTOGAMS by > <appro\@openssl.org>" > + ___ > + > Index: patches/patch-crypto_sha_asm_sha1-armv8_pl > =================================================================== > RCS file: patches/patch-crypto_sha_asm_sha1-armv8_pl > diff -N patches/patch-crypto_sha_asm_sha1-armv8_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_sha_asm_sha1-armv8_pl 14 Jan 2023 15:38:45 > -0000 > @@ -0,0 +1,40 @@ > +Index: crypto/sha/asm/sha1-armv8.pl > +--- crypto/sha/asm/sha1-armv8.pl.orig > ++++ crypto/sha/asm/sha1-armv8.pl > +@@ -181,14 +181,8 @@ $code.=<<___; > + .type sha1_block_data_order,%function > + .align 6 > + sha1_block_data_order: > +-#ifdef __ILP32__ > +- ldrsw x16,.LOPENSSL_armcap_P > +-#else > +- ldr x16,.LOPENSSL_armcap_P > +-#endif > +- adr x17,.LOPENSSL_armcap_P > +- add x16,x16,x17 > +- ldr w16,[x16] > ++ adrp x16,OPENSSL_armcap_P > ++ ldr w16,[x16,#:lo12:OPENSSL_armcap_P] > + tst w16,#ARMV8_SHA1 > + b.ne .Lv8_entry > + > +@@ -256,7 +250,8 @@ sha1_block_armv8: > + stp x29,x30,[sp,#-16]! > + add x29,sp,#0 > + > +- adr x4,.Lconst > ++ adrp x4,.Lconst > ++ add x4,x4,:lo12:.Lconst > + eor $E,$E,$E > + ld1.32 {$ABCD},[$ctx],#16 > + ld1.32 {$E}[0],[$ctx] > +@@ -316,6 +311,9 @@ $code.=<<___; > + ldr x29,[sp],#16 > + ret > + .size sha1_block_armv8,.-sha1_block_armv8 > ++ > ++.rodata > ++ > + .align 6 > + .Lconst: > + .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 //K_00_19 > Index: patches/patch-crypto_sha_asm_sha512-armv8_pl > =================================================================== > RCS file: patches/patch-crypto_sha_asm_sha512-armv8_pl > diff -N patches/patch-crypto_sha_asm_sha512-armv8_pl > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-crypto_sha_asm_sha512-armv8_pl 14 Jan 2023 15:38:45 > -0000 > @@ -0,0 +1,78 @@ > +Index: crypto/sha/asm/sha512-armv8.pl > +--- crypto/sha/asm/sha512-armv8.pl.orig > ++++ crypto/sha/asm/sha512-armv8.pl > +@@ -199,14 +199,8 @@ $code.=<<___; > + .align 6 > + $func: > + #ifndef __KERNEL__ > +-# ifdef __ILP32__ > +- ldrsw x16,.LOPENSSL_armcap_P > +-# else > +- ldr x16,.LOPENSSL_armcap_P > +-# endif > +- adr x17,.LOPENSSL_armcap_P > +- add x16,x16,x17 > +- ldr w16,[x16] > ++ adrp x16,OPENSSL_armcap_P > ++ ldr w16,[x16,#:lo12:OPENSSL_armcap_P] > + ___ > + $code.=<<___ if ($SZ==4); > + tst w16,#ARMV8_SHA256 > +@@ -236,7 +230,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 +281,8 @@ $code.=<<___; > + ret > + .size $func,.-$func > + > ++.rodata > ++ > + .align 6 > + .type .LK$BITS,%object > + .LK$BITS: > +@@ -365,6 +362,8 @@ $code.=<<___; > + #endif > + .asciz "SHA$BITS block transform for ARMv8, CRYPTOGAMS by > <appro\@openssl.org>" > + .align 2 > ++ > ++.text > + ___ > + > + if ($SZ==4) { > +@@ -385,7 +384,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 +648,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 > +@@ -761,7 +762,8 @@ sha512_block_armv8: > + ld1 {@MSG[4]-@MSG[7]},[$inp],#64 > + > + ld1.64 {@H[0]-@H[3]},[$ctx] // load context > +- adr $Ktbl,.LK512 > ++ adrp $Ktbl,.LK512 > ++ add $Ktbl,$Ktbl,:lo12:.LK512 > + > + rev64 @MSG[0],@MSG[0] > + rev64 @MSG[1],@MSG[1] >