summaryrefslogtreecommitdiffstats
path: root/patches/zstd-1.5.1/0002-Makefiles-Add-noexecstack-Options-to-Compilation-and.patch
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2022-01-14 13:10:59 +0100
committerMichael Olbrich <m.olbrich@pengutronix.de>2022-01-14 13:59:43 +0100
commit84a5eb721b58b80e6aae6989330e9a43068e759e (patch)
treecc6111050580e4e20ccbb45d2d4e6bbbc57ddf1e /patches/zstd-1.5.1/0002-Makefiles-Add-noexecstack-Options-to-Compilation-and.patch
parentf1ed927fcba111006f40747b50465ab140df9900 (diff)
downloadptxdist-84a5eb721b58b80e6aae6989330e9a43068e759e.tar.gz
ptxdist-84a5eb721b58b80e6aae6989330e9a43068e759e.tar.xz
zstd: add upstream patches to fix booting with systemd on non x86_64 platforms
Without this, many systemd services, including journald and udevd fail to start on non x86_64 platforms with: "error while loading shared libraries: libzstd.so.1: cannot enable executable stack as shared object requires: Operation not permitted" See also: https://github.com/facebook/zstd/issues/2963 Cherry-pick the relevant patches from upstream to fix this. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Diffstat (limited to 'patches/zstd-1.5.1/0002-Makefiles-Add-noexecstack-Options-to-Compilation-and.patch')
-rw-r--r--patches/zstd-1.5.1/0002-Makefiles-Add-noexecstack-Options-to-Compilation-and.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/patches/zstd-1.5.1/0002-Makefiles-Add-noexecstack-Options-to-Compilation-and.patch b/patches/zstd-1.5.1/0002-Makefiles-Add-noexecstack-Options-to-Compilation-and.patch
new file mode 100644
index 000000000..81afe8442
--- /dev/null
+++ b/patches/zstd-1.5.1/0002-Makefiles-Add-noexecstack-Options-to-Compilation-and.patch
@@ -0,0 +1,71 @@
+From: "W. Felix Handte" <w@felixhandte.com>
+Date: Wed, 5 Jan 2022 14:53:22 -0500
+Subject: [PATCH] Makefiles: Add `noexecstack` Options to Compilation and
+ Linking
+
+Hopefully this marks the binary artifacts `noexecstack` even on platforms
+where binaries default to true.
+---
+ lib/libzstd.mk | 28 ++++++++++++++++++++++++++++
+ programs/Makefile | 2 --
+ 2 files changed, 28 insertions(+), 2 deletions(-)
+
+diff --git a/lib/libzstd.mk b/lib/libzstd.mk
+index af12daffe128..5432198ed481 100644
+--- a/lib/libzstd.mk
++++ b/lib/libzstd.mk
+@@ -34,6 +34,8 @@ ZSTD_NO_ASM ?= 0
+ # libzstd helpers
+ ##################################################################
+
++VOID ?= /dev/null
++
+ # Make 4.3 doesn't support '\#' anymore (https://lwn.net/Articles/810071/)
+ NUM_SYMBOL := \#
+
+@@ -96,6 +98,32 @@ CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
+ LDFLAGS += $(MOREFLAGS)
+ FLAGS = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
+
++ifndef ALREADY_APPENDED_NOEXECSTACK
++export ALREADY_APPENDED_NOEXECSTACK := 1
++ifeq ($(shell echo "int main(int argc, char* argv[]) { (void)argc; (void)argv; return 0; }" | $(CC) $(FLAGS) -z noexecstack -x c -Werror - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
++$(info Supports noexecstack linker flag!)
++$(info $(LDFLAGS))
++LDFLAGS += -z noexecstack
++$(info $(LDFLAGS))
++else
++$(info Doesn't support noexecstack linker flag!)
++endif
++ifeq ($(shell echo | $(CC) $(FLAGS) -Wa,--noexecstack -x assembler -Werror -c - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
++$(info Supports noexecstack assembler flag!)
++$(info $(CFLAGS))
++CFLAGS += -Wa,--noexecstack
++$(info $(CFLAGS))
++else ifeq ($(shell echo | $(CC) $(FLAGS) -Qunused-arguments -Wa,--noexecstack -x assembler -Werror -c - -o $(VOID) 2>$(VOID) && echo 1 || echo 0),1)
++# See e.g.: https://github.com/android/ndk/issues/171
++$(info Supports noexecstack assembler flag with unused arg suppression!)
++$(info $(CFLAGS))
++CFLAGS += -Qunused-arguments -Wa,--noexecstack
++$(info $(CFLAGS))
++else
++$(info Doesn't support noexecstack assembler flag!)
++endif
++endif
++
+ HAVE_COLORNEVER = $(shell echo a | grep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
+ GREP_OPTIONS ?=
+ ifeq ($HAVE_COLORNEVER, 1)
+diff --git a/programs/Makefile b/programs/Makefile
+index a54900cc1e9d..da848eb66bc0 100644
+--- a/programs/Makefile
++++ b/programs/Makefile
+@@ -62,8 +62,6 @@ else
+ EXT =
+ endif
+
+-VOID = /dev/null
+-
+ # thread detection
+ NO_THREAD_MSG := ==> no threads, building without multithreading support
+ HAVE_PTHREAD := $(shell printf '$(NUM_SYMBOL)include <pthread.h>\nint main(void) { return 0; }' > have_pthread.c && $(CC) $(FLAGS) -o have_pthread$(EXT) have_pthread.c -pthread 2> $(VOID) && rm have_pthread$(EXT) && echo 1 || echo 0; rm have_pthread.c)