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
This commit is contained in:
rofl0r 2022-07-21 23:00:15 +00:00
parent 09142579c5
commit 060801d8c8
2 changed files with 7 additions and 5 deletions

View File

@ -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

8
configure vendored
View File

@ -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