summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-fs/btrfs-progs/files/btrfs-progs-6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch')
-rw-r--r--sys-fs/btrfs-progs/files/btrfs-progs-6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch44
1 files changed, 44 insertions, 0 deletions
diff --git a/sys-fs/btrfs-progs/files/btrfs-progs-6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch b/sys-fs/btrfs-progs/files/btrfs-progs-6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch
new file mode 100644
index 000000000000..40a9bbeff8f6
--- /dev/null
+++ b/sys-fs/btrfs-progs/files/btrfs-progs-6.5-avoid-textrel-crc32c-pcl-intel-asm_64.patch
@@ -0,0 +1,44 @@
+See https://github.com/kdave/btrfs-progs/commit/992be8b50a65974e52a484911e72bc5a5e1b412c.
+
+With binutils-2.41[hardened], one gets:
+```
+/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: crypto/crc32c-pcl-intel-asm_64.o: warning: relocation in read-only section `.rodata'
+/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: read-only segment has dynamic relocations
+collect2: error: ld returned 1 exit status
+make: *** [Makefile:660: btrfs-map-logical] Error 1
+```
+
+But it's a textrel and a warning anyway even without hardened.
+
+Disable it for now until it gets fixed properly upstream.
+--- a/Makefile
++++ b/Makefile
+@@ -387,7 +387,7 @@ endif
+
+ ifeq ($(TARGET_CPU),x86_64)
+ # FIXME: linkage is broken on musl for some reason
+-ifeq ($(HAVE_GLIBC),1)
++ifeq (0,1)
+ CRYPTO_OBJECTS += crypto/crc32c-pcl-intel-asm_64.o
+ ASFLAGS += -fPIC
+ endif
+--- a/crypto/crc32c.c
++++ b/crypto/crc32c.c
+@@ -18,7 +18,7 @@ static uint32_t (*crc_function)(uint32_t crc, unsigned char const *data, uint32_
+
+ #ifdef __x86_64__
+
+-#ifdef __GLIBC__
++#if 0
+
+ /* asmlinkage */ unsigned int crc_pcl(const unsigned char *buffer, int len, unsigned int crc_init);
+ static unsigned int crc32c_pcl(uint32_t crc, unsigned char const *data, uint32_t len) {
+@@ -95,7 +95,7 @@ void crc32c_init_accel(void)
+ * now.
+ */
+ if (0) {
+-#ifdef __GLIBC__
++#if 0
+ } else if (cpu_has_feature(CPU_FLAG_SSE42)) {
+ /* printf("CRC32C: pcl\n"); */
+ crc_function = crc32c_pcl;