diff options
author | Michael Olbrich <m.olbrich@pengutronix.de> | 2022-01-14 13:10:59 +0100 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2022-01-14 13:59:43 +0100 |
commit | 84a5eb721b58b80e6aae6989330e9a43068e759e (patch) | |
tree | cc6111050580e4e20ccbb45d2d4e6bbbc57ddf1e /patches/zstd-1.5.1/0002-Makefiles-Add-noexecstack-Options-to-Compilation-and.patch | |
parent | f1ed927fcba111006f40747b50465ab140df9900 (diff) | |
download | ptxdist-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.patch | 71 |
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) |