From 060801d8c8613692469c8d1ccfc2598fb8a2992a Mon Sep 17 00:00:00 2001 From: rofl0r Date: Thu, 21 Jul 2022 23:00:15 +0000 Subject: [PATCH] fat-binary-m1: use arm64e for dylib, but not for executable according to research done by @malash, the proxychains4 binary itself isn't allowed to use system-internal arm64e mode; but it's possible to add it as a 3rd architecture to the shared library (.dylib), and then even inject it into system binaries like /usr/bin/curl, which didn't work since the introduction of SIP. therefore, we now create the dylib with all 3 archs, but the launcher only with arm64 and x86_64. closes #453 --- Makefile | 4 ++-- configure | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 3cfee96..dbd639e 100644 --- a/Makefile +++ b/Makefile @@ -97,10 +97,10 @@ $(LDSO_PATHNAME): $(LOBJS) $(USER_LDFLAGS) -shared -o $@ $^ $(SOCKET_LIBS) $(PXCHAINS): $(OBJS) - $(CC) $^ $(FAT_LDFLAGS) $(USER_LDFLAGS) $(LIBDL) -o $@ + $(CC) $^ $(FAT_BIN_LDFLAGS) $(USER_LDFLAGS) $(LIBDL) -o $@ $(PXCHAINS_D): $(DOBJS) - $(CC) $^ $(FAT_LDFLAGS) $(USER_LDFLAGS) -o $@ + $(CC) $^ $(FAT_BIN_LDFLAGS) $(USER_LDFLAGS) -o $@ .PHONY: all clean install install-config install-libs install-tools install-zsh-completion diff --git a/configure b/configure index 42c1561..6d7107c 100755 --- a/configure +++ b/configure @@ -280,11 +280,13 @@ if ismac ; then echo "Configuring a fat binary for i386 and x86_64" echo "MAC_CFLAGS+=-arch i386 -arch x86_64">>config.mak echo "FAT_LDFLAGS=-arch i386 -arch x86_64">>config.mak + echo "FAT_BIN_LDFLAGS=-arch i386 -arch x86_64">>config.mak fi if [ "$fat_binary_m1" = 1 ] ; then - echo "Configuring a fat binary for arm64e and x86_64" - echo "MAC_CFLAGS+=-arch arm64e -arch x86_64">>config.mak - echo "FAT_LDFLAGS=-arch arm64e -arch x86_64">>config.mak + echo "Configuring a fat binary for arm64[e] and x86_64" + echo "MAC_CFLAGS+=-arch arm64 -arch arm64e -arch x86_64">>config.mak + echo "FAT_LDFLAGS=-arch arm64 -arch arm64e -arch x86_64">>config.mak + echo "FAT_BIN_LDFLAGS=-arch arm64 -arch x86_64">>config.mak fi elif isbsd ; then echo LIBDL=>>config.mak