[PATCH 3/4] aria-x86_64: fixes for CFI markings
Jussi Kivilinna <[email protected]> Sun, 21 Dec 2025 12:58:48 +0200
| Newsgroups | gmane.comp.encryption.gpg.libgcrypt.devel |
|---|---|
| Message-ID | <[email protected]> |
* 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 <[email protected]> --- 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