From e2118101444d3cf3cab87297b363cecd5357ae89 Mon Sep 17 00:00:00 2001 From: deraadt <> Date: Tue, 25 Apr 2023 04:42:26 +0000 Subject: Add endbr64 where needed by inspection. Passes regresson tests. ok jsing, and kind of tb an earlier version --- 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 + src/lib/libcrypto/bn/arch/amd64/bignum_mul_4_8_alt.S | 1 + src/lib/libcrypto/bn/arch/amd64/bignum_mul_8_16_alt.S | 1 + src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S | 1 + src/lib/libcrypto/bn/arch/amd64/bignum_sqr_4_8_alt.S | 1 + src/lib/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 +++++ 14 files changed, 24 insertions(+) (limited to 'src/lib/libcrypto/bn') diff --git a/src/lib/libcrypto/bn/arch/amd64/bignum_add.S b/src/lib/libcrypto/bn/arch/amd64/bignum_add.S index d56fa5e3a8..06298ca69e 100644 --- a/src/lib/libcrypto/bn/arch/amd64/bignum_add.S +++ b/src/lib/libcrypto/bn/arch/amd64/bignum_add.S @@ -49,6 +49,7 @@ 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 1dc1e58705..5ad712749f 100644 --- a/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S +++ b/src/lib/libcrypto/bn/arch/amd64/bignum_cmadd.S @@ -54,6 +54,7 @@ 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 c1a23ccea4..9199c8f48b 100644 --- a/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S +++ b/src/lib/libcrypto/bn/arch/amd64/bignum_cmul.S @@ -51,6 +51,7 @@ 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 42ac988a19..2d7ed19091 100644 --- a/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S +++ b/src/lib/libcrypto/bn/arch/amd64/bignum_mul.S @@ -59,6 +59,7 @@ 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 3b7848b285..f02b09b288 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,6 +72,7 @@ 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 1be37840df..97be83e1f7 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,6 +72,7 @@ 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 2e05b9c179..c4a0cabf35 100644 --- a/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S +++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sqr.S @@ -62,6 +62,7 @@ #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 a635177c65..b228414dce 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,6 +71,7 @@ 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 f698202d29..04efeec7e2 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,6 +103,7 @@ 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 f8e1fe35a8..11a9bd7edd 100644 --- a/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S +++ b/src/lib/libcrypto/bn/arch/amd64/bignum_sub.S @@ -49,6 +49,7 @@ 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 025e98f9cb..464a9d90fc 100644 --- a/src/lib/libcrypto/bn/arch/amd64/word_clz.S +++ b/src/lib/libcrypto/bn/arch/amd64/word_clz.S @@ -30,6 +30,7 @@ .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 2e71a7f03d..af78fff541 100644 --- a/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl +++ b/src/lib/libcrypto/bn/asm/modexp512-x86_64.pl @@ -347,6 +347,7 @@ $code.=<<___; .type MULADD_128x512,\@abi-omnipotent .align 16 MULADD_128x512: + endbr64 ___ &MULSTEP_512([map("%r$_",(8..15))], "(+8*0)(%rcx)", "%rsi", "%rbp", "%rbx"); $code.=<<___; @@ -414,6 +415,7 @@ $code.=<<___; .type mont_reduce,\@abi-omnipotent .align 16 mont_reduce: + endbr64 ___ my $STACK_DEPTH = 8; @@ -676,6 +678,7 @@ $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 @@ -1077,6 +1080,7 @@ $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"); @@ -1106,6 +1110,7 @@ $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 cae7309d5b..6f5ab331e2 100755 --- a/src/lib/libcrypto/bn/asm/x86_64-mont.pl +++ b/src/lib/libcrypto/bn/asm/x86_64-mont.pl @@ -63,6 +63,7 @@ $code=<<___; .type bn_mul_mont,\@function,6 .align 16 bn_mul_mont: + endbr64 test \$3,${num}d jnz .Lmul_enter cmp \$8,${num}d @@ -278,6 +279,7 @@ $code.=<<___; .align 16 bn_mul4x_mont: .Lmul4x_enter: + endbr64 push %rbx push %rbp push %r12 @@ -705,6 +707,7 @@ $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 7b9c6df273..3b3325a6cc 100755 --- a/src/lib/libcrypto/bn/asm/x86_64-mont5.pl +++ b/src/lib/libcrypto/bn/asm/x86_64-mont5.pl @@ -57,6 +57,7 @@ $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 @@ -387,6 +388,7 @@ $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 @@ -925,6 +927,7 @@ $code.=<<___; .type bn_scatter5,\@abi-omnipotent .align 16 bn_scatter5: + endbr64 cmp \$0, $num jz .Lscatter_epilogue lea ($tbl,$idx,8),$tbl @@ -943,6 +946,7 @@ 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 @@ -1053,6 +1057,7 @@ $code.=<<___; .type mul_handler,\@abi-omnipotent .align 16 mul_handler: + endbr64 push %rsi push %rdi push %rbx -- cgit v1.2.3-55-g6feb