From 37cff9e9a408570a96e3080249f8c70f6296a26f Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Mon, 8 Jan 2024 21:57:01 -0600 Subject: align read only sections on masm/windows to 64 bytes Avoid conflicts where alignment is specified later in the underlying assembly. --- patches/asm/masm-align-64.patch | 30 ++++++++++++++++++++++++++++++ update.sh | 5 ++--- 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 patches/asm/masm-align-64.patch diff --git a/patches/asm/masm-align-64.patch b/patches/asm/masm-align-64.patch new file mode 100644 index 0000000..ba41c71 --- /dev/null +++ b/patches/asm/masm-align-64.patch @@ -0,0 +1,30 @@ +commit 3797e05de28ab07bb522898cbf022bdf67a71c99 +Author: Brent Cook +Date: Sun Feb 4 22:53:59 2024 -0600 + + align read-only sections on masm/windows to 64 bytes + + Avoid conflicts where alignment is specified later in the underlying + assembly. + +diff --git a/src/lib/libcrypto/perlasm/x86_64-xlate.pl b/src/lib/libcrypto/perlasm/x86_64-xlate.pl +index 5dbed2a8c..d8b607b5c 100755 +--- a/src/lib/libcrypto/perlasm/x86_64-xlate.pl ++++ b/src/lib/libcrypto/perlasm/x86_64-xlate.pl +@@ -567,7 +567,15 @@ my %globals; + $v.="$line\tSEGMENT"; + if ($line=~/\.([prx])data/) { + $v.=" READONLY"; +- $v.=" ALIGN(".($1 eq "p" ? 4 : 8).")" if ($masm>=$masmref); ++ if ($masm>=$masmref) { ++ if ($1 eq "r") { ++ $v.=" ALIGN(64)"; ++ } elsif ($1 eq "p") { ++ $v.=" ALIGN(4)"; ++ } else { ++ $v.=" ALIGN(8)"; ++ } ++ } + } elsif ($line=~/\.CRT\$/i) { + $v.=" READONLY "; + $v.=$masm>=$masmref ? "ALIGN(8)" : "DWORD"; diff --git a/update.sh b/update.sh index 58bbfa5..70a6ee6 100755 --- a/update.sh +++ b/update.sh @@ -240,9 +240,8 @@ gen_asm() { setup_asm_generator() { rm -fr $asm_src cp -a $libcrypto_src $asm_src - for i in `ls -1 patches/asm/*.patch | sort -n`; do - patch -d $asm_src -p0 < $i 1> /dev/null 2>/dev/null ; - done + patch -d $asm_src -p0 < patches/asm/endbr64.patch + patch -d $asm_src -p4 < patches/asm/masm-align-64.patch } setup_asm_generator -- cgit v1.2.3-55-g6feb