[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
This commit is contained in:
Chris Apple 2024-09-18 05:48:24 -06:00 committed by GitHub
parent c29dfb3346
commit cb47b45d78
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 30 additions and 1 deletions

View File

@ -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}

View File

@ -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

View File

@ -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