forked from OSchip/llvm-project
				
			Try to fix more Windows portability issues in sanitizer tests
Add a %stdcxx11 lit substitution for -std=c++11. Windows defaults to -std=c++14 when VS 2015 is used because the STL requires it. Harcoding -std=c++11 in the ASan tests actually downgrades the C++ standard level, leading to test failures. Relax a FileCheck pattern in use-after-scope-types.cc. Disable the sanitizer_common OOM tests. They fail on bots with low swap, and cause other concurrently running tests to OOM. llvm-svn: 276454
This commit is contained in:
		
							parent
							
								
									f432c9cefa
								
							
						
					
					
						commit
						ff3ea5f4f8
					
				| 
						 | 
				
			
			@ -335,7 +335,9 @@ void FailInAssertionOnOOM() {
 | 
			
		|||
  a.TestOnlyUnmap();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if SANITIZER_CAN_USE_ALLOCATOR64
 | 
			
		||||
// Don't test OOM conditions on Win64 because it causes other tests on the same
 | 
			
		||||
// machine to OOM.
 | 
			
		||||
#if SANITIZER_CAN_USE_ALLOCATOR64 && !SANITIZER_WINDOWS64
 | 
			
		||||
TEST(SanitizerCommon, SizeClassAllocator64Overflow) {
 | 
			
		||||
  EXPECT_DEATH(FailInAssertionOnOOM<Allocator64>(), "Out of memory");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -777,7 +779,9 @@ TEST(SanitizerCommon, LargeMmapAllocatorBlockBegin) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if SANITIZER_CAN_USE_ALLOCATOR64
 | 
			
		||||
// Don't test OOM conditions on Win64 because it causes other tests on the same
 | 
			
		||||
// machine to OOM.
 | 
			
		||||
#if SANITIZER_CAN_USE_ALLOCATOR64 && !SANITIZER_WINDOWS64
 | 
			
		||||
// Regression test for out-of-memory condition in PopulateFreeList().
 | 
			
		||||
TEST(SanitizerCommon, SizeClassAllocator64PopulateFreeListOOM) {
 | 
			
		||||
  // In a world where regions are small and chunks are huge...
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
// RUN: %clangxx_asan -std=c++11 -O1 -fsanitize-address-use-after-scope %s -o %t && \
 | 
			
		||||
// RUN: %clangxx_asan %stdcxx11 -O1 -fsanitize-address-use-after-scope %s -o %t && \
 | 
			
		||||
// RUN:     not %run %t 2>&1 | FileCheck %s
 | 
			
		||||
 | 
			
		||||
#include <functional>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
// RUN: %clangxx_asan -std=c++11 -O0 -fsanitize-address-use-after-scope %s -o %t
 | 
			
		||||
// RUN: %clangxx_asan %stdcxx11 -O0 -fsanitize-address-use-after-scope %s -o %t
 | 
			
		||||
// RUN: %env_asan_opts=detect_stack_use_after_scope=1 not %run %t 0 2>&1 | FileCheck %s
 | 
			
		||||
// RUN: %env_asan_opts=detect_stack_use_after_scope=1 not %run %t 1 2>&1 | FileCheck %s
 | 
			
		||||
// RUN: %env_asan_opts=detect_stack_use_after_scope=1 not %run %t 2 2>&1 | FileCheck %s
 | 
			
		||||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ template <class T> void test() {
 | 
			
		|||
 | 
			
		||||
  ptr.Access();
 | 
			
		||||
  // CHECK: ERROR: AddressSanitizer: stack-use-after-scope
 | 
			
		||||
  // CHECK:  #{{[0-9]+}} 0x{{.*}} in void test{{.*}}(){{.*}}use-after-scope-types.cc
 | 
			
		||||
  // CHECK:  #{{[0-9]+}} 0x{{.*}} in {{(void )?test.*\((void)?\) .*}}use-after-scope-types.cc
 | 
			
		||||
  // CHECK: Address 0x{{.*}} is located in stack of thread T{{.*}} at offset [[OFFSET:[^ ]+]] in frame
 | 
			
		||||
  // {{\[}}[[OFFSET]], {{[0-9]+}}) 'x'
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -124,6 +124,14 @@ if platform.system() == 'Windows':
 | 
			
		|||
  config.substitutions.append( ("%asan_cxx_lib", base_lib % "_cxx") )
 | 
			
		||||
  config.substitutions.append( ("%asan_dll_thunk", base_lib % "_dll_thunk") )
 | 
			
		||||
 | 
			
		||||
if platform.system() == 'Windows':
 | 
			
		||||
  # Don't use -std=c++11 on Windows, as the driver will detect the appropriate
 | 
			
		||||
  # default needed to use with the STL.
 | 
			
		||||
  config.substitutions.append(("%stdcxx11 ", ""))
 | 
			
		||||
else:
 | 
			
		||||
  # Some tests uses C++11 features such as lambdas and need to pass -std=c++11.
 | 
			
		||||
  config.substitutions.append(("%stdcxx11 ", "-std=c++11 "))
 | 
			
		||||
 | 
			
		||||
# FIXME: De-hardcode this path.
 | 
			
		||||
asan_source_dir = os.path.join(
 | 
			
		||||
  get_required_attr(config, "compiler_rt_src_root"), "lib", "asan")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue