Skip to content

Commit

Permalink
clang,lld: enable some CFI and PEHeaders flags to match MSVC UWP defa…
Browse files Browse the repository at this point in the history
…ult behavior
  • Loading branch information
Andarwinux committed Dec 7, 2023
1 parent 4f74216 commit c3a4f73
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 8 deletions.
6 changes: 2 additions & 4 deletions cmake/toolchain_check.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,8 @@ if(TARGET_CPU STREQUAL "x86_64")
set(crt_lib "--disable-lib32 --enable-lib64")
set(LIBOMP_ASMFLAGS_M64 "-DLIBOMP_ASMFLAGS=-m64")
set(M_TUNE "generic")
set(cfi "-mguard=cf")
if (GCC_ARCH STREQUAL "x86-64")
unset(cfi)
endif()
set(clang_cfi "-mguard=cf -fcf-protection=full -Xclang -ehcontguard")
set(lld_cfi "-Xlink=-guard:cf,longjmp,ehcont -Xlink=-cetcompat")
elseif(TARGET_CPU STREQUAL "i686")
set(crt_lib "--enable-lib32 --disable-lib64")
set(M_TUNE "generic")
Expand Down
1 change: 1 addition & 0 deletions toolchain/llvm/llvm-compiler-rt-builtin.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ ExternalProject_Add(llvm-compiler-rt-builtin
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=TRUE
-DCOMPILER_RT_BUILD_BUILTINS=TRUE
-DCOMPILER_RT_ENABLE_CET=TRUE
-DLLVM_CONFIG_PATH=""
-DCMAKE_FIND_ROOT_PATH=${MINGW_INSTALL_PREFIX}
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY
Expand Down
6 changes: 3 additions & 3 deletions toolchain/llvm/llvm-compiler.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ TARGET=@TARGET_ARCH@
FLAGS="$FLAGS -target $TARGET -march=@GCC_ARCH@ -mtune=@M_TUNE@"
FLAGS="$FLAGS @driver_mode@ --sysroot @MINGW_INSTALL_PREFIX@"
FLAGS="$FLAGS -fuse-ld=lld --ld-path=@TARGET_ARCH@-ld"
FLAGS="$FLAGS @cfi@ @opt@"
FLAGS="$FLAGS @clang_cfi@ @opt@"
FLAGS="$FLAGS -gcodeview"
FLAGS="$FLAGS -Wno-unused-command-line-argument"

FLAGS="$FLAGS -Wno-unused-command-line-argument -Wno-macro-redefined"
FLAGS="$FLAGS -D_WIN32_WINNT=0x0A00 -DWINVER=0x0A00"
if [ "$CONF" == "1" ]; then
SKIP_OPT="-O0 -fno-lto"
fi
Expand Down
3 changes: 2 additions & 1 deletion toolchain/llvm/llvm-ld.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
PROG=@CMAKE_INSTALL_PREFIX@/bin/ld.lld
TARGET=@TARGET_ARCH@
FLAGS="-m @ld_m_flag@"
FLAGS="$FLAGS @opt@"
FLAGS="$FLAGS @opt@ @lld_cfi@"
FLAGS="$FLAGS --pdb="
FLAGS="$FLAGS -O3 -Xlink=-opt:lldlto=3 -Xlink=-opt:lldltocgo=3"
FLAGS="$FLAGS --no-insert-timestamp --major-os-version=10 --major-subsystem-version=6 --minor-subsystem-version=2 --file-alignment=4096"

if [ "$CONF" == "1" ]; then
SKIP_OPT="-O0 -Xlink=-opt:lldlto=0 -Xlink=-opt:lldltocgo=0 --no-gc-sections --no-guard-cf"
Expand Down
3 changes: 3 additions & 0 deletions toolchain/llvm/llvm-libcxx.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ ExternalProject_Add(llvm-libcxx
-DLIBUNWIND_USE_COMPILER_RT=TRUE
-DLIBUNWIND_ENABLE_SHARED=OFF
-DLIBUNWIND_ENABLE_STATIC=ON
-DLIBUNWIND_ENABLE_CET=ON
-DCXX_SUPPORTS_FCF_PROTECTION_EQ_FULL_FLAG=ON
-DCXX_SUPPORTS_MSHSTK_FLAG=ON
-DLIBCXX_USE_COMPILER_RT=ON
-DLIBCXX_ENABLE_SHARED=OFF
-DLIBCXX_ENABLE_STATIC=ON
Expand Down

0 comments on commit c3a4f73

Please sign in to comment.