aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--patches/asm/masm-align-64.patch30
-rwxr-xr-xupdate.sh5
2 files changed, 32 insertions, 3 deletions
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 @@
1commit 3797e05de28ab07bb522898cbf022bdf67a71c99
2Author: Brent Cook <busterb@gmail.com>
3Date: Sun Feb 4 22:53:59 2024 -0600
4
5 align read-only sections on masm/windows to 64 bytes
6
7 Avoid conflicts where alignment is specified later in the underlying
8 assembly.
9
10diff --git a/src/lib/libcrypto/perlasm/x86_64-xlate.pl b/src/lib/libcrypto/perlasm/x86_64-xlate.pl
11index 5dbed2a8c..d8b607b5c 100755
12--- a/src/lib/libcrypto/perlasm/x86_64-xlate.pl
13+++ b/src/lib/libcrypto/perlasm/x86_64-xlate.pl
14@@ -567,7 +567,15 @@ my %globals;
15 $v.="$line\tSEGMENT";
16 if ($line=~/\.([prx])data/) {
17 $v.=" READONLY";
18- $v.=" ALIGN(".($1 eq "p" ? 4 : 8).")" if ($masm>=$masmref);
19+ if ($masm>=$masmref) {
20+ if ($1 eq "r") {
21+ $v.=" ALIGN(64)";
22+ } elsif ($1 eq "p") {
23+ $v.=" ALIGN(4)";
24+ } else {
25+ $v.=" ALIGN(8)";
26+ }
27+ }
28 } elsif ($line=~/\.CRT\$/i) {
29 $v.=" READONLY ";
30 $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() {
240setup_asm_generator() { 240setup_asm_generator() {
241 rm -fr $asm_src 241 rm -fr $asm_src
242 cp -a $libcrypto_src $asm_src 242 cp -a $libcrypto_src $asm_src
243 for i in `ls -1 patches/asm/*.patch | sort -n`; do 243 patch -d $asm_src -p0 < patches/asm/endbr64.patch
244 patch -d $asm_src -p0 < $i 1> /dev/null 2>/dev/null ; 244 patch -d $asm_src -p4 < patches/asm/masm-align-64.patch
245 done
246} 245}
247 246
248setup_asm_generator 247setup_asm_generator