summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2020-05-05 22:53:19 +0100
committerSergei Trofimovich <slyfox@gentoo.org>2020-05-05 22:53:19 +0100
commit73d30f360cfcfeb20e7a634407310fe04a112336 (patch)
treef4431ff10afc91e525f8baf6e8a59e71c8e95319 /net-misc/memcached/files
parentsys-cluster/corosync: drop invalid version check, bug #705276 (diff)
downloadgentoo-73d30f360cfcfeb20e7a634407310fe04a112336.tar.gz
gentoo-73d30f360cfcfeb20e7a634407310fe04a112336.tar.bz2
gentoo-73d30f360cfcfeb20e7a634407310fe04a112336.zip
net-misc/memcached: tweak crc32c build on ia64, bug #718136
Closes: https://bugs.gentoo.org/718136 Package-Manager: Portage-2.3.99, Repoman-2.3.22 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to 'net-misc/memcached/files')
-rw-r--r--net-misc/memcached/files/memcached-1.6.5-ia64.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/net-misc/memcached/files/memcached-1.6.5-ia64.patch b/net-misc/memcached/files/memcached-1.6.5-ia64.patch
new file mode 100644
index 000000000000..5a73913b92e6
--- /dev/null
+++ b/net-misc/memcached/files/memcached-1.6.5-ia64.patch
@@ -0,0 +1,51 @@
+https://github.com/memcached/memcached/commit/73633d31b22068dfda5ef969c08139c083d96d71.patch
+
+From 73633d31b22068dfda5ef969c08139c083d96d71 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Sun, 19 Apr 2020 10:08:19 +0100
+Subject: [PATCH] crc32c.c: don't attempt to enable hardware crc32 on ia64
+
+Itanium has no hardware crc32 implementation and build fails as:
+
+```
+ia64-unknown-linux-gnu-gcc -DHAVE_CONFIG_H -I. -DNDEBUG -g -O2 -pthread \
+ ... -c -o memcached-crc32c.o `test -f 'crc32c.c' || echo './'`crc32c.c
+crc32c.c: In function 'crc32c_init':
+crc32c.c:385:9: error: unknown register name '%edx' in 'asm'
+ 385 | __asm__("cpuid" \
+ | ^~~~~~~
+```
+
+The change removes ia64 from crc32 paths.
+
+Bug: https://bugs.gentoo.org/718136
+Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+---
+ crc32c.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/crc32c.c
++++ b/crc32c.c
+@@ -167,7 +167,7 @@ static uint32_t crc32c_hw_aarch64(uint32_t crc, const void* buf, size_t len)
+ #endif
+
+ /* Apply if the platform is intel */
+-#if defined(__X86_64__)||defined(__x86_64__)||defined(__ia64__)
++#if defined(__X86_64__)||defined(__x86_64__)
+
+ /* Multiply a matrix times a vector over the Galois field of two elements,
+ GF(2). Each element is a bit in an unsigned integer. mat must have at
+@@ -388,12 +388,11 @@ static uint32_t crc32c_hw(uint32_t crc, const void *buf, size_t len)
+ : "%ebx", "%edx"); \
+ (have) = (ecx >> 20) & 1; \
+ } while (0)
+-
+ #endif
+ /* Compute a CRC-32C. If the crc32 instruction is available, use the hardware
+ version. Otherwise, use the software version. */
+ void crc32c_init(void) {
+- #if defined(__X86_64__)||defined(__x86_64__)||defined(__ia64__)
++ #if defined(__X86_64__)||defined(__x86_64__)
+ int sse42;
+ SSE42(sse42);
+