[asan] Resolve FIXME by converting gtest into lit test

llvm-svn: 313727
This commit is contained in:
Vitaly Buka 2017-09-20 07:01:19 +00:00
parent e768daad6e
commit cf096c2af3
2 changed files with 20 additions and 17 deletions

View File

@ -386,23 +386,6 @@ TEST(AddressSanitizerInterface, DISABLED_InvalidPoisonAndUnpoisonCallsTest) {
free(array);
}
#if !defined(_WIN32) // FIXME: This should really be a lit test.
static void ErrorReportCallbackOneToZ(const char *report) {
int report_len = strlen(report);
ASSERT_EQ(6, write(2, "ABCDEF", 6));
ASSERT_EQ(report_len, write(2, report, report_len));
ASSERT_EQ(6, write(2, "ABCDEF", 6));
_exit(1);
}
TEST(AddressSanitizerInterface, SetErrorReportCallbackTest) {
__asan_set_error_report_callback(ErrorReportCallbackOneToZ);
EXPECT_DEATH(__asan_report_error((void *)GET_CALLER_PC(), 0, 0, 0, true, 1),
ASAN_PCRE_DOTALL "ABCDEF.*AddressSanitizer.*WRITE.*ABCDEF");
__asan_set_error_report_callback(NULL);
}
#endif
TEST(AddressSanitizerInterface, GetOwnershipStressTest) {
std::vector<char *> pointers;
std::vector<size_t> sizes;

View File

@ -0,0 +1,20 @@
// RUN: %clangxx_asan -O0 %s -o %t
// RUN: not %run %t 0 2>&1 | FileCheck %s
#include <sanitizer/asan_interface.h>
#include <stdio.h>
static void ErrorReportCallbackOneToZ(const char *report) {
fprintf(stderr, "ABCDEF%sGHIJKL", report);
}
int main(int argc, char **argv) {
__asan_set_error_report_callback(ErrorReportCallbackOneToZ);
__asan_report_error(
(void *)__builtin_extract_return_addr(__builtin_return_address(0)), 0, 0,
0, true, 1);
// CHECK: ABCDEF
// CHECK: ERROR: AddressSanitizer
// CHECK: GHIJKL
return 0;
}