From fdf345bf8cfcafc8ef514f81308d037a3da7236d Mon Sep 17 00:00:00 2001 From: Wu Yingcong Date: Thu, 27 Mar 2025 10:15:48 +0800 Subject: [PATCH 1/4] [compiler-rt][builtins] Add missing flag for builtins standalone build (#133046) When builtins are built with runtimes, it is built before compiler-rt, and this makes some of the HAS_XXX_FLAGs missing. In this case, the COMPILER_RT_HAS_FCF_PROTECTION_FLAG is missing which makes it impossible to enable CET in this case. This patch addresses this issue by also check for such flag in standalone build instead of relying on the compiler-rt's detection. --- compiler-rt/cmake/builtin-config-ix.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler-rt/cmake/builtin-config-ix.cmake b/compiler-rt/cmake/builtin-config-ix.cmake index b1bde47ec8555..7bd3269bd999d 100644 --- a/compiler-rt/cmake/builtin-config-ix.cmake +++ b/compiler-rt/cmake/builtin-config-ix.cmake @@ -25,6 +25,7 @@ builtin_check_c_compiler_flag(-fconvergent-functions COMPILER_RT_HAS_FCONVERGENT builtin_check_c_compiler_flag("-Xclang -mcode-object-version=none" COMPILER_RT_HAS_CODE_OBJECT_VERSION_FLAG) builtin_check_c_compiler_flag(-Wbuiltin-declaration-mismatch COMPILER_RT_HAS_WBUILTIN_DECLARATION_MISMATCH_FLAG) builtin_check_c_compiler_flag(/Zl COMPILER_RT_HAS_ZL_FLAG) +builtin_check_c_compiler_flag(-fcf-protection=full COMPILER_RT_HAS_FCF_PROTECTION_FLAG) builtin_check_c_compiler_source(COMPILER_RT_HAS_ATOMIC_KEYWORD " From e9fd4e7f0004e034de20b6f9d89f83fc52e746da Mon Sep 17 00:00:00 2001 From: Wu Yingcong Date: Thu, 27 Mar 2025 14:36:53 +0800 Subject: [PATCH 2/4] [DeviceSanitizer][Coverity] die when fail to create context (#17600) There is uncaught exception through logger creation in sanitizer layer `context_t` 's creation. We catch exceptions here and die if the creation of sanitizer layer context fails. --- .../source/loader/layers/sanitizer/ur_sanitizer_layer.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/unified-runtime/source/loader/layers/sanitizer/ur_sanitizer_layer.cpp b/unified-runtime/source/loader/layers/sanitizer/ur_sanitizer_layer.cpp index ae8cee61a1c27..9c57308c99d1a 100644 --- a/unified-runtime/source/loader/layers/sanitizer/ur_sanitizer_layer.cpp +++ b/unified-runtime/source/loader/layers/sanitizer/ur_sanitizer_layer.cpp @@ -16,7 +16,13 @@ #include "msan/msan_ddi.hpp" namespace ur_sanitizer_layer { -context_t *getContext() { return context_t::get_direct(); } +context_t *getContext() { + try { + return context_t::get_direct(); + } catch (...) { + die("Failed to get sanitizer context."); + } +} /////////////////////////////////////////////////////////////////////////////// context_t::context_t() From aa53e1f063d58b90547c5e5f88c1c9d11e3dd58d Mon Sep 17 00:00:00 2001 From: Wu Yingcong Date: Mon, 24 Mar 2025 11:52:07 +0800 Subject: [PATCH 3/4] [DeviceSanitizer] Skip adding device sanitizers internal variable to bundler symbol table (#17399) `__MsanDeviceGlobalMetadata` etc are sanitizer internal variables, and should not be bundled to the symbol table. --- clang/lib/Driver/OffloadBundler.cpp | 5 ++++- .../clang-offload-bundler-skip-for-symtbl.c | 6 ++++++ .../clang-offload-bundler-skip-for-symtbl.c.ll | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 clang/test/Driver/clang-offload-bundler-skip-for-symtbl.c create mode 100644 clang/test/Driver/clang-offload-bundler-skip-for-symtbl.c.ll diff --git a/clang/lib/Driver/OffloadBundler.cpp b/clang/lib/Driver/OffloadBundler.cpp index 8458bf0d819f6..f4b4964440b54 100644 --- a/clang/lib/Driver/OffloadBundler.cpp +++ b/clang/lib/Driver/OffloadBundler.cpp @@ -700,7 +700,10 @@ class ObjectFileHandler final : public FileHandler { if (SF->isIR() && (Name == "llvm.used" || Name == "llvm.compiler.used" || Name == "__AsanDeviceGlobalMetadata" || - Name == "__AsanKernelMetadata" || Name == "__MsanKernelMetadata")) + Name == "__MsanDeviceGlobalMetadata" || + Name == "__TsanDeviceGlobalMetadata" || + Name == "__AsanKernelMetadata" || Name == "__MsanKernelMetadata" || + Name == "__TsanKernelMetadata")) continue; // Add symbol name with the target prefix to the buffer. diff --git a/clang/test/Driver/clang-offload-bundler-skip-for-symtbl.c b/clang/test/Driver/clang-offload-bundler-skip-for-symtbl.c new file mode 100644 index 0000000000000..3851a10088b03 --- /dev/null +++ b/clang/test/Driver/clang-offload-bundler-skip-for-symtbl.c @@ -0,0 +1,6 @@ +// RUN: llvm-as %s.ll -o %t-in.bc +// RUN: %clang -c -o %t-in.o %s +// RUN: clang-offload-bundler -type=o -targets=openmp-spir64_gen,host-x86_64-unknown-linux-gnu -input=%t-in.bc -input=%t-in.o -output=%t-out.o +// RUN: llvm-readobj --string-dump=.tgtsym %t-out.o | FileCheck %s.ll + +int main() {return 0;} diff --git a/clang/test/Driver/clang-offload-bundler-skip-for-symtbl.c.ll b/clang/test/Driver/clang-offload-bundler-skip-for-symtbl.c.ll new file mode 100644 index 0000000000000..45147b4f01fec --- /dev/null +++ b/clang/test/Driver/clang-offload-bundler-skip-for-symtbl.c.ll @@ -0,0 +1,18 @@ +@__AsanKernelMetadata = global i64 0 +;CHECK-NOT: __AsanKernelMetadata +@__MsanKernelMetadata = global i64 0 +;CHECK-NOT: __MsanKernelMetadata +@__TsanKernelMetadata = global i64 0 +;CHECK-NOT: __TsanKernelMetadata +@__AsanDeviceGlobalMetadata = global i64 0 +;CHECK-NOT: __AsanDeviceGlobalMetadata +@__MsanDeviceGlobalMetadata = global i64 0 +;CHECK-NOT: __MsanDeviceGlobalMetadata +@__TsanDeviceGlobalMetadata = global i64 0 +;CHECK-NOT: __TsanDeviceGlobalMetadata + +@not_skipping = global i64 0 +;CHECK: not_skipping + +@__another_global = global i64 0 +;CHECK: __another_global From 5bc808feda4e8e4ae1cbf4e88c261ec56617076c Mon Sep 17 00:00:00 2001 From: "Kornev, Nikita" Date: Mon, 16 Jun 2025 10:51:03 +0200 Subject: [PATCH 4/4] Revert "[compiler-rt][builtins] Add missing flag for builtins standalone build (#133046)" This reverts commit fdf345bf8cfcafc8ef514f81308d037a3da7236d. --- compiler-rt/cmake/builtin-config-ix.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/compiler-rt/cmake/builtin-config-ix.cmake b/compiler-rt/cmake/builtin-config-ix.cmake index 7bd3269bd999d..b1bde47ec8555 100644 --- a/compiler-rt/cmake/builtin-config-ix.cmake +++ b/compiler-rt/cmake/builtin-config-ix.cmake @@ -25,7 +25,6 @@ builtin_check_c_compiler_flag(-fconvergent-functions COMPILER_RT_HAS_FCONVERGENT builtin_check_c_compiler_flag("-Xclang -mcode-object-version=none" COMPILER_RT_HAS_CODE_OBJECT_VERSION_FLAG) builtin_check_c_compiler_flag(-Wbuiltin-declaration-mismatch COMPILER_RT_HAS_WBUILTIN_DECLARATION_MISMATCH_FLAG) builtin_check_c_compiler_flag(/Zl COMPILER_RT_HAS_ZL_FLAG) -builtin_check_c_compiler_flag(-fcf-protection=full COMPILER_RT_HAS_FCF_PROTECTION_FLAG) builtin_check_c_compiler_source(COMPILER_RT_HAS_ATOMIC_KEYWORD "