[PATCH 3/4] aria-x86_64: fixes for CFI markings
Jussi Kivilinna
jussi.kivilinna at iki.fi
Sun Dec 21 11:58:48 CET 2025
* cipher/aria-aesni-avx-amd64.S: Add missing CFI stack adjustments
after pushq/popq.
* cipher/aria-aesni-avx2-amd64.S: Likewise.
* cipher/aria-gfni-avx512-amd64.S: Likewise.
--
Signed-off-by: Jussi Kivilinna <jussi.kivilinna at iki.fi>
---
cipher/aria-aesni-avx-amd64.S | 10 ++++++++++
cipher/aria-aesni-avx2-amd64.S | 8 ++++++++
cipher/aria-gfni-avx512-amd64.S | 2 ++
3 files changed, 20 insertions(+)
diff --git a/cipher/aria-aesni-avx-amd64.S b/cipher/aria-aesni-avx-amd64.S
index 2a88c1e7..29597488 100644
--- a/cipher/aria-aesni-avx-amd64.S
+++ b/cipher/aria-aesni-avx-amd64.S
@@ -1057,6 +1057,7 @@ _gcry_aria_aesni_avx_ecb_crypt_blk1_16:
.Lecb_less_than_16:
pushq %r8;
+ CFI_ADJUST_CFA_OFFSET(8);
inpack_1_15_pre(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7,
%xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14,
%xmm15, %rdx, %r8d);
@@ -1064,6 +1065,7 @@ _gcry_aria_aesni_avx_ecb_crypt_blk1_16:
call __aria_aesni_avx_crypt_16way;
popq %rax;
+ CFI_ADJUST_CFA_OFFSET(-8);
write_output_1_15(%xmm1, %xmm0, %xmm3, %xmm2, %xmm4, %xmm5, %xmm6,
%xmm7, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13,
%xmm14, %xmm15, %r11, %eax);
@@ -1156,6 +1158,7 @@ __aria_aesni_avx_ctr_gen_keystream_16way:
.Lctr_byteadd_full_ctr_carry:
addb $16, 15(%r8);
pushq %rcx;
+ CFI_ADJUST_CFA_OFFSET(8);
movl $14, %ecx;
1:
adcb $0, (%r8, %rcx);
@@ -1163,6 +1166,7 @@ __aria_aesni_avx_ctr_gen_keystream_16way:
loop 1b;
2:
popq %rcx;
+ CFI_ADJUST_CFA_OFFSET(-8);
jmp .Lctr_byteadd_xmm;
.align 8
.Lctr_byteadd:
@@ -1215,6 +1219,7 @@ _gcry_aria_aesni_avx_ctr_crypt_blk16:
call __aria_aesni_avx_ctr_gen_keystream_16way;
pushq %rsi;
+ CFI_ADJUST_CFA_OFFSET(8);
movq %rdx, %r11;
movq %rcx, %rsi; /* use stack for temporary store */
movq %rcx, %rdx;
@@ -1223,6 +1228,7 @@ _gcry_aria_aesni_avx_ctr_crypt_blk16:
call __aria_aesni_avx_crypt_16way;
popq %rsi;
+ CFI_ADJUST_CFA_OFFSET(-8);
vpxor (0 * 16)(%r11), %xmm1, %xmm1;
vpxor (1 * 16)(%r11), %xmm0, %xmm0;
vpxor (2 * 16)(%r11), %xmm3, %xmm3;
@@ -1358,6 +1364,7 @@ _gcry_aria_gfni_avx_ecb_crypt_blk1_16:
.Lecb_less_than_16_gfni:
pushq %r8;
+ CFI_ADJUST_CFA_OFFSET(8);
inpack_1_15_pre(%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7,
%xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14,
%xmm15, %rdx, %r8d);
@@ -1365,6 +1372,7 @@ _gcry_aria_gfni_avx_ecb_crypt_blk1_16:
call __aria_gfni_avx_crypt_16way;
popq %rax;
+ CFI_ADJUST_CFA_OFFSET(-8);
write_output_1_15(%xmm1, %xmm0, %xmm3, %xmm2, %xmm4, %xmm5, %xmm6,
%xmm7, %xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13,
%xmm14, %xmm15, %r11, %eax);
@@ -1399,6 +1407,7 @@ _gcry_aria_gfni_avx_ctr_crypt_blk16:
call __aria_aesni_avx_ctr_gen_keystream_16way
pushq %rsi;
+ CFI_ADJUST_CFA_OFFSET(8);
movq %rdx, %r11;
movq %rcx, %rsi; /* use stack for temporary store */
movq %rcx, %rdx;
@@ -1407,6 +1416,7 @@ _gcry_aria_gfni_avx_ctr_crypt_blk16:
call __aria_gfni_avx_crypt_16way;
popq %rsi;
+ CFI_ADJUST_CFA_OFFSET(-8);
vpxor (0 * 16)(%r11), %xmm1, %xmm1;
vpxor (1 * 16)(%r11), %xmm0, %xmm0;
vpxor (2 * 16)(%r11), %xmm3, %xmm3;
diff --git a/cipher/aria-aesni-avx2-amd64.S b/cipher/aria-aesni-avx2-amd64.S
index d33fa54b..08bf5a0e 100644
--- a/cipher/aria-aesni-avx2-amd64.S
+++ b/cipher/aria-aesni-avx2-amd64.S
@@ -1395,6 +1395,7 @@ __aria_aesni_avx2_ctr_gen_keystream_32way:
.Lctr_byteadd_full_ctr_carry:
addb $32, 15(%r8);
pushq %rcx;
+ CFI_ADJUST_CFA_OFFSET(8);
movl $14, %ecx;
1:
adcb $0, (%r8, %rcx);
@@ -1402,6 +1403,7 @@ __aria_aesni_avx2_ctr_gen_keystream_32way:
loop 1b;
2:
popq %rcx;
+ CFI_ADJUST_CFA_OFFSET(-8);
jmp .Lctr_byteadd_ymm;
.align 8
.Lctr_byteadd:
@@ -1457,6 +1459,7 @@ _gcry_aria_aesni_avx2_ctr_crypt_blk32:
call __aria_aesni_avx2_ctr_gen_keystream_32way;
pushq %rsi;
+ CFI_ADJUST_CFA_OFFSET(8);
movq %rdx, %r11;
movq %rcx, %rsi; /* use stack for temporary store */
movq %rcx, %rdx;
@@ -1465,6 +1468,7 @@ _gcry_aria_aesni_avx2_ctr_crypt_blk32:
call __aria_aesni_avx2_crypt_32way;
popq %rsi;
+ CFI_ADJUST_CFA_OFFSET(-8);
vpxor (0 * 32)(%r11), %ymm1, %ymm1;
vpxor (1 * 32)(%r11), %ymm0, %ymm0;
vpxor (2 * 32)(%r11), %ymm3, %ymm3;
@@ -1622,6 +1626,7 @@ _gcry_aria_vaes_avx2_ctr_crypt_blk32:
call __aria_aesni_avx2_ctr_gen_keystream_32way;
pushq %rsi;
+ CFI_ADJUST_CFA_OFFSET(8);
movq %rdx, %r11;
movq %rcx, %rsi; /* use stack for temporary store */
movq %rcx, %rdx;
@@ -1630,6 +1635,7 @@ _gcry_aria_vaes_avx2_ctr_crypt_blk32:
call __aria_vaes_avx2_crypt_32way;
popq %rsi;
+ CFI_ADJUST_CFA_OFFSET(-8);
vpxor (0 * 32)(%r11), %ymm1, %ymm1;
vpxor (1 * 32)(%r11), %ymm0, %ymm0;
vpxor (2 * 32)(%r11), %ymm3, %ymm3;
@@ -1788,6 +1794,7 @@ _gcry_aria_gfni_avx2_ctr_crypt_blk32:
call __aria_aesni_avx2_ctr_gen_keystream_32way;
pushq %rsi;
+ CFI_ADJUST_CFA_OFFSET(8);
movq %rdx, %r11;
movq %rcx, %rsi; /* use stack for temporary store */
movq %rcx, %rdx;
@@ -1796,6 +1803,7 @@ _gcry_aria_gfni_avx2_ctr_crypt_blk32:
call __aria_gfni_avx2_crypt_32way;
popq %rsi;
+ CFI_ADJUST_CFA_OFFSET(-8);
vpxor (0 * 32)(%r11), %ymm1, %ymm1;
vpxor (1 * 32)(%r11), %ymm0, %ymm0;
vpxor (2 * 32)(%r11), %ymm3, %ymm3;
diff --git a/cipher/aria-gfni-avx512-amd64.S b/cipher/aria-gfni-avx512-amd64.S
index 0eaa2de8..a497b395 100644
--- a/cipher/aria-gfni-avx512-amd64.S
+++ b/cipher/aria-gfni-avx512-amd64.S
@@ -969,6 +969,7 @@ _gcry_aria_gfni_avx512_ctr_crypt_blk64:
call __aria_gfni_avx512_ctr_gen_keystream_64way
pushq %rsi;
+ CFI_ADJUST_CFA_OFFSET(8);
movq %rdx, %r11;
movq %rcx, %rsi;
movq %rcx, %rdx;
@@ -977,6 +978,7 @@ _gcry_aria_gfni_avx512_ctr_crypt_blk64:
call __aria_gfni_avx512_crypt_64way;
popq %rsi;
+ CFI_ADJUST_CFA_OFFSET(-8);
vpxorq (0 * 64)(%r11), %zmm3, %zmm3;
vpxorq (1 * 64)(%r11), %zmm2, %zmm2;
vpxorq (2 * 64)(%r11), %zmm1, %zmm1;
--
2.51.0
More information about the Gcrypt-devel
mailing list