[compiler-rt] cb47b45 - [rtsan] Fix RTTI issue, make a better c test (#108720)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 18 04:48:29 PDT 2024
Author: Chris Apple
Date: 2024-09-18T05:48:24-06:00
New Revision: cb47b45d782fcca46acb614c720233c6b8706e58
URL: https://github.com/llvm/llvm-project/commit/cb47b45d782fcca46acb614c720233c6b8706e58
DIFF: https://github.com/llvm/llvm-project/commit/cb47b45d782fcca46acb614c720233c6b8706e58.diff
LOG: [rtsan] Fix RTTI issue, make a better c test (#108720)
Later in a development branch, our c tests were failing, this was due to
the lack of RTTI.
This follows very similar patterns found in the other sanitizers
Added:
compiler-rt/test/rtsan/sanity_check_pure_c.c
Modified:
compiler-rt/lib/rtsan/CMakeLists.txt
compiler-rt/test/rtsan/basic.cpp
Removed:
################################################################################
diff --git a/compiler-rt/lib/rtsan/CMakeLists.txt b/compiler-rt/lib/rtsan/CMakeLists.txt
index 3f146a757a97eb..07a21b49eb45aa 100644
--- a/compiler-rt/lib/rtsan/CMakeLists.txt
+++ b/compiler-rt/lib/rtsan/CMakeLists.txt
@@ -29,6 +29,8 @@ set(RTSAN_LINK_LIBS
${COMPILER_RT_UNWINDER_LINK_LIBS}
${COMPILER_RT_CXX_LINK_LIBS})
+append_rtti_flag(OFF RTSAN_CFLAGS)
+
if(APPLE)
add_compiler_rt_object_libraries(RTRtsan
OS ${SANITIZER_COMMON_SUPPORTED_OS}
diff --git a/compiler-rt/test/rtsan/basic.cpp b/compiler-rt/test/rtsan/basic.cpp
index 607db90213a30d..4edf32336720f8 100644
--- a/compiler-rt/test/rtsan/basic.cpp
+++ b/compiler-rt/test/rtsan/basic.cpp
@@ -1,5 +1,4 @@
// RUN: %clangxx -fsanitize=realtime %s -o %t
-// RUN: %clang -fsanitize=realtime %s -o %t
// RUN: not %run %t 2>&1 | FileCheck %s
// UNSUPPORTED: ios
diff --git a/compiler-rt/test/rtsan/sanity_check_pure_c.c b/compiler-rt/test/rtsan/sanity_check_pure_c.c
new file mode 100644
index 00000000000000..bdca6039d9324d
--- /dev/null
+++ b/compiler-rt/test/rtsan/sanity_check_pure_c.c
@@ -0,0 +1,28 @@
+// RUN: %clang -fsanitize=realtime %s -o %t
+// RUN: not %run %t 2>&1 | FileCheck %s
+// RUN: %clang %s -o %t
+// RUN: %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SANITIZE
+#ifdef __cplusplus
+# error "This test must be built in C mode"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+// Check that we can build and run C code.
+
+void nonblocking_function(void) __attribute__((nonblocking));
+
+void nonblocking_function(void) __attribute__((nonblocking)) {
+ void *ptr = malloc(2);
+ printf("ptr: %p\n", ptr); // ensure we don't optimize out the malloc
+}
+
+int main() {
+ nonblocking_function();
+ printf("Done\n");
+ return 0;
+}
+
+// CHECK: ==ERROR: RealtimeSanitizer
+// CHECK-NO-SANITIZE: Done
More information about the llvm-commits
mailing list