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 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()