CFI tag AES-NI key expansion helpers. 962432c brought in some OpenSSL assembly that's missing CFI start/end tags around some functions. This doesn't trigger the unwind tests in many contexts, but it does trigger test errors on Ubuntu 24.04 for x86-64. Change-Id: Ib97509b4699aa587f084d2fa07fbf01ce61581e2 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/70127 Commit-Queue: Adam Langley <agl@google.com> Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/crypto/fipsmodule/aes/asm/aesni-x86_64.pl b/crypto/fipsmodule/aes/asm/aesni-x86_64.pl index ab45749..d111e38 100644 --- a/crypto/fipsmodule/aes/asm/aesni-x86_64.pl +++ b/crypto/fipsmodule/aes/asm/aesni-x86_64.pl
@@ -3385,6 +3385,7 @@ .align 16 .Lkey_expansion_128: +.cfi_startproc $movkey %xmm0,(%rax) lea 16(%rax),%rax .Lkey_expansion_128_cold: @@ -3395,9 +3396,11 @@ shufps \$0b11111111,%xmm1,%xmm1 # critical path xorps %xmm1,%xmm0 ret +.cfi_endproc .align 16 .Lkey_expansion_192a: +.cfi_startproc $movkey %xmm0,(%rax) lea 16(%rax),%rax .Lkey_expansion_192a_cold: @@ -3415,9 +3418,11 @@ pshufd \$0b11111111,%xmm0,%xmm3 pxor %xmm3,%xmm2 ret +.cfi_endproc .align 16 .Lkey_expansion_192b: +.cfi_startproc movaps %xmm0,%xmm3 shufps \$0b01000100,%xmm0,%xmm5 $movkey %xmm5,(%rax) @@ -3425,9 +3430,11 @@ $movkey %xmm3,16(%rax) lea 32(%rax),%rax jmp .Lkey_expansion_192b_warm +.cfi_endproc .align 16 .Lkey_expansion_256a: +.cfi_startproc $movkey %xmm2,(%rax) lea 16(%rax),%rax .Lkey_expansion_256a_cold: @@ -3438,9 +3445,11 @@ shufps \$0b11111111,%xmm1,%xmm1 # critical path xorps %xmm1,%xmm0 ret +.cfi_endproc .align 16 .Lkey_expansion_256b: +.cfi_startproc $movkey %xmm0,(%rax) lea 16(%rax),%rax @@ -3451,6 +3460,7 @@ shufps \$0b10101010,%xmm1,%xmm1 # critical path xorps %xmm1,%xmm2 ret +.cfi_endproc .size ${PREFIX}_set_encrypt_key_base,.-${PREFIX}_set_encrypt_key_base .globl ${PREFIX}_set_encrypt_key_alt
diff --git a/gen/bcm/aesni-x86_64-apple.S b/gen/bcm/aesni-x86_64-apple.S index 23c15c3..0247a2d 100644 --- a/gen/bcm/aesni-x86_64-apple.S +++ b/gen/bcm/aesni-x86_64-apple.S
@@ -2082,6 +2082,7 @@ .p2align 4 L$key_expansion_128: + movups %xmm0,(%rax) leaq 16(%rax),%rax L$key_expansion_128_cold: @@ -2093,8 +2094,10 @@ xorps %xmm1,%xmm0 ret + .p2align 4 L$key_expansion_192a: + movups %xmm0,(%rax) leaq 16(%rax),%rax L$key_expansion_192a_cold: @@ -2113,8 +2116,10 @@ pxor %xmm3,%xmm2 ret + .p2align 4 L$key_expansion_192b: + movaps %xmm0,%xmm3 shufps $68,%xmm0,%xmm5 movups %xmm5,(%rax) @@ -2123,8 +2128,10 @@ leaq 32(%rax),%rax jmp L$key_expansion_192b_warm + .p2align 4 L$key_expansion_256a: + movups %xmm2,(%rax) leaq 16(%rax),%rax L$key_expansion_256a_cold: @@ -2136,8 +2143,10 @@ xorps %xmm1,%xmm0 ret + .p2align 4 L$key_expansion_256b: + movups %xmm0,(%rax) leaq 16(%rax),%rax @@ -2150,6 +2159,7 @@ ret + .globl _aes_hw_set_encrypt_key_alt .private_extern _aes_hw_set_encrypt_key_alt
diff --git a/gen/bcm/aesni-x86_64-linux.S b/gen/bcm/aesni-x86_64-linux.S index cd695b4..bedd98b 100644 --- a/gen/bcm/aesni-x86_64-linux.S +++ b/gen/bcm/aesni-x86_64-linux.S
@@ -2083,6 +2083,7 @@ .align 16 .Lkey_expansion_128: +.cfi_startproc movups %xmm0,(%rax) leaq 16(%rax),%rax .Lkey_expansion_128_cold: @@ -2093,9 +2094,11 @@ shufps $255,%xmm1,%xmm1 xorps %xmm1,%xmm0 ret +.cfi_endproc .align 16 .Lkey_expansion_192a: +.cfi_startproc movups %xmm0,(%rax) leaq 16(%rax),%rax .Lkey_expansion_192a_cold: @@ -2113,9 +2116,11 @@ pshufd $255,%xmm0,%xmm3 pxor %xmm3,%xmm2 ret +.cfi_endproc .align 16 .Lkey_expansion_192b: +.cfi_startproc movaps %xmm0,%xmm3 shufps $68,%xmm0,%xmm5 movups %xmm5,(%rax) @@ -2123,9 +2128,11 @@ movups %xmm3,16(%rax) leaq 32(%rax),%rax jmp .Lkey_expansion_192b_warm +.cfi_endproc .align 16 .Lkey_expansion_256a: +.cfi_startproc movups %xmm2,(%rax) leaq 16(%rax),%rax .Lkey_expansion_256a_cold: @@ -2136,9 +2143,11 @@ shufps $255,%xmm1,%xmm1 xorps %xmm1,%xmm0 ret +.cfi_endproc .align 16 .Lkey_expansion_256b: +.cfi_startproc movups %xmm0,(%rax) leaq 16(%rax),%rax @@ -2149,6 +2158,7 @@ shufps $170,%xmm1,%xmm1 xorps %xmm1,%xmm2 ret +.cfi_endproc .size aes_hw_set_encrypt_key_base,.-aes_hw_set_encrypt_key_base .globl aes_hw_set_encrypt_key_alt
diff --git a/gen/bcm/aesni-x86_64-win.asm b/gen/bcm/aesni-x86_64-win.asm index 4876ed7..c585507 100644 --- a/gen/bcm/aesni-x86_64-win.asm +++ b/gen/bcm/aesni-x86_64-win.asm
@@ -2187,6 +2187,7 @@ ALIGN 16 $L$key_expansion_128: + movups XMMWORD[rax],xmm0 lea rax,[16+rax] $L$key_expansion_128_cold: @@ -2198,8 +2199,10 @@ xorps xmm0,xmm1 ret + ALIGN 16 $L$key_expansion_192a: + movups XMMWORD[rax],xmm0 lea rax,[16+rax] $L$key_expansion_192a_cold: @@ -2218,8 +2221,10 @@ pxor xmm2,xmm3 ret + ALIGN 16 $L$key_expansion_192b: + movaps xmm3,xmm0 shufps xmm5,xmm0,68 movups XMMWORD[rax],xmm5 @@ -2228,8 +2233,10 @@ lea rax,[32+rax] jmp NEAR $L$key_expansion_192b_warm + ALIGN 16 $L$key_expansion_256a: + movups XMMWORD[rax],xmm2 lea rax,[16+rax] $L$key_expansion_256a_cold: @@ -2241,8 +2248,10 @@ xorps xmm0,xmm1 ret + ALIGN 16 $L$key_expansion_256b: + movups XMMWORD[rax],xmm0 lea rax,[16+rax] @@ -2255,6 +2264,7 @@ ret + global aes_hw_set_encrypt_key_alt ALIGN 16