[asan] improve SetErrorReportCallbackTest to actually catch missing functionality in __asan_set_error_report_callback

llvm-svn: 162745
This commit is contained in:
Kostya Serebryany 2012-08-28 11:21:01 +00:00
parent a80313acbc
commit 4bfe954d14
2 changed files with 7 additions and 2 deletions

View File

@ -237,7 +237,7 @@ install_clang: | $(INSTALL_DIR)
# cp -v $(CLANG_BUILD)/lib/libasan*.a $(INSTALL_DIR)/lib
$(BIN)/asan_noinst_test$(SUFF).o: tests/asan_noinst_test.cc $(RTL_HDR) $(MAKEFILE)
$(CLEANROOM_CXX) $(PIE) $(CFLAGS) $(GTEST_INCLUDE) -I. -I.. -g -c $< -O2 -o $@
$(CLEANROOM_CXX) $(COMMON_ASAN_DEFINES) $(PIE) $(CFLAGS) $(GTEST_INCLUDE) -I. -I.. -g -c $< -O2 -o $@
$(BIN)/asan_break_optimization$(SUFF).o: tests/asan_break_optimization.cc $(MAKEFILE)
$(CLEANROOM_CXX) $(PIE) $(CFLAGS) -c $< -O0 -o $@

View File

@ -17,6 +17,7 @@
#include "asan_mapping.h"
#include "asan_stack.h"
#include "asan_test_utils.h"
#include "asan_test_config.h"
#include <assert.h>
#include <stdio.h>
@ -677,11 +678,15 @@ TEST(AddressSanitizerInterface, DISABLED_InvalidPoisonAndUnpoisonCallsTest) {
static void ErrorReportCallbackOneToZ(const char *report) {
write(2, "ABCDEF", 6);
write(2, report, strlen(report));
write(2, "ABCDEF", 6);
_exit(1);
}
TEST(AddressSanitizerInterface, SetErrorReportCallbackTest) {
__asan_set_error_report_callback(ErrorReportCallbackOneToZ);
EXPECT_DEATH(__asan_report_error(0, 0, 0, 0, true, 1), "ABCDEF");
EXPECT_DEATH(__asan_report_error(0, 0, 0, 0, true, 1),
ASAN_PCRE_DOTALL "ABCDEF.*AddressSanitizer.*WRITE.*ABCDEF");
__asan_set_error_report_callback(NULL);
}