From f9691d0b473d352e318e7668964364a4dc96a28939c29b31e40ab4ac3f3388d8 Mon Sep 17 00:00:00 2001 From: Bernhard Wiedemann Date: Tue, 11 May 2021 18:30:30 +0000 Subject: [PATCH] add missing patch OBS-URL: https://build.opensuse.org/package/show/Archiving/zstd?expand=0&rev=61 --- zstd-1.4.9-Avoid-SIGBUS-on-armv6.patch | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 zstd-1.4.9-Avoid-SIGBUS-on-armv6.patch diff --git a/zstd-1.4.9-Avoid-SIGBUS-on-armv6.patch b/zstd-1.4.9-Avoid-SIGBUS-on-armv6.patch new file mode 100644 index 0000000..4fa38e9 --- /dev/null +++ b/zstd-1.4.9-Avoid-SIGBUS-on-armv6.patch @@ -0,0 +1,51 @@ +https://github.com/facebook/zstd/pull/2633 + +From 28d0120b5ac62b56cd858bd46480c73730d044b4 Mon Sep 17 00:00:00 2001 +From: "Bernhard M. Wiedemann" +Date: Tue, 11 May 2021 17:46:55 +0200 +Subject: [PATCH] Avoid SIGBUS on armv6 + +When running armv6 userspace on armv8 hardware with a 64 bit Linux kernel, +the mode 2 caused SIGBUS (unaligned memory access). +Running all our arm builds in the build farm +only on armv8 simplifies administration a lot. + +Depending on compiler and environment, this change might slow down +memory accesses (did not benchmark it). The original analysis is 6 years old. + +Fixes #2632 +--- + lib/common/mem.h | 4 +--- + lib/common/xxhash.c | 4 +--- + 2 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/lib/common/mem.h b/lib/common/mem.h +index dc6667c68b..9f3b81ab9d 100644 +--- a/lib/common/mem.h ++++ b/lib/common/mem.h +@@ -143,9 +143,7 @@ MEM_STATIC size_t MEM_swapST(size_t in); + * Prefer these methods in priority order (0 > 1 > 2) + */ + #ifndef MEM_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */ +-# if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ) +-# define MEM_FORCE_MEMORY_ACCESS 2 +-# elif defined(__INTEL_COMPILER) || defined(__GNUC__) || defined(__ICCARM__) ++# if defined(__INTEL_COMPILER) || defined(__GNUC__) || defined(__ICCARM__) + # define MEM_FORCE_MEMORY_ACCESS 1 + # endif + #endif +diff --git a/lib/common/xxhash.c b/lib/common/xxhash.c +index 0ddbf13a39..926b33604e 100644 +--- a/lib/common/xxhash.c ++++ b/lib/common/xxhash.c +@@ -30,9 +30,7 @@ + * Prefer these methods in priority order (0 > 1 > 2) + */ + #ifndef XXH_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */ +-# if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ) +-# define XXH_FORCE_MEMORY_ACCESS 2 +-# elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \ ++# if (defined(__INTEL_COMPILER) && !defined(WIN32)) || \ + (defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) )) || \ + defined(__ICCARM__) + # define XXH_FORCE_MEMORY_ACCESS 1