> Date: Sat, 14 Jan 2023 16:56:32 +0100
> From: Theo Buehler <tb@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.=<<___;
> +
No comments:
Post a Comment