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