if llvm_symbolizer is not None:
self.env['ASAN_SYMBOLIZER_PATH'] = llvm_symbolizer
self.config.available_features.add('asan')
+ self.config.available_features.add('sanitizer-new-delete')
elif san == 'Memory' or san == 'MemoryWithOrigins':
self.cxx.flags += ['-fsanitize=memory']
if san == 'MemoryWithOrigins':
if llvm_symbolizer is not None:
self.env['MSAN_SYMBOLIZER_PATH'] = llvm_symbolizer
self.config.available_features.add('msan')
+ self.config.available_features.add('sanitizer-new-delete')
elif san == 'Undefined':
self.cxx.flags += ['-fsanitize=undefined',
'-fno-sanitize=vptr,function',
elif san == 'Thread':
self.cxx.flags += ['-fsanitize=thread']
self.config.available_features.add('tsan')
+ self.config.available_features.add('sanitizer-new-delete')
else:
self.lit_config.fatal('unsupported value for '
'use_sanitizer: {0}'.format(san))
// template <InputIterator Iter>
// iterator insert(const_iterator position, Iter first, Iter last);
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#if _LIBCPP_DEBUG >= 1
#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
// iterator insert(const_iterator position, size_type n, const value_type& x);
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#if _LIBCPP_DEBUG >= 1
#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
// iterator insert(const_iterator position, const value_type& x);
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#if _LIBCPP_DEBUG >= 1
#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0))
// test operator new[]
// NOTE: asan and msan will not call the new handler.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
// test operator new [] (nothrow)
// NOTE: asan and msan will not call the new handler.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
// test operator new [] nothrow by replacing only operator new
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// test operator new[] replacement by replacing only operator new
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// test sized operator delete[] by replacing unsized operator delete[].
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// test nothrow sized operator delete[] by replacing
// nothrow unsized operator delete[].
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// Note that sized delete operator definitions below are simply ignored
// when sized deallocation is not supported, e.g., prior to C++14.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// Note that sized delete operator definitions below are simply ignored
// when sized deallocation is not supported, e.g., prior to C++14.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// test operator new
// asan and msan will not call the new handler.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// test operator new (nothrow)
// asan and msan will not call the new handler.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// test operator new nothrow by replacing only operator new
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// test operator new replacement
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// test sized operator delete by replacing unsized operator delete.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// test nothrow sized operator delete by replacing
// nothrow unsized operator delete.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// Note that sized delete operator definitions below are simply ignored
// when sized deallocation is not supported, e.g., prior to C++14.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
// Note that sized delete operator definitions below are simply ignored
// when sized deallocation is not supported, e.g., prior to C++14.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <new>
#include <cstddef>
//===----------------------------------------------------------------------===//
// REQUIRES: locale.ru_RU.UTF-8
-// UNSUPPORTED: msan, asan
+// UNSUPPORTED: sanitizer-new-delete
// <locale>
// REQUIRES: locale.ru_RU.UTF-8
// REQUIRES: locale.zh_CN.UTF-8
-// UNSUPPORTED: msan, asan
+// UNSUPPORTED: sanitizer-new-delete
// <locale>
//===----------------------------------------------------------------------===//
// REQUIRES: locale.fr_FR.UTF-8
-// UNSUPPORTED: msan, asan
+// UNSUPPORTED: sanitizer-new-delete
// <locale>
// REQUIRES: locale.en_US.UTF-8
// REQUIRES: locale.ru_RU.UTF-8
-// UNSUPPORTED: msan, asan
+// UNSUPPORTED: sanitizer-new-delete
// <locale>
//===----------------------------------------------------------------------===//
// REQUIRES: locale.ru_RU.UTF-8
-// UNSUPPORTED: msan, asan
+// UNSUPPORTED: sanitizer-new-delete
// <locale>
// REQUIRES: locale.en_US.UTF-8
// REQUIRES: locale.ru_RU.UTF-8
-// UNSUPPORTED: msan, asan
+// UNSUPPORTED: sanitizer-new-delete
// <locale>
//===----------------------------------------------------------------------===//
// REQUIRES: locale.ru_RU.UTF-8
-// UNSUPPORTED: msan, asan
+// UNSUPPORTED: sanitizer-new-delete
// <locale>
// REQUIRES: locale.ru_RU.UTF-8
// REQUIRES: locale.zh_CN.UTF-8
-// UNSUPPORTED: msan, asan
+// UNSUPPORTED: sanitizer-new-delete
// <locale>
// returns null.
// 2. If allocator_may_return_null=1 then they will fail because the allocation
// is too large to succeed.
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <string>
#include <cassert>
// template <class F, class ...Args> thread(F&& f, Args&&... args);
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <thread>
#include <new>
// template<class Y> explicit shared_ptr(auto_ptr<Y>&& r);
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <memory>
#include <new>
// template<class D> shared_ptr(nullptr_t, D d);
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <memory>
#include <cassert>
// template<class Y, class D> shared_ptr(Y* p, D d);
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <memory>
#include <cassert>
// template<class Y> explicit shared_ptr(Y* p);
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <memory>
#include <new>
// template <class Y, class D> explicit shared_ptr(unique_ptr<Y, D>&&r);
-// UNSUPPORTED: asan, msan
+// UNSUPPORTED: sanitizer-new-delete
#include <memory>
#include <new>
#endif
#if __has_feature(address_sanitizer) \
- || __has_feature(memory_sanitizer)
+ || __has_feature(memory_sanitizer) \
+ || __has_feature(thread_sanitizer)
#define DISABLE_NEW_COUNT
#endif