This is preparatory work for allowing the x86 kernel to be built as a PIE executable, which relies mostly on RIP-relative symbol references from code, as these don't need to be updated when a binary is loaded at an address different from its link time address. Most changes are quite straight-forward, i.e., just adding a (%rip) suffix is enough in many cases. However, some are slightly trickier, and need some minor reshuffling of the asm code to get rid of the absolute references in the code. Tested with CONFIG_CRYPTO_MANAGER_EXTRA_TESTS=y on a x86 CPU that implements AVX, AVX2 and AVX512. Changes since v1: - add missing tags from Thomas Garnier - simplify AES-NI GCM tail handling and drop an entire permute vector table (patch #2) - add a couple of patches to switch to local labels, which removes ~1000 useless code symbols (e.g., _loop0, _loop1, _done etc etc) from kallsyms Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Cc: Eric Biggers <ebiggers@xxxxxxxxxx> Cc: Kees Cook <keescook@xxxxxxxxxxxx> Ard Biesheuvel (13): crypto: x86/aegis128 - Use RIP-relative addressing crypto: x86/aesni - Use RIP-relative addressing crypto: x86/aria - Use RIP-relative addressing crypto: x86/camellia - Use RIP-relative addressing crypto: x86/cast5 - Use RIP-relative addressing crypto: x86/cast6 - Use RIP-relative addressing crypto: x86/crc32c - Use RIP-relative addressing crypto: x86/des3 - Use RIP-relative addressing crypto: x86/ghash - Use RIP-relative addressing crypto: x86/sha256 - Use RIP-relative addressing crypto: x86/aesni - Use local .L symbols for code crypto: x86/crc32 - Use local .L symbols for code crypto: x86/sha - Use local .L symbols for code arch/x86/crypto/aegis128-aesni-asm.S | 6 +- arch/x86/crypto/aesni-intel_asm.S | 198 +++++++-------- arch/x86/crypto/aesni-intel_avx-x86_64.S | 254 +++++++++----------- arch/x86/crypto/aria-aesni-avx-asm_64.S | 28 +-- arch/x86/crypto/aria-aesni-avx2-asm_64.S | 28 +-- arch/x86/crypto/aria-gfni-avx512-asm_64.S | 24 +- arch/x86/crypto/camellia-aesni-avx-asm_64.S | 30 +-- arch/x86/crypto/camellia-aesni-avx2-asm_64.S | 30 +-- arch/x86/crypto/camellia-x86_64-asm_64.S | 6 +- arch/x86/crypto/cast5-avx-x86_64-asm_64.S | 38 +-- arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 32 +-- arch/x86/crypto/crc32-pclmul_asm.S | 16 +- arch/x86/crypto/crc32c-pcl-intel-asm_64.S | 70 +++--- arch/x86/crypto/des3_ede-asm_64.S | 96 +++++--- arch/x86/crypto/ghash-clmulni-intel_asm.S | 4 +- arch/x86/crypto/sha1_avx2_x86_64_asm.S | 25 +- arch/x86/crypto/sha256-avx-asm.S | 16 +- arch/x86/crypto/sha256-avx2-asm.S | 54 +++-- arch/x86/crypto/sha256-ssse3-asm.S | 16 +- arch/x86/crypto/sha512-avx-asm.S | 8 +- arch/x86/crypto/sha512-avx2-asm.S | 16 +- arch/x86/crypto/sha512-ssse3-asm.S | 8 +- 22 files changed, 509 insertions(+), 494 deletions(-) -- 2.39.2