From 6d969ca687b4b2d4387d318c3fbcf3fc606ea55b Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 17 Nov 2025 15:24:34 -0500 Subject: [PATCH] Fix pg_crc32c_armv8_choose.c to build with ancient glibc releases. If you go back as far as the RHEL7 era, does not provide the HWCAPxxx macros needed with elf_aux_info or getauxval, so you need to get those from the kernel header instead. We knew that for the 32-bit case but failed to extrapolate to the 64-bit case. Oversight in commit aac831caf. Reported-by: GaoZengqi Author: Tom Lane Discussion: https://postgr.es/m/CAFmBtr3Av62-jBzdhFkDHXJF9vQmNtSnH2upwODjnRcsgdTytw@mail.gmail.com Backpatch-through: 18 --- src/port/pg_crc32c_armv8_choose.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/port/pg_crc32c_armv8_choose.c b/src/port/pg_crc32c_armv8_choose.c index ec12be1bbc3..c0001cfe2dc 100644 --- a/src/port/pg_crc32c_armv8_choose.c +++ b/src/port/pg_crc32c_armv8_choose.c @@ -26,7 +26,8 @@ #if defined(HAVE_ELF_AUX_INFO) || defined(HAVE_GETAUXVAL) #include -#if defined(__linux__) && !defined(__aarch64__) && !defined(HWCAP2_CRC32) +/* Ancient glibc releases don't include the HWCAPxxx macros in sys/auxv.h */ +#if defined(__linux__) && (defined(__aarch64__) ? !defined(HWCAP_CRC32) : !defined(HWCAP2_CRC32)) #include #endif #endif