From 849b82a11d72ca02a63517d93855de2ddddff11b Mon Sep 17 00:00:00 2001 From: kettenis <> Date: Sun, 7 Jan 2018 12:35:52 +0000 Subject: On OpenBSD/armv7 we deliberately trap unaligned access. Unfortunately the assembly code in libcrypto assumes unaligned access is allowed for ARMv7. Make these paths conditional on __STRICT_ALIGNMENT not being defined and define __STRICT_ALIGNMENT in arm_arch.h for OpenBSD. ok tom@ --- src/lib/libcrypto/sha/asm/sha1-armv4-large.pl | 2 +- src/lib/libcrypto/sha/asm/sha256-armv4.pl | 4 ++-- src/lib/libcrypto/sha/asm/sha512-armv4.pl | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/lib/libcrypto/sha') diff --git a/src/lib/libcrypto/sha/asm/sha1-armv4-large.pl b/src/lib/libcrypto/sha/asm/sha1-armv4-large.pl index 33da3e0e3c..8f0cdaf83c 100644 --- a/src/lib/libcrypto/sha/asm/sha1-armv4-large.pl +++ b/src/lib/libcrypto/sha/asm/sha1-armv4-large.pl @@ -95,7 +95,7 @@ ___ sub BODY_00_15 { my ($a,$b,$c,$d,$e)=@_; $code.=<<___; -#if __ARM_ARCH__<7 +#if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) ldrb $t1,[$inp,#2] ldrb $t0,[$inp,#3] ldrb $t2,[$inp,#1] diff --git a/src/lib/libcrypto/sha/asm/sha256-armv4.pl b/src/lib/libcrypto/sha/asm/sha256-armv4.pl index 9c84e8d93c..292520731c 100644 --- a/src/lib/libcrypto/sha/asm/sha256-armv4.pl +++ b/src/lib/libcrypto/sha/asm/sha256-armv4.pl @@ -51,7 +51,7 @@ sub BODY_00_15 { my ($i,$a,$b,$c,$d,$e,$f,$g,$h) = @_; $code.=<<___ if ($i<16); -#if __ARM_ARCH__>=7 +#if __ARM_ARCH__>=7 && !defined(__STRICT_ALIGNMENT) ldr $T1,[$inp],#4 #else ldrb $T1,[$inp,#3] @ $i @@ -70,7 +70,7 @@ $code.=<<___; eor $t1,$f,$g #if $i>=16 add $T1,$T1,$t3 @ from BODY_16_xx -#elif __ARM_ARCH__>=7 && defined(__ARMEL__) +#elif __ARM_ARCH__>=7 && defined(__ARMEL__) && !defined(__STRICT_ALIGNMENT) rev $T1,$T1 #endif #if $i==15 diff --git a/src/lib/libcrypto/sha/asm/sha512-armv4.pl b/src/lib/libcrypto/sha/asm/sha512-armv4.pl index 7faf37b147..28ae155f4b 100644 --- a/src/lib/libcrypto/sha/asm/sha512-armv4.pl +++ b/src/lib/libcrypto/sha/asm/sha512-armv4.pl @@ -270,7 +270,7 @@ sha512_block_data_order: str $Thi,[sp,#$Foff+4] .L00_15: -#if __ARM_ARCH__<7 +#if __ARM_ARCH__<7 || defined(__STRICT_ALIGNMENT) ldrb $Tlo,[$inp,#7] ldrb $t0, [$inp,#6] ldrb $t1, [$inp,#5] -- cgit v1.2.3-55-g6feb