From 0adb664a315dbd3c5e63c348de0dfd44ff05edb4 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Sat, 30 May 2020 19:28:47 +0100 Subject: [PATCH] OpenBSD build update and llvm mode fix Unlike upstream version, LLVM in OpenBSD enable by default anti ROP gadget leading to bigger binaries and lower performances. On OpenBSD, it needs to link to c++ abi for th unwind symbols. --- GNUmakefile | 2 +- llvm_mode/GNUmakefile | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/GNUmakefile b/GNUmakefile index dd817d35..7556b617 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -100,7 +100,7 @@ ifeq "$(shell uname -s)" "DragonFly" endif ifeq "$(shell uname -s)" "OpenBSD" - override CFLAGS += -I /usr/local/include/ + override CFLAGS += -I /usr/local/include/ -mno-retpoline LDFLAGS += -Wl,-z,notext -L /usr/local/lib/ endif diff --git a/llvm_mode/GNUmakefile b/llvm_mode/GNUmakefile index 50a6be2b..b2f5a366 100644 --- a/llvm_mode/GNUmakefile +++ b/llvm_mode/GNUmakefile @@ -226,6 +226,10 @@ endif ifeq "$(shell uname)" "OpenBSD" CLANG_LFL += `$(LLVM_CONFIG) --libdir`/libLLVM.so + CLANG_CFL += -mno-retpoline + CFLAGS += -mno-retpoline + # Needed for unwind symbols + LDFLAGS += -lc++abi endif ifeq "$(shell echo '$(HASH)include @$(HASH)include @int main() { int _id = shmget(IPC_PRIVATE, 65536, IPC_CREAT | IPC_EXCL | 0600); shmctl(_id, IPC_RMID, 0); return 0;}' | tr @ '\n' | $(CC) -x c - -o .test2 2>/dev/null && echo 1 || echo 0 ; rm -f .test2 )" "1"