diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c2e4ba04f..2f0dfa0e70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -341,9 +341,6 @@ elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS" AND "${CMAKE_SYSTEM_PROCESSOR}" S set(HOST_X86_64 true) elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(x86_64|amd64|AMD64)") set(HOST_X86_64 true) - if (MSVC) - set(ENABLE_ASM false) - endif() elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(i[3-6]86|[xX]86)") set(ENABLE_ASM false) set(HOST_I386 true) @@ -404,7 +401,6 @@ if(SIZEOF_TIME_T STREQUAL "4") message(WARNING " ** Warning, this system is unable to represent times past 2038\n" " ** It will behave incorrectly when handling valid RFC5280 dates") endif() -add_definitions(-DSIZEOF_TIME_T=${SIZEOF_TIME_T}) set(OPENSSL_LIBS ssl crypto ${PLATFORM_LIBS}) set(LIBTLS_LIBS tls ${PLATFORM_LIBS}) diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index d61e607ccf..7efb143ed8 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -111,7 +111,6 @@ if(HOST_ASM_MACOSX_X86_64) bn/arch/amd64/word_clz.S bn/arch/amd64/bn_arch.c ) - add_definitions(-Dendbr64=) add_definitions(-DAES_ASM) add_definitions(-DBSAES_ASM) add_definitions(-DVPAES_ASM) @@ -153,6 +152,7 @@ if(HOST_ASM_MASM_X86_64) whrlpool/wp-masm-x86_64.S cpuid-masm-x86_64.S ) + add_definitions(-Dendbr64=) add_definitions(-DAES_ASM) add_definitions(-DBSAES_ASM) add_definitions(-DVPAES_ASM) @@ -193,6 +193,7 @@ if(HOST_ASM_MINGW64_X86_64) whrlpool/wp-mingw64-x86_64.S cpuid-mingw64-x86_64.S ) + add_definitions(-Dendbr64=) add_definitions(-DAES_ASM) add_definitions(-DBSAES_ASM) add_definitions(-DVPAES_ASM) diff --git a/crypto/Makefile.am.macosx-x86_64 b/crypto/Makefile.am.macosx-x86_64 index 219a7acb42..b9b89cf04b 100644 --- a/crypto/Makefile.am.macosx-x86_64 +++ b/crypto/Makefile.am.macosx-x86_64 @@ -34,7 +34,6 @@ ASM_X86_64_MACOSX += bn/arch/amd64/bn_arch.c EXTRA_DIST += $(ASM_X86_64_MACOSX) if HOST_ASM_MACOSX_X86_64 -libcrypto_la_CPPFLAGS += -Dendbr64= libcrypto_la_CPPFLAGS += -DAES_ASM libcrypto_la_CPPFLAGS += -DBSAES_ASM libcrypto_la_CPPFLAGS += -DVPAES_ASM diff --git a/crypto/compat/ui_openssl_win.c b/crypto/compat/ui_openssl_win.c index c245111d66..b6a621f565 100644 --- a/crypto/compat/ui_openssl_win.c +++ b/crypto/compat/ui_openssl_win.c @@ -139,9 +139,6 @@ static int is_a_tty; /* Declare static functions */ static int read_till_nl(FILE *); -static void recsig(int); -static void pushsig(void); -static void popsig(void); static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl); static int read_string(UI *ui, UI_STRING *uis); @@ -236,8 +233,6 @@ read_till_nl(FILE *in) return 1; } -static volatile sig_atomic_t intr_signal; - static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) { @@ -247,12 +242,9 @@ read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) int maxsize = BUFSIZ - 1; char *p; - intr_signal = 0; ok = 0; ps = 0; - pushsig(); - ps = 1; if (!echo && !noecho_console(ui)) @@ -276,16 +268,11 @@ read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl) ok = 1; error: - if (intr_signal == SIGINT) - ok = -1; if (!echo) fprintf(tty_out, "\n"); if (ps >= 2 && !echo && !echo_console(ui)) ok = 0; - if (ps >= 1) - popsig(); - explicit_bzero(result, BUFSIZ); return ok; } @@ -348,32 +335,3 @@ close_console(UI *ui) return 1; } - -/* Internal functions to handle signals and act on them */ -static void -pushsig(void) -{ - savsig[SIGABRT] = signal(SIGABRT, recsig); - savsig[SIGFPE] = signal(SIGFPE, recsig); - savsig[SIGILL] = signal(SIGILL, recsig); - savsig[SIGINT] = signal(SIGINT, recsig); - savsig[SIGSEGV] = signal(SIGSEGV, recsig); - savsig[SIGTERM] = signal(SIGTERM, recsig); -} - -static void -popsig(void) -{ - signal(SIGABRT, savsig[SIGABRT]); - signal(SIGFPE, savsig[SIGFPE]); - signal(SIGILL, savsig[SIGILL]); - signal(SIGINT, savsig[SIGINT]); - signal(SIGSEGV, savsig[SIGSEGV]); - signal(SIGTERM, savsig[SIGTERM]); -} - -static void -recsig(int i) -{ - intr_signal = i; -} diff --git a/include/compat/time.h b/include/compat/time.h index 540807dd88..27485218fb 100644 --- a/include/compat/time.h +++ b/include/compat/time.h @@ -3,6 +3,14 @@ * sys/time.h compatibility shim */ +#ifndef SIZEOF_TIME_T +#ifdef SMALL_TIME_T +#define SIZEOF_TIME_T 4 +#else +#define SIZEOF_TIME_T 8 +#endif +#endif + #ifdef _MSC_VER #if _MSC_VER >= 1900 #include <../ucrt/time.h> diff --git a/patches/asm/0001-Revert-Add-endbr64-where-needed-by-inspection.-Passe.patch b/patches/asm/0001-Revert-Add-endbr64-where-needed-by-inspection.-Passe.patch new file mode 100644 index 0000000000..8ec94cdeb2 --- /dev/null +++ b/patches/asm/0001-Revert-Add-endbr64-where-needed-by-inspection.-Passe.patch @@ -0,0 +1,1055 @@ +From 5f7fafff280e6e17d7fafea20fda99762d74581f Mon Sep 17 00:00:00 2001 +From: Brent Cook +Date: Mon, 30 Oct 2023 21:59:32 -0500 +Subject: [PATCH 1/4] Revert "Add endbr64 where needed by inspection. Passes + regresson tests." + +This reverts commit e2118101444d3cf3cab87297b363cecd5357ae89. +--- + src/lib/libcrypto/aes/asm/aes-x86_64.pl | 13 ------------- + src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl | 4 ---- + src/lib/libcrypto/aes/asm/aesni-x86_64.pl | 15 --------------- + src/lib/libcrypto/aes/asm/bsaes-x86_64.pl | 14 -------------- + src/lib/libcrypto/aes/asm/vpaes-x86_64.pl | 14 -------------- + src/lib/libcrypto/bn/arch/amd64/bignum_add.S | 1 - + src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S | 1 - + src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S | 1 - + src/lib/libcrypto/bn/arch/amd64/bignum_mul.S | 1 - + .../libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S | 1 - + .../libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S | 1 - + src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S | 1 - + .../libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S | 1 - + .../libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S | 1 - + src/lib/libcrypto/bn/arch/amd64/bignum_sub.S | 1 - + src/lib/libcrypto/bn/arch/amd64/word_clz.S | 1 - + src/lib/libcrypto/bn/asm/modexp512-x86_64.pl | 5 ----- + src/lib/libcrypto/bn/asm/x86_64-mont.pl | 3 --- + src/lib/libcrypto/bn/asm/x86_64-mont5.pl | 5 ----- + src/lib/libcrypto/camellia/asm/cmll-x86_64.pl | 8 -------- + src/lib/libcrypto/md5/asm/md5-x86_64.pl | 1 - + src/lib/libcrypto/modes/asm/ghash-x86_64.pl | 4 ---- + src/lib/libcrypto/rc4/asm/rc4-md5-x86_64.pl | 6 ++---- + src/lib/libcrypto/rc4/asm/rc4-x86_64.pl | 7 ++----- + src/lib/libcrypto/sha/asm/sha1-x86_64.pl | 4 ---- + src/lib/libcrypto/sha/asm/sha512-x86_64.pl | 1 - + src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl | 1 - + src/lib/libcrypto/x86_64cpuid.pl | 2 -- + 28 files changed, 4 insertions(+), 114 deletions(-) + +diff --git a/src/lib/libcrypto/aes/asm/aes-x86_64.pl b/src/lib/libcrypto/aes/asm/aes-x86_64.pl +index 78ba20ca5..b7399b552 100755 +--- a/src/lib/libcrypto/aes/asm/aes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aes-x86_64.pl +@@ -318,7 +318,6 @@ $code.=<<___; + .type _x86_64_AES_encrypt,\@abi-omnipotent + .align 16 + _x86_64_AES_encrypt: +- endbr64 + xor 0($key),$s0 # xor with key + xor 4($key),$s1 + xor 8($key),$s2 +@@ -549,7 +548,6 @@ $code.=<<___; + .type _x86_64_AES_encrypt_compact,\@abi-omnipotent + .align 16 + _x86_64_AES_encrypt_compact: +- endbr64 + lea 128($sbox),$inp # size optimization + mov 0-128($inp),$acc1 # prefetch Te4 + mov 32-128($inp),$acc2 +@@ -595,7 +593,6 @@ $code.=<<___; + .hidden asm_AES_encrypt + asm_AES_encrypt: + AES_encrypt: +- endbr64 + push %rbx + push %rbp + push %r12 +@@ -887,7 +884,6 @@ $code.=<<___; + .type _x86_64_AES_decrypt,\@abi-omnipotent + .align 16 + _x86_64_AES_decrypt: +- endbr64 + xor 0($key),$s0 # xor with key + xor 4($key),$s1 + xor 8($key),$s2 +@@ -1142,7 +1138,6 @@ $code.=<<___; + .type _x86_64_AES_decrypt_compact,\@abi-omnipotent + .align 16 + _x86_64_AES_decrypt_compact: +- endbr64 + lea 128($sbox),$inp # size optimization + mov 0-128($inp),$acc1 # prefetch Td4 + mov 32-128($inp),$acc2 +@@ -1197,7 +1192,6 @@ $code.=<<___; + .hidden asm_AES_decrypt + asm_AES_decrypt: + AES_decrypt: +- endbr64 + push %rbx + push %rbp + push %r12 +@@ -1297,7 +1291,6 @@ $code.=<<___; + .type AES_set_encrypt_key,\@function,3 + .align 16 + AES_set_encrypt_key: +- endbr64 + push %rbx + push %rbp + push %r12 # redundant, but allows to share +@@ -1323,7 +1316,6 @@ AES_set_encrypt_key: + .type _x86_64_AES_set_encrypt_key,\@abi-omnipotent + .align 16 + _x86_64_AES_set_encrypt_key: +- endbr64 + mov %esi,%ecx # %ecx=bits + mov %rdi,%rsi # %rsi=userKey + mov %rdx,%rdi # %rdi=key +@@ -1569,7 +1561,6 @@ $code.=<<___; + .type AES_set_decrypt_key,\@function,3 + .align 16 + AES_set_decrypt_key: +- endbr64 + push %rbx + push %rbp + push %r12 +@@ -1669,7 +1660,6 @@ $code.=<<___; + .hidden asm_AES_cbc_encrypt + asm_AES_cbc_encrypt: + AES_cbc_encrypt: +- endbr64 + cmp \$0,%rdx # check length + je .Lcbc_epilogue + pushfq +@@ -2561,7 +2551,6 @@ $code.=<<___; + .type block_se_handler,\@abi-omnipotent + .align 16 + block_se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +@@ -2620,7 +2609,6 @@ block_se_handler: + .type key_se_handler,\@abi-omnipotent + .align 16 + key_se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +@@ -2678,7 +2666,6 @@ key_se_handler: + .type cbc_se_handler,\@abi-omnipotent + .align 16 + cbc_se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +diff --git a/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl b/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl +index 879d16793..bafa906a0 100644 +--- a/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl +@@ -89,7 +89,6 @@ $code.=<<___; + .type aesni_cbc_sha1_enc,\@abi-omnipotent + .align 16 + aesni_cbc_sha1_enc: +- endbr64 + # caller should check for SSSE3 and AES-NI bits + mov OPENSSL_ia32cap_P+0(%rip),%r10d + mov OPENSSL_ia32cap_P+4(%rip),%r11d +@@ -133,7 +132,6 @@ $code.=<<___; + .type aesni_cbc_sha1_enc_ssse3,\@function,6 + .align 16 + aesni_cbc_sha1_enc_ssse3: +- endbr64 + mov `($win64?56:8)`(%rsp),$inp # load 7th argument + #shr \$6,$len # debugging artefact + #jz .Lepilogue_ssse3 # debugging artefact +@@ -652,7 +650,6 @@ $code.=<<___; + .type aesni_cbc_sha1_enc_avx,\@function,6 + .align 16 + aesni_cbc_sha1_enc_avx: +- endbr64 + mov `($win64?56:8)`(%rsp),$inp # load 7th argument + #shr \$6,$len # debugging artefact + #jz .Lepilogue_avx # debugging artefact +@@ -1103,7 +1100,6 @@ $code.=<<___; + .type ssse3_handler,\@abi-omnipotent + .align 16 + ssse3_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +diff --git a/src/lib/libcrypto/aes/asm/aesni-x86_64.pl b/src/lib/libcrypto/aes/asm/aesni-x86_64.pl +index 07d40a84a..e662fbc7c 100644 +--- a/src/lib/libcrypto/aes/asm/aesni-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aesni-x86_64.pl +@@ -242,7 +242,6 @@ $code.=<<___; + .type ${PREFIX}_encrypt,\@abi-omnipotent + .align 16 + ${PREFIX}_encrypt: +- endbr64 + movups ($inp),$inout0 # load input + mov 240($key),$rounds # key->rounds + ___ +@@ -256,7 +255,6 @@ $code.=<<___; + .type ${PREFIX}_decrypt,\@abi-omnipotent + .align 16 + ${PREFIX}_decrypt: +- endbr64 + movups ($inp),$inout0 # load input + mov 240($key),$rounds # key->rounds + ___ +@@ -286,7 +284,6 @@ $code.=<<___; + .type _aesni_${dir}rypt3,\@abi-omnipotent + .align 16 + _aesni_${dir}rypt3: +- endbr64 + $movkey ($key),$rndkey0 + shr \$1,$rounds + $movkey 16($key),$rndkey1 +@@ -331,7 +328,6 @@ $code.=<<___; + .type _aesni_${dir}rypt4,\@abi-omnipotent + .align 16 + _aesni_${dir}rypt4: +- endbr64 + $movkey ($key),$rndkey0 + shr \$1,$rounds + $movkey 16($key),$rndkey1 +@@ -377,7 +373,6 @@ $code.=<<___; + .type _aesni_${dir}rypt6,\@abi-omnipotent + .align 16 + _aesni_${dir}rypt6: +- endbr64 + $movkey ($key),$rndkey0 + shr \$1,$rounds + $movkey 16($key),$rndkey1 +@@ -442,7 +437,6 @@ $code.=<<___; + .type _aesni_${dir}rypt8,\@abi-omnipotent + .align 16 + _aesni_${dir}rypt8: +- endbr64 + $movkey ($key),$rndkey0 + shr \$1,$rounds + $movkey 16($key),$rndkey1 +@@ -531,7 +525,6 @@ $code.=<<___; + .type aesni_ecb_encrypt,\@function,5 + .align 16 + aesni_ecb_encrypt: +- endbr64 + and \$-16,$len + jz .Lecb_ret + +@@ -837,7 +830,6 @@ $code.=<<___; + .type aesni_ccm64_encrypt_blocks,\@function,6 + .align 16 + aesni_ccm64_encrypt_blocks: +- endbr64 + ___ + $code.=<<___ if ($win64); + lea -0x58(%rsp),%rsp +@@ -2487,7 +2479,6 @@ $code.=<<___; + .type ${PREFIX}_set_decrypt_key,\@abi-omnipotent + .align 16 + ${PREFIX}_set_decrypt_key: +- endbr64 + sub \$8,%rsp + call __aesni_set_encrypt_key + shl \$4,$bits # rounds-1 after _aesni_set_encrypt_key +@@ -2538,7 +2529,6 @@ $code.=<<___; + .type ${PREFIX}_set_encrypt_key,\@abi-omnipotent + .align 16 + ${PREFIX}_set_encrypt_key: +- endbr64 + __aesni_set_encrypt_key: + sub \$8,%rsp + mov \$-1,%rax +@@ -2760,7 +2750,6 @@ $code.=<<___ if ($PREFIX eq "aesni"); + .type ecb_se_handler,\@abi-omnipotent + .align 16 + ecb_se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +@@ -2780,7 +2769,6 @@ ecb_se_handler: + .type ccm64_se_handler,\@abi-omnipotent + .align 16 + ccm64_se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +@@ -2822,7 +2810,6 @@ ccm64_se_handler: + .type ctr32_se_handler,\@abi-omnipotent + .align 16 + ctr32_se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +@@ -2858,7 +2845,6 @@ ctr32_se_handler: + .type xts_se_handler,\@abi-omnipotent + .align 16 + xts_se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +@@ -2900,7 +2886,6 @@ $code.=<<___; + .type cbc_se_handler,\@abi-omnipotent + .align 16 + cbc_se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +diff --git a/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl b/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl +index 7098ba27f..20e9e1f71 100644 +--- a/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl +@@ -813,7 +813,6 @@ $code.=<<___; + .type _bsaes_encrypt8,\@abi-omnipotent + .align 64 + _bsaes_encrypt8: +- endbr64 + lea .LBS0(%rip), $const # constants table + + movdqa ($key), @XMM[9] # round 0 key +@@ -878,7 +877,6 @@ $code.=<<___; + .type _bsaes_decrypt8,\@abi-omnipotent + .align 64 + _bsaes_decrypt8: +- endbr64 + lea .LBS0(%rip), $const # constants table + + movdqa ($key), @XMM[9] # round 0 key +@@ -970,7 +968,6 @@ $code.=<<___; + .type _bsaes_key_convert,\@abi-omnipotent + .align 16 + _bsaes_key_convert: +- endbr64 + lea .Lmasks(%rip), $const + movdqu ($inp), %xmm7 # load round 0 key + lea 0x10($inp), $inp +@@ -1060,7 +1057,6 @@ $code.=<<___; + .type bsaes_enc_key_convert,\@function,2 + .align 16 + bsaes_enc_key_convert: +- endbr64 + mov 240($inp),%r10d # pass rounds + mov $inp,%rcx # pass key + mov $out,%rax # pass key schedule +@@ -1075,7 +1071,6 @@ bsaes_enc_key_convert: + .align 16 + bsaes_encrypt_128: + .Lenc128_loop: +- endbr64 + movdqu 0x00($inp), @XMM[0] # load input + movdqu 0x10($inp), @XMM[1] + movdqu 0x20($inp), @XMM[2] +@@ -1108,7 +1103,6 @@ bsaes_encrypt_128: + .type bsaes_dec_key_convert,\@function,2 + .align 16 + bsaes_dec_key_convert: +- endbr64 + mov 240($inp),%r10d # pass rounds + mov $inp,%rcx # pass key + mov $out,%rax # pass key schedule +@@ -1123,7 +1117,6 @@ bsaes_dec_key_convert: + .type bsaes_decrypt_128,\@function,4 + .align 16 + bsaes_decrypt_128: +- endbr64 + .Ldec128_loop: + movdqu 0x00($inp), @XMM[0] # load input + movdqu 0x10($inp), @XMM[1] +@@ -1169,7 +1162,6 @@ $code.=<<___; + .type bsaes_ecb_encrypt_blocks,\@abi-omnipotent + .align 16 + bsaes_ecb_encrypt_blocks: +- endbr64 + mov %rsp, %rax + .Lecb_enc_prologue: + push %rbp +@@ -1371,7 +1363,6 @@ $code.=<<___; + .type bsaes_ecb_decrypt_blocks,\@abi-omnipotent + .align 16 + bsaes_ecb_decrypt_blocks: +- endbr64 + mov %rsp, %rax + .Lecb_dec_prologue: + push %rbp +@@ -1577,7 +1568,6 @@ $code.=<<___; + .type bsaes_cbc_encrypt,\@abi-omnipotent + .align 16 + bsaes_cbc_encrypt: +- endbr64 + ___ + $code.=<<___ if ($win64); + mov 48(%rsp),$arg6 # pull direction flag +@@ -1865,7 +1855,6 @@ $code.=<<___; + .type bsaes_ctr32_encrypt_blocks,\@abi-omnipotent + .align 16 + bsaes_ctr32_encrypt_blocks: +- endbr64 + mov %rsp, %rax + .Lctr_enc_prologue: + push %rbp +@@ -2107,7 +2096,6 @@ $code.=<<___; + .type bsaes_xts_encrypt,\@abi-omnipotent + .align 16 + bsaes_xts_encrypt: +- endbr64 + mov %rsp, %rax + .Lxts_enc_prologue: + push %rbp +@@ -2489,7 +2477,6 @@ $code.=<<___; + .type bsaes_xts_decrypt,\@abi-omnipotent + .align 16 + bsaes_xts_decrypt: +- endbr64 + mov %rsp, %rax + .Lxts_dec_prologue: + push %rbp +@@ -2966,7 +2953,6 @@ $code.=<<___; + .type se_handler,\@abi-omnipotent + .align 16 + se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +diff --git a/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl b/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl +index 8ff8d8602..3ffb1a303 100644 +--- a/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl +@@ -82,7 +82,6 @@ $code.=<<___; + .type _vpaes_encrypt_core,\@abi-omnipotent + .align 16 + _vpaes_encrypt_core: +- endbr64 + mov %rdx, %r9 + mov \$16, %r11 + mov 240(%rdx),%eax +@@ -173,7 +172,6 @@ _vpaes_encrypt_core: + .type _vpaes_decrypt_core,\@abi-omnipotent + .align 16 + _vpaes_decrypt_core: +- endbr64 + mov %rdx, %r9 # load key + mov 240(%rdx),%eax + movdqa %xmm9, %xmm1 +@@ -281,7 +279,6 @@ _vpaes_decrypt_core: + .type _vpaes_schedule_core,\@abi-omnipotent + .align 16 + _vpaes_schedule_core: +- endbr64 + # rdi = key + # rsi = size in bits + # rdx = buffer +@@ -467,7 +464,6 @@ _vpaes_schedule_core: + .type _vpaes_schedule_192_smear,\@abi-omnipotent + .align 16 + _vpaes_schedule_192_smear: +- endbr64 + pshufd \$0x80, %xmm6, %xmm0 # d c 0 0 -> c 0 0 0 + pxor %xmm0, %xmm6 # -> c+d c 0 0 + pshufd \$0xFE, %xmm7, %xmm0 # b a _ _ -> b b b a +@@ -499,7 +495,6 @@ _vpaes_schedule_192_smear: + .type _vpaes_schedule_round,\@abi-omnipotent + .align 16 + _vpaes_schedule_round: +- endbr64 + # extract rcon from xmm8 + pxor %xmm1, %xmm1 + palignr \$15, %xmm8, %xmm1 +@@ -567,7 +562,6 @@ _vpaes_schedule_low_round: + .type _vpaes_schedule_transform,\@abi-omnipotent + .align 16 + _vpaes_schedule_transform: +- endbr64 + movdqa %xmm9, %xmm1 + pandn %xmm0, %xmm1 + psrld \$4, %xmm1 +@@ -606,7 +600,6 @@ _vpaes_schedule_transform: + .type _vpaes_schedule_mangle,\@abi-omnipotent + .align 16 + _vpaes_schedule_mangle: +- endbr64 + movdqa %xmm0, %xmm4 # save xmm0 for later + movdqa .Lk_mc_forward(%rip),%xmm5 + test %rcx, %rcx +@@ -680,7 +673,6 @@ _vpaes_schedule_mangle: + .type ${PREFIX}_set_encrypt_key,\@function,3 + .align 16 + ${PREFIX}_set_encrypt_key: +- endbr64 + ___ + $code.=<<___ if ($win64); + lea -0xb8(%rsp),%rsp +@@ -729,7 +721,6 @@ $code.=<<___; + .type ${PREFIX}_set_decrypt_key,\@function,3 + .align 16 + ${PREFIX}_set_decrypt_key: +- endbr64 + ___ + $code.=<<___ if ($win64); + lea -0xb8(%rsp),%rsp +@@ -783,7 +774,6 @@ $code.=<<___; + .type ${PREFIX}_encrypt,\@function,3 + .align 16 + ${PREFIX}_encrypt: +- endbr64 + ___ + $code.=<<___ if ($win64); + lea -0xb8(%rsp),%rsp +@@ -827,7 +817,6 @@ $code.=<<___; + .type ${PREFIX}_decrypt,\@function,3 + .align 16 + ${PREFIX}_decrypt: +- endbr64 + ___ + $code.=<<___ if ($win64); + lea -0xb8(%rsp),%rsp +@@ -877,7 +866,6 @@ $code.=<<___; + .type ${PREFIX}_cbc_encrypt,\@function,6 + .align 16 + ${PREFIX}_cbc_encrypt: +- endbr64 + xchg $key,$len + ___ + ($len,$key)=($key,$len); +@@ -961,7 +949,6 @@ $code.=<<___; + .type _vpaes_preheat,\@abi-omnipotent + .align 16 + _vpaes_preheat: +- endbr64 + lea .Lk_s0F(%rip), %r10 + movdqa -0x20(%r10), %xmm10 # .Lk_inv + movdqa -0x10(%r10), %xmm11 # .Lk_inv+16 +@@ -1092,7 +1079,6 @@ $code.=<<___; + .type se_handler,\@abi-omnipotent + .align 16 + se_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_add.S b/src/lib/libcrypto/bn/arch/amd64/bignum_add.S +index 06298ca69..d56fa5e3a 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_add.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_add.S +@@ -49,7 +49,6 @@ + + + S2N_BN_SYMBOL(bignum_add): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S b/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S +index 5ad712749..1dc1e5870 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S +@@ -54,7 +54,6 @@ + + + S2N_BN_SYMBOL(bignum_cmadd): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S b/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S +index 9199c8f48..c1a23ccea 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S +@@ -51,7 +51,6 @@ + + + S2N_BN_SYMBOL(bignum_cmul): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S b/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S +index 2d7ed1909..42ac988a1 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S +@@ -59,7 +59,6 @@ + + + S2N_BN_SYMBOL(bignum_mul): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S b/src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S +index f02b09b28..3b7848b28 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S +@@ -72,7 +72,6 @@ + adc h, rdx + + S2N_BN_SYMBOL(bignum_mul_4_8_alt): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S b/src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S +index 97be83e1f..1be37840d 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S +@@ -72,7 +72,6 @@ + adc h, rdx + + S2N_BN_SYMBOL(bignum_mul_8_16_alt): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S +index c4a0cabf3..2e05b9c17 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S +@@ -62,7 +62,6 @@ + #define llshort ebp + + S2N_BN_SYMBOL(bignum_sqr): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S +index b228414dc..a635177c6 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S +@@ -71,7 +71,6 @@ + adc c, 0 + + S2N_BN_SYMBOL(bignum_sqr_4_8_alt): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S +index 04efeec7e..f698202d2 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr_8_16_alt.S +@@ -103,7 +103,6 @@ + adc c, 0 + + S2N_BN_SYMBOL(bignum_sqr_8_16_alt): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S b/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S +index 11a9bd7ed..f8e1fe35a 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S ++++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S +@@ -49,7 +49,6 @@ + + + S2N_BN_SYMBOL(bignum_sub): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/arch/amd64/word_clz.S b/src/lib/libcrypto/bn/arch/amd64/word_clz.S +index 464a9d90f..025e98f9c 100644 +--- a/src/lib/libcrypto/bn/arch/amd64/word_clz.S ++++ b/src/lib/libcrypto/bn/arch/amd64/word_clz.S +@@ -30,7 +30,6 @@ + .text + + S2N_BN_SYMBOL(word_clz): +- endbr64 + + #if WINDOWS_ABI + push rdi +diff --git a/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl b/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl +index af78fff54..2e71a7f03 100644 +--- a/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl ++++ b/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl +@@ -347,7 +347,6 @@ $code.=<<___; + .type MULADD_128x512,\@abi-omnipotent + .align 16 + MULADD_128x512: +- endbr64 + ___ + &MULSTEP_512([map("%r$_",(8..15))], "(+8*0)(%rcx)", "%rsi", "%rbp", "%rbx"); + $code.=<<___; +@@ -415,7 +414,6 @@ $code.=<<___; + .type mont_reduce,\@abi-omnipotent + .align 16 + mont_reduce: +- endbr64 + ___ + + my $STACK_DEPTH = 8; +@@ -678,7 +676,6 @@ $code.=<<___; + .type mont_mul_a3b,\@abi-omnipotent + .align 16 + mont_mul_a3b: +- endbr64 + # + # multiply tmp = src1 * src2 + # For multiply: dst = rcx, src1 = rdi, src2 = rsi +@@ -1080,7 +1077,6 @@ $code.=<<___; + .type sqr_reduce,\@abi-omnipotent + .align 16 + sqr_reduce: +- endbr64 + mov (+$pResult_offset+8)(%rsp), %rcx + ___ + &SQR_512("%rsp+$tmp16_offset+8", "%rcx", [map("%r$_",(10..15,8..9))], "%rbx", "%rbp", "%rsi", "%rdi"); +@@ -1110,7 +1106,6 @@ $code.=<<___; + .globl mod_exp_512 + .type mod_exp_512,\@function,4 + mod_exp_512: +- endbr64 + push %rbp + push %rbx + push %r12 +diff --git a/src/lib/libcrypto/bn/asm/x86_64-mont.pl b/src/lib/libcrypto/bn/asm/x86_64-mont.pl +index 6f5ab331e..cae7309d5 100755 +--- a/src/lib/libcrypto/bn/asm/x86_64-mont.pl ++++ b/src/lib/libcrypto/bn/asm/x86_64-mont.pl +@@ -63,7 +63,6 @@ $code=<<___; + .type bn_mul_mont,\@function,6 + .align 16 + bn_mul_mont: +- endbr64 + test \$3,${num}d + jnz .Lmul_enter + cmp \$8,${num}d +@@ -279,7 +278,6 @@ $code.=<<___; + .align 16 + bn_mul4x_mont: + .Lmul4x_enter: +- endbr64 + push %rbx + push %rbp + push %r12 +@@ -707,7 +705,6 @@ $code.=<<___; + .align 16 + bn_sqr4x_mont: + .Lsqr4x_enter: +- endbr64 + push %rbx + push %rbp + push %r12 +diff --git a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +index 3b3325a6c..7b9c6df27 100755 +--- a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl ++++ b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +@@ -57,7 +57,6 @@ $code=<<___; + .type bn_mul_mont_gather5,\@function,6 + .align 64 + bn_mul_mont_gather5: +- endbr64 + test \$3,${num}d + jnz .Lmul_enter + cmp \$8,${num}d +@@ -388,7 +387,6 @@ $code.=<<___; + .type bn_mul4x_mont_gather5,\@function,6 + .align 16 + bn_mul4x_mont_gather5: +- endbr64 + .Lmul4x_enter: + mov ${num}d,${num}d + movd `($win64?56:8)`(%rsp),%xmm5 # load 7th argument +@@ -927,7 +925,6 @@ $code.=<<___; + .type bn_scatter5,\@abi-omnipotent + .align 16 + bn_scatter5: +- endbr64 + cmp \$0, $num + jz .Lscatter_epilogue + lea ($tbl,$idx,8),$tbl +@@ -946,7 +943,6 @@ bn_scatter5: + .type bn_gather5,\@abi-omnipotent + .align 16 + bn_gather5: +- endbr64 + .LSEH_begin_bn_gather5: # Win64 thing, but harmless in other cases + # I can't trust assembler to use specific encoding:-( + .byte 0x4c,0x8d,0x14,0x24 # lea (%rsp),%r10 +@@ -1057,7 +1053,6 @@ $code.=<<___; + .type mul_handler,\@abi-omnipotent + .align 16 + mul_handler: +- endbr64 + push %rsi + push %rdi + push %rbx +diff --git a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl +index 3ceed3e89..586e5d6e9 100644 +--- a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl ++++ b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl +@@ -116,7 +116,6 @@ $code=<<___; + .type Camellia_EncryptBlock,\@abi-omnipotent + .align 16 + Camellia_EncryptBlock: +- endbr64 + movl \$128,%eax + subl $arg0d,%eax + movl \$3,$arg0d +@@ -129,7 +128,6 @@ Camellia_EncryptBlock: + .align 16 + .Lenc_rounds: + Camellia_EncryptBlock_Rounds: +- endbr64 + push %rbx + push %rbp + push %r13 +@@ -178,7 +176,6 @@ Camellia_EncryptBlock_Rounds: + .type _x86_64_Camellia_encrypt,\@abi-omnipotent + .align 16 + _x86_64_Camellia_encrypt: +- endbr64 + xor 0($key),@S[1] + xor 4($key),@S[0] # ^=key[0-3] + xor 8($key),@S[3] +@@ -229,7 +226,6 @@ $code.=<<___; + .type Camellia_DecryptBlock,\@abi-omnipotent + .align 16 + Camellia_DecryptBlock: +- endbr64 + movl \$128,%eax + subl $arg0d,%eax + movl \$3,$arg0d +@@ -242,7 +238,6 @@ Camellia_DecryptBlock: + .align 16 + .Ldec_rounds: + Camellia_DecryptBlock_Rounds: +- endbr64 + push %rbx + push %rbp + push %r13 +@@ -291,7 +286,6 @@ Camellia_DecryptBlock_Rounds: + .type _x86_64_Camellia_decrypt,\@abi-omnipotent + .align 16 + _x86_64_Camellia_decrypt: +- endbr64 + xor 0($key),@S[1] + xor 4($key),@S[0] # ^=key[0-3] + xor 8($key),@S[3] +@@ -406,7 +400,6 @@ $code.=<<___; + .type Camellia_Ekeygen,\@function,3 + .align 16 + Camellia_Ekeygen: +- endbr64 + push %rbx + push %rbp + push %r13 +@@ -637,7 +630,6 @@ $code.=<<___; + .type Camellia_cbc_encrypt,\@function,6 + .align 16 + Camellia_cbc_encrypt: +- endbr64 + cmp \$0,%rdx + je .Lcbc_abort + push %rbx +diff --git a/src/lib/libcrypto/md5/asm/md5-x86_64.pl b/src/lib/libcrypto/md5/asm/md5-x86_64.pl +index 06d69094f..c902a1b53 100755 +--- a/src/lib/libcrypto/md5/asm/md5-x86_64.pl ++++ b/src/lib/libcrypto/md5/asm/md5-x86_64.pl +@@ -128,7 +128,6 @@ $code .= < +Date: Mon, 30 Oct 2023 22:00:12 -0500 +Subject: [PATCH 2/4] Revert "Use explicit .text instead of .previous to please + Windows/MinGW on amd64" + +This reverts commit e8192f57c4e5910ce7badced4a24c8827810d567. +--- + src/lib/libcrypto/aes/asm/aes-x86_64.pl | 2 +- + src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl | 2 +- + src/lib/libcrypto/aes/asm/aesni-x86_64.pl | 2 +- + src/lib/libcrypto/aes/asm/bsaes-x86_64.pl | 2 +- + src/lib/libcrypto/aes/asm/vpaes-x86_64.pl | 2 +- + src/lib/libcrypto/bn/asm/x86_64-mont5.pl | 2 +- + src/lib/libcrypto/camellia/asm/cmll-x86_64.pl | 2 +- + src/lib/libcrypto/modes/asm/ghash-x86_64.pl | 2 +- + src/lib/libcrypto/sha/asm/sha1-x86_64.pl | 2 +- + src/lib/libcrypto/sha/asm/sha512-x86_64.pl | 4 ++-- + 10 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/src/lib/libcrypto/aes/asm/aes-x86_64.pl b/src/lib/libcrypto/aes/asm/aes-x86_64.pl +index b7399b552..2986a9fcc 100755 +--- a/src/lib/libcrypto/aes/asm/aes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aes-x86_64.pl +@@ -2535,7 +2535,7 @@ $code.=<<___; + .long 0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe + .long 0x1b1b1b1b, 0x1b1b1b1b, 0, 0 + .align 64 +-.text ++.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl b/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl +index bafa906a0..8a428c9b1 100644 +--- a/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl +@@ -1084,7 +1084,7 @@ K_XX_XX: + .long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 # K_60_79 + .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f # pbswap mask + .align 64 +-.text ++.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/aes/asm/aesni-x86_64.pl b/src/lib/libcrypto/aes/asm/aesni-x86_64.pl +index e662fbc7c..09612b1f8 100644 +--- a/src/lib/libcrypto/aes/asm/aesni-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aesni-x86_64.pl +@@ -2732,7 +2732,7 @@ $code.=<<___; + .Lxts_magic: + .long 0x87,0,1,0 + .align 64 +-.text ++.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl b/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl +index 20e9e1f71..347f4c302 100644 +--- a/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl +@@ -2937,7 +2937,7 @@ _bsaes_const: + .quad 0x6363636363636363, 0x6363636363636363 + .align 64 + .size _bsaes_const,.-_bsaes_const +-.text ++.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl b/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl +index 3ffb1a303..ad5fa7522 100644 +--- a/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl +@@ -1063,7 +1063,7 @@ _vpaes_consts: + .quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C + .align 64 + .size _vpaes_consts,.-_vpaes_consts +-.text ++.previous + ___ + + if ($win64) { +diff --git a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +index 7b9c6df27..1c8aa255c 100755 +--- a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl ++++ b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +@@ -1037,7 +1037,7 @@ $code.=<<___; + .Linc: + .long 0,0, 1,1 + .long 2,2, 2,2 +-.text ++.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl +index 586e5d6e9..c16725f5c 100644 +--- a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl ++++ b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl +@@ -625,7 +625,7 @@ $_ivp="40(%rsp)"; + $_rsp="48(%rsp)"; + + $code.=<<___; +-.text ++.previous + .globl Camellia_cbc_encrypt + .type Camellia_cbc_encrypt,\@function,6 + .align 16 +diff --git a/src/lib/libcrypto/modes/asm/ghash-x86_64.pl b/src/lib/libcrypto/modes/asm/ghash-x86_64.pl +index 71d0822ac..bce62947f 100644 +--- a/src/lib/libcrypto/modes/asm/ghash-x86_64.pl ++++ b/src/lib/libcrypto/modes/asm/ghash-x86_64.pl +@@ -670,7 +670,7 @@ $code.=<<___; + .value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE + .value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE + .align 64 +-.text ++.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/sha/asm/sha1-x86_64.pl b/src/lib/libcrypto/sha/asm/sha1-x86_64.pl +index 43eee73c4..1ec7f609a 100755 +--- a/src/lib/libcrypto/sha/asm/sha1-x86_64.pl ++++ b/src/lib/libcrypto/sha/asm/sha1-x86_64.pl +@@ -1079,7 +1079,7 @@ K_XX_XX: + .long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc # K_40_59 + .long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 # K_60_79 + .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f # pbswap mask +-.text ++.previous + ___ + }}} + $code.=<<___; +diff --git a/src/lib/libcrypto/sha/asm/sha512-x86_64.pl b/src/lib/libcrypto/sha/asm/sha512-x86_64.pl +index 0517eab66..1a7d9bf2d 100755 +--- a/src/lib/libcrypto/sha/asm/sha512-x86_64.pl ++++ b/src/lib/libcrypto/sha/asm/sha512-x86_64.pl +@@ -289,7 +289,7 @@ $TABLE: + .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 + .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 + .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +-.text ++.previous + ___ + } else { + $code.=<<___; +@@ -337,7 +337,7 @@ $TABLE: + .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c + .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a + .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +-.text ++.previous + ___ + } + +-- +2.42.0 + diff --git a/patches/asm/0003-Revert-Use-.section-.rodata-instead-of-a-plain-.roda.patch b/patches/asm/0003-Revert-Use-.section-.rodata-instead-of-a-plain-.roda.patch new file mode 100644 index 0000000000..165f2c0ff8 --- /dev/null +++ b/patches/asm/0003-Revert-Use-.section-.rodata-instead-of-a-plain-.roda.patch @@ -0,0 +1,203 @@ +From 1407448470aff891f9a9eff550ecda06202ffd29 Mon Sep 17 00:00:00 2001 +From: Brent Cook +Date: Mon, 30 Oct 2023 22:00:49 -0500 +Subject: [PATCH 3/4] Revert "Use .section .rodata instead of a plain .rodata" + +This reverts commit 67afc07de0ed3a0ccc272df42853ba565a8277c6. +--- + src/lib/libcrypto/aes/asm/aes-x86_64.pl | 2 +- + src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl | 2 +- + src/lib/libcrypto/aes/asm/aesni-x86_64.pl | 2 +- + src/lib/libcrypto/aes/asm/bsaes-x86_64.pl | 2 +- + src/lib/libcrypto/aes/asm/vpaes-x86_64.pl | 2 +- + src/lib/libcrypto/bn/asm/x86_64-mont5.pl | 2 +- + src/lib/libcrypto/camellia/asm/cmll-x86_64.pl | 2 +- + src/lib/libcrypto/modes/asm/ghash-x86_64.pl | 2 +- + src/lib/libcrypto/perlasm/x86gas.pl | 2 +- + src/lib/libcrypto/sha/asm/sha1-x86_64.pl | 2 +- + src/lib/libcrypto/sha/asm/sha512-ppc.pl | 2 +- + src/lib/libcrypto/sha/asm/sha512-x86_64.pl | 4 ++-- + src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl | 2 +- + 13 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/src/lib/libcrypto/aes/asm/aes-x86_64.pl b/src/lib/libcrypto/aes/asm/aes-x86_64.pl +index 2986a9fcc..d9f501b25 100755 +--- a/src/lib/libcrypto/aes/asm/aes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aes-x86_64.pl +@@ -2113,7 +2113,7 @@ ___ + } + + $code.=<<___; +-.section .rodata ++.rodata + .align 64 + .LAES_Te: + ___ +diff --git a/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl b/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl +index 8a428c9b1..4e83b6ba4 100644 +--- a/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl +@@ -1075,7 +1075,7 @@ $code.=<<___; + ___ + } + $code.=<<___; +-.section .rodata ++.rodata + .align 64 + K_XX_XX: + .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 # K_00_19 +diff --git a/src/lib/libcrypto/aes/asm/aesni-x86_64.pl b/src/lib/libcrypto/aes/asm/aesni-x86_64.pl +index 09612b1f8..2ab7106c0 100644 +--- a/src/lib/libcrypto/aes/asm/aesni-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aesni-x86_64.pl +@@ -2721,7 +2721,7 @@ ___ + } + + $code.=<<___; +-.section .rodata ++.rodata + .align 64 + .Lbswap_mask: + .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +diff --git a/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl b/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl +index 347f4c302..a40f83601 100644 +--- a/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl +@@ -2882,7 +2882,7 @@ $code.=<<___; + ___ + } + $code.=<<___; +-.section .rodata ++.rodata + .type _bsaes_const,\@object + .align 64 + _bsaes_const: +diff --git a/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl b/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl +index ad5fa7522..63af96c1d 100644 +--- a/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl +@@ -964,7 +964,7 @@ _vpaes_preheat: + ## Constants ## + ## ## + ######################################################## +-.section .rodata ++.rodata + .type _vpaes_consts,\@object + .align 64 + _vpaes_consts: +diff --git a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +index 1c8aa255c..5d30f210c 100755 +--- a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl ++++ b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +@@ -1032,7 +1032,7 @@ $code.=<<___; + ___ + } + $code.=<<___; +-.section .rodata ++.rodata + .align 64 + .Linc: + .long 0,0, 1,1 +diff --git a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl +index c16725f5c..90c56d9e5 100644 +--- a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl ++++ b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl +@@ -599,7 +599,7 @@ sub S0222 { my $i=shift; $i=@SBOX[$i]; $i=($i<<1|$i>>7)&0xff; $i=$i<<16|$i<<8|$i + sub S3033 { my $i=shift; $i=@SBOX[$i]; $i=($i>>1|$i<<7)&0xff; $i=$i<<24|$i<<8|$i; sprintf("0x%08x",$i); } + + $code.=<<___; +-.section .rodata ++.rodata + .align 64 + .LCamellia_SIGMA: + .long 0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858 +diff --git a/src/lib/libcrypto/modes/asm/ghash-x86_64.pl b/src/lib/libcrypto/modes/asm/ghash-x86_64.pl +index bce62947f..3ae8629cb 100644 +--- a/src/lib/libcrypto/modes/asm/ghash-x86_64.pl ++++ b/src/lib/libcrypto/modes/asm/ghash-x86_64.pl +@@ -622,7 +622,7 @@ ___ + } + + $code.=<<___; +-.section .rodata ++.rodata + .align 64 + .Lbswap_mask: + .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +diff --git a/src/lib/libcrypto/perlasm/x86gas.pl b/src/lib/libcrypto/perlasm/x86gas.pl +index b84e28be9..f28a59054 100644 +--- a/src/lib/libcrypto/perlasm/x86gas.pl ++++ b/src/lib/libcrypto/perlasm/x86gas.pl +@@ -307,7 +307,7 @@ sub ::dataseg + { push(@out,".data\n"); } + + sub ::rodataseg +-{ push(@out,".section .rodata\n"); } ++{ push(@out,".rodata\n"); } + + sub ::previous + { push(@out,".previous\n"); } +diff --git a/src/lib/libcrypto/sha/asm/sha1-x86_64.pl b/src/lib/libcrypto/sha/asm/sha1-x86_64.pl +index 1ec7f609a..0abbbab6b 100755 +--- a/src/lib/libcrypto/sha/asm/sha1-x86_64.pl ++++ b/src/lib/libcrypto/sha/asm/sha1-x86_64.pl +@@ -1071,7 +1071,7 @@ $code.=<<___; + ___ + } + $code.=<<___; +-.section .rodata ++.rodata + .align 64 + K_XX_XX: + .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 # K_00_19 +diff --git a/src/lib/libcrypto/sha/asm/sha512-ppc.pl b/src/lib/libcrypto/sha/asm/sha512-ppc.pl +index 28bd997cf..1f02cfdd5 100755 +--- a/src/lib/libcrypto/sha/asm/sha512-ppc.pl ++++ b/src/lib/libcrypto/sha/asm/sha512-ppc.pl +@@ -375,7 +375,7 @@ $code.=<<___; + $ST $H,`7*$SZ`($ctx) + bne Lsha2_block_private + blr +- .section .rodata ++ .rodata + Ltable: + ___ + $code.=<<___ if ($SZ==8); +diff --git a/src/lib/libcrypto/sha/asm/sha512-x86_64.pl b/src/lib/libcrypto/sha/asm/sha512-x86_64.pl +index 1a7d9bf2d..6698b1d40 100755 +--- a/src/lib/libcrypto/sha/asm/sha512-x86_64.pl ++++ b/src/lib/libcrypto/sha/asm/sha512-x86_64.pl +@@ -269,7 +269,7 @@ ___ + + if ($SZ==4) { + $code.=<<___; +-.section .rodata ++.rodata + .align 64 + .type $TABLE,\@object + $TABLE: +@@ -293,7 +293,7 @@ $TABLE: + ___ + } else { + $code.=<<___; +-.section .rodata ++.rodata + .align 64 + .type $TABLE,\@object + $TABLE: +diff --git a/src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl b/src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl +index de5d3acfb..510a74b91 100644 +--- a/src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl ++++ b/src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl +@@ -204,7 +204,7 @@ $code.=<<___; + ret + .size $func,.-$func + +-.section .rodata ++.rodata + .align 64 + .type $table,\@object + $table: +-- +2.42.0 + diff --git a/patches/asm/0004-Revert-Move-constants-out-of-text-segment-into-rodat.patch b/patches/asm/0004-Revert-Move-constants-out-of-text-segment-into-rodat.patch new file mode 100644 index 0000000000..1a17540555 --- /dev/null +++ b/patches/asm/0004-Revert-Move-constants-out-of-text-segment-into-rodat.patch @@ -0,0 +1,292 @@ +From 87b24a6d5a932061cc88b84a856663b328d1c166 Mon Sep 17 00:00:00 2001 +From: Brent Cook +Date: Mon, 30 Oct 2023 22:01:49 -0500 +Subject: [PATCH 4/4] Revert "Move constants out of text segment into rodata to + prepare for xonly support" + +This reverts commit b5834617204e7520b0209bcff7f1c4a559e05422. +--- + src/lib/libcrypto/aes/asm/aes-x86_64.pl | 3 +-- + src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl | 4 ++-- + src/lib/libcrypto/aes/asm/aesni-x86_64.pl | 4 ++-- + src/lib/libcrypto/aes/asm/bsaes-x86_64.pl | 3 +-- + src/lib/libcrypto/aes/asm/vpaes-x86_64.pl | 3 +-- + src/lib/libcrypto/bn/asm/x86_64-mont.pl | 4 ++++ + src/lib/libcrypto/bn/asm/x86_64-mont5.pl | 3 +-- + src/lib/libcrypto/camellia/asm/cmll-x86_64.pl | 4 ++-- + src/lib/libcrypto/modes/asm/ghash-x86_64.pl | 4 ++-- + src/lib/libcrypto/sha/asm/sha1-x86_64.pl | 3 +-- + src/lib/libcrypto/sha/asm/sha512-x86_64.pl | 4 ---- + src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl | 1 - + 12 files changed, 17 insertions(+), 23 deletions(-) + +diff --git a/src/lib/libcrypto/aes/asm/aes-x86_64.pl b/src/lib/libcrypto/aes/asm/aes-x86_64.pl +index d9f501b25..9072f603a 100755 +--- a/src/lib/libcrypto/aes/asm/aes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aes-x86_64.pl +@@ -2113,7 +2113,6 @@ ___ + } + + $code.=<<___; +-.rodata + .align 64 + .LAES_Te: + ___ +@@ -2534,8 +2533,8 @@ ___ + $code.=<<___; + .long 0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe + .long 0x1b1b1b1b, 0x1b1b1b1b, 0, 0 ++.asciz "AES for x86_64, CRYPTOGAMS by " + .align 64 +-.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl b/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl +index 4e83b6ba4..880bcc2d5 100644 +--- a/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aesni-sha1-x86_64.pl +@@ -1075,7 +1075,6 @@ $code.=<<___; + ___ + } + $code.=<<___; +-.rodata + .align 64 + K_XX_XX: + .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 # K_00_19 +@@ -1083,8 +1082,9 @@ K_XX_XX: + .long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc # K_40_59 + .long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 # K_60_79 + .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f # pbswap mask ++ ++.asciz "AESNI-CBC+SHA1 stitch for x86_64, CRYPTOGAMS by " + .align 64 +-.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/aes/asm/aesni-x86_64.pl b/src/lib/libcrypto/aes/asm/aesni-x86_64.pl +index 2ab7106c0..96978bd35 100644 +--- a/src/lib/libcrypto/aes/asm/aesni-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/aesni-x86_64.pl +@@ -2721,7 +2721,6 @@ ___ + } + + $code.=<<___; +-.rodata + .align 64 + .Lbswap_mask: + .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +@@ -2731,8 +2730,9 @@ $code.=<<___; + .long 1,0,0,0 + .Lxts_magic: + .long 0x87,0,1,0 ++ ++.asciz "AES for Intel AES-NI, CRYPTOGAMS by " + .align 64 +-.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl b/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl +index a40f83601..14dc2c02e 100644 +--- a/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/bsaes-x86_64.pl +@@ -2882,7 +2882,6 @@ $code.=<<___; + ___ + } + $code.=<<___; +-.rodata + .type _bsaes_const,\@object + .align 64 + _bsaes_const: +@@ -2935,9 +2934,9 @@ _bsaes_const: + .quad 0x02060a0e03070b0f, 0x0004080c0105090d + .L63: + .quad 0x6363636363636363, 0x6363636363636363 ++.asciz "Bit-sliced AES for x86_64/SSSE3, Emilia Käsper, Peter Schwabe, Andy Polyakov" + .align 64 + .size _bsaes_const,.-_bsaes_const +-.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl b/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl +index 63af96c1d..bd7f45b85 100644 +--- a/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl ++++ b/src/lib/libcrypto/aes/asm/vpaes-x86_64.pl +@@ -964,7 +964,6 @@ _vpaes_preheat: + ## Constants ## + ## ## + ######################################################## +-.rodata + .type _vpaes_consts,\@object + .align 64 + _vpaes_consts: +@@ -1061,9 +1060,9 @@ _vpaes_consts: + .Lk_dsbo: # decryption sbox final output + .quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D + .quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C ++.asciz "Vector Permutation AES for x86_64/SSSE3, Mike Hamburg (Stanford University)" + .align 64 + .size _vpaes_consts,.-_vpaes_consts +-.previous + ___ + + if ($win64) { +diff --git a/src/lib/libcrypto/bn/asm/x86_64-mont.pl b/src/lib/libcrypto/bn/asm/x86_64-mont.pl +index cae7309d5..c35493e80 100755 +--- a/src/lib/libcrypto/bn/asm/x86_64-mont.pl ++++ b/src/lib/libcrypto/bn/asm/x86_64-mont.pl +@@ -1495,6 +1495,10 @@ $code.=<<___; + .size bn_sqr4x_mont,.-bn_sqr4x_mont + ___ + }}} ++$code.=<<___; ++.asciz "Montgomery Multiplication for x86_64, CRYPTOGAMS by " ++.align 16 ++___ + + print $code; + close STDOUT; +diff --git a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +index 5d30f210c..bb7ad4c4b 100755 +--- a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl ++++ b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +@@ -1032,12 +1032,11 @@ $code.=<<___; + ___ + } + $code.=<<___; +-.rodata + .align 64 + .Linc: + .long 0,0, 1,1 + .long 2,2, 2,2 +-.previous ++.asciz "Montgomery Multiplication with scatter/gather for x86_64, CRYPTOGAMS by " + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl +index 90c56d9e5..df6bf11a2 100644 +--- a/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl ++++ b/src/lib/libcrypto/camellia/asm/cmll-x86_64.pl +@@ -599,7 +599,6 @@ sub S0222 { my $i=shift; $i=@SBOX[$i]; $i=($i<<1|$i>>7)&0xff; $i=$i<<16|$i<<8|$i + sub S3033 { my $i=shift; $i=@SBOX[$i]; $i=($i>>1|$i<<7)&0xff; $i=$i<<24|$i<<8|$i; sprintf("0x%08x",$i); } + + $code.=<<___; +-.rodata + .align 64 + .LCamellia_SIGMA: + .long 0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858 +@@ -625,7 +624,6 @@ $_ivp="40(%rsp)"; + $_rsp="48(%rsp)"; + + $code.=<<___; +-.previous + .globl Camellia_cbc_encrypt + .type Camellia_cbc_encrypt,\@function,6 + .align 16 +@@ -859,6 +857,8 @@ Camellia_cbc_encrypt: + .Lcbc_abort: + ret + .size Camellia_cbc_encrypt,.-Camellia_cbc_encrypt ++ ++.asciz "Camellia for x86_64 by " + ___ + } + +diff --git a/src/lib/libcrypto/modes/asm/ghash-x86_64.pl b/src/lib/libcrypto/modes/asm/ghash-x86_64.pl +index 3ae8629cb..38d779edb 100644 +--- a/src/lib/libcrypto/modes/asm/ghash-x86_64.pl ++++ b/src/lib/libcrypto/modes/asm/ghash-x86_64.pl +@@ -622,7 +622,6 @@ ___ + } + + $code.=<<___; +-.rodata + .align 64 + .Lbswap_mask: + .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +@@ -669,8 +668,9 @@ $code.=<<___; + .value 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E + .value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE + .value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE ++ ++.asciz "GHASH for x86_64, CRYPTOGAMS by " + .align 64 +-.previous + ___ + + # EXCEPTION_DISPOSITION handler (EXCEPTION_RECORD *rec,ULONG64 frame, +diff --git a/src/lib/libcrypto/sha/asm/sha1-x86_64.pl b/src/lib/libcrypto/sha/asm/sha1-x86_64.pl +index 0abbbab6b..cc8ef5337 100755 +--- a/src/lib/libcrypto/sha/asm/sha1-x86_64.pl ++++ b/src/lib/libcrypto/sha/asm/sha1-x86_64.pl +@@ -1071,7 +1071,6 @@ $code.=<<___; + ___ + } + $code.=<<___; +-.rodata + .align 64 + K_XX_XX: + .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 # K_00_19 +@@ -1079,10 +1078,10 @@ K_XX_XX: + .long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc # K_40_59 + .long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 # K_60_79 + .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f # pbswap mask +-.previous + ___ + }}} + $code.=<<___; ++.asciz "SHA1 block transform for x86_64, CRYPTOGAMS by " + .align 64 + ___ + +diff --git a/src/lib/libcrypto/sha/asm/sha512-x86_64.pl b/src/lib/libcrypto/sha/asm/sha512-x86_64.pl +index 6698b1d40..bc4b2e748 100755 +--- a/src/lib/libcrypto/sha/asm/sha512-x86_64.pl ++++ b/src/lib/libcrypto/sha/asm/sha512-x86_64.pl +@@ -269,7 +269,6 @@ ___ + + if ($SZ==4) { + $code.=<<___; +-.rodata + .align 64 + .type $TABLE,\@object + $TABLE: +@@ -289,11 +288,9 @@ $TABLE: + .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 + .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 + .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 +-.previous + ___ + } else { + $code.=<<___; +-.rodata + .align 64 + .type $TABLE,\@object + $TABLE: +@@ -337,7 +334,6 @@ $TABLE: + .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c + .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a + .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 +-.previous + ___ + } + +diff --git a/src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl b/src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl +index 510a74b91..afadd5d2f 100644 +--- a/src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl ++++ b/src/lib/libcrypto/whrlpool/asm/wp-x86_64.pl +@@ -204,7 +204,6 @@ $code.=<<___; + ret + .size $func,.-$func + +-.rodata + .align 64 + .type $table,\@object + $table: +-- +2.42.0 + diff --git a/update.sh b/update.sh index 4c97ae3177..1f2d78b529 100755 --- a/update.sh +++ b/update.sh @@ -191,12 +191,24 @@ fixup_masm() { | sed -e 's/|/OR/g' \ | sed -e 's/~/NOT/g' \ | sed -e 's/1 << \([0-9]*\)/1 SHL \1/g' \ - | sed -e 's/^ALIGN.*//g' \ > $2 } # generate assembly crypto algorithms -asm_src=$libcrypto_src +asm_src=$CWD/asm + +setup_asm_generator() { + rm -fr $asm_src + cp -a $libcrypto_src $asm_src +} + +setup_asm_generator_patched() { + setup_asm_generator + for i in `ls -1 patches/asm/*.patch | sort -n`; do + patch -d $asm_src -p 4 < $i 1> /dev/null 2>/dev/null ; + done +} + gen_asm_stdout() { CC=true perl $asm_src/$2 $1 > crypto/$3.tmp [ $1 = "elf" ] && cat <<-EOF >> crypto/$3.tmp @@ -237,6 +249,8 @@ gen_asm() { fi } +setup_asm_generator + echo generating mips ASM source for elf gen_asm_mips o32 aes aes-mips aes-mips gen_asm_mips o32 bn mips bn-mips @@ -266,6 +280,14 @@ $CP $libcrypto_src/arch/arm/arm_arch.h crypto for abi in elf macosx masm mingw64; do echo generating x86_64 ASM source for $abi + + # use patched generators for non-elf targets + if [ $abi = "elf" ]; then + setup_asm_generator + else + setup_asm_generator_patched + fi + gen_asm_stdout $abi aes/asm/aes-x86_64.pl aes/aes-$abi-x86_64.S gen_asm_stdout $abi aes/asm/vpaes-x86_64.pl aes/vpaes-$abi-x86_64.S gen_asm_stdout $abi aes/asm/bsaes-x86_64.pl aes/bsaes-$abi-x86_64.S