aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/liblzma/check/crc32_fast.c3
-rw-r--r--src/liblzma/check/crc64_fast.c3
-rw-r--r--src/liblzma/check/crc_common.h5
3 files changed, 7 insertions, 4 deletions
diff --git a/src/liblzma/check/crc32_fast.c b/src/liblzma/check/crc32_fast.c
index 5229a4bd..3ac9b6d7 100644
--- a/src/liblzma/check/crc32_fast.c
+++ b/src/liblzma/check/crc32_fast.c
@@ -272,8 +272,7 @@ crc32_dispatch(const uint8_t *buf, size_t size, uint32_t crc)
#endif
-#if defined(CRC_GENERIC) && defined(CRC_CLMUL) \
- && defined(HAVE_FUNC_ATTRIBUTE_IFUNC)
+#ifdef CRC_USE_IFUNC
extern LZMA_API(uint32_t)
lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc)
__attribute__((__ifunc__("crc32_resolve")));
diff --git a/src/liblzma/check/crc64_fast.c b/src/liblzma/check/crc64_fast.c
index 88ba7d33..79b662a4 100644
--- a/src/liblzma/check/crc64_fast.c
+++ b/src/liblzma/check/crc64_fast.c
@@ -274,8 +274,7 @@ crc64_dispatch(const uint8_t *buf, size_t size, uint64_t crc)
#endif
-#if defined(CRC_GENERIC) && defined(CRC_CLMUL) \
- && defined(HAVE_FUNC_ATTRIBUTE_IFUNC)
+#ifdef CRC_USE_IFUNC
extern LZMA_API(uint64_t)
lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc)
__attribute__((__ifunc__("crc64_resolve")));
diff --git a/src/liblzma/check/crc_common.h b/src/liblzma/check/crc_common.h
index 867e53d9..55fdd55e 100644
--- a/src/liblzma/check/crc_common.h
+++ b/src/liblzma/check/crc_common.h
@@ -34,6 +34,7 @@
#undef CRC_GENERIC
#undef CRC_CLMUL
+#undef CRC_USE_IFUNC
#undef CRC_USE_GENERIC_FOR_SMALL_INPUTS
// If CLMUL cannot be used then only the generic slice-by-four is built.
@@ -54,6 +55,10 @@
# define CRC_GENERIC 1
# define CRC_CLMUL 1
+# ifdef HAVE_FUNC_ATTRIBUTE_IFUNC
+# define CRC_USE_IFUNC 1
+# endif
+
/*
// The generic code is much faster with 1-8-byte inputs and has
// similar performance up to 16 bytes at least in microbenchmarks