From 927850875c6254282697dbbed8aff65275bdeff5 Mon Sep 17 00:00:00 2001 Message-ID: <927850875c6254282697dbbed8aff65275bdeff5.1770174288.git.sam@gentoo.org> From: Jussi Kivilinna Date: Sun, 1 Feb 2026 09:50:50 +0200 Subject: [PATCH 1/2] rijndael-vaes-avx512: add PIC @PLT for AVX2 function jumps * cipher/asm-common-amd64.h (AT_PLT): New. * cipher/rijndael-vaes-avx512-amd64.S: Use AT_PLT for jumps to AVX2/VAES functions. -- GnuPG-bug-id: 8071 Signed-off-by: Jussi Kivilinna --- cipher/asm-common-amd64.h | 6 ++++++ cipher/rijndael-vaes-avx512-amd64.S | 14 +++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/cipher/asm-common-amd64.h b/cipher/asm-common-amd64.h index 465ef62b..d0cc6426 100644 --- a/cipher/asm-common-amd64.h +++ b/cipher/asm-common-amd64.h @@ -53,6 +53,12 @@ # define ADD_RIP #endif +#ifdef __PIC__ +# define AT_PLT ELF(@PLT) +#else +# define AT_PLT +#endif + #if defined(HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS) || !defined(__PIC__) # define GET_EXTERN_POINTER(name, reg) movabsq $name, reg #else diff --git a/cipher/rijndael-vaes-avx512-amd64.S b/cipher/rijndael-vaes-avx512-amd64.S index b7dba5e3..f20998b0 100644 --- a/cipher/rijndael-vaes-avx512-amd64.S +++ b/cipher/rijndael-vaes-avx512-amd64.S @@ -277,7 +277,7 @@ _gcry_vaes_avx512_cbc_dec_amd64: .Lcbc_dec_skip_avx512: /* Handle trailing blocks with AVX2 implementation. */ cmpq $0, %r8; - ja _gcry_vaes_avx2_cbc_dec_amd64; + ja _gcry_vaes_avx2_cbc_dec_amd64 AT_PLT; ret_spec_stop CFI_ENDPROC(); @@ -491,7 +491,7 @@ _gcry_vaes_avx512_cfb_dec_amd64: .Lcfb_dec_skip_avx512: /* Handle trailing blocks with AVX2 implementation. */ cmpq $0, %r8; - ja _gcry_vaes_avx2_cfb_dec_amd64; + ja _gcry_vaes_avx2_cfb_dec_amd64 AT_PLT; ret_spec_stop CFI_ENDPROC(); @@ -813,7 +813,7 @@ _gcry_vaes_avx512_ctr_enc_amd64: .Lctr_enc_skip_avx512: /* Handle trailing blocks with AVX2 implementation. */ cmpq $0, %r8; - ja _gcry_vaes_avx2_ctr_enc_amd64; + ja _gcry_vaes_avx2_ctr_enc_amd64 AT_PLT; ret_spec_stop CFI_ENDPROC(); @@ -1037,7 +1037,7 @@ _gcry_vaes_avx512_ctr32le_enc_amd64: .Lctr32le_enc_skip_avx512: /* Handle trailing blocks with AVX2 implementation. */ cmpq $0, %r8; - ja _gcry_vaes_avx2_ctr32le_enc_amd64; + ja _gcry_vaes_avx2_ctr32le_enc_amd64 AT_PLT; ret_spec_stop CFI_ENDPROC(); @@ -1721,7 +1721,7 @@ _gcry_vaes_avx512_ocb_aligned_crypt_amd64: .Locb_skip_avx512: /* Handle trailing blocks with AVX2 implementation. */ cmpq $0, %r8; - ja _gcry_vaes_avx2_ocb_crypt_amd64; + ja _gcry_vaes_avx2_ocb_crypt_amd64 AT_PLT; xorl %eax, %eax; ret_spec_stop @@ -2084,7 +2084,7 @@ _gcry_vaes_avx512_xts_crypt_amd64: .Lxts_crypt_skip_avx512: /* Handle trailing blocks with AVX2 implementation. */ cmpq $0, %r8; - ja _gcry_vaes_avx2_xts_crypt_amd64; + ja _gcry_vaes_avx2_xts_crypt_amd64 AT_PLT; ret_spec_stop CFI_ENDPROC(); @@ -2347,7 +2347,7 @@ _gcry_vaes_avx512_ecb_crypt_amd64: .Lecb_crypt_skip_avx512: /* Handle trailing blocks with AVX2 implementation. */ cmpq $0, %r8; - ja _gcry_vaes_avx2_ecb_crypt_amd64; + ja _gcry_vaes_avx2_ecb_crypt_amd64 AT_PLT; ret_spec_stop CFI_ENDPROC(); -- 2.53.0