From 2aa1c4af3933513cde45513703b74c1773b2c1a0 Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Wed, 22 Jun 2016 04:00:45 +0000 Subject: [PATCH] UBSan doesn't globally replace new/delete but it still makes some tests fail. Investigation needed. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273372 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/libcxx/test/config.py | 1 - .../new.delete.array/new_array_nothrow_replace.pass.cpp | 4 ++++ .../new.delete/new.delete.array/new_array_replace.pass.cpp | 4 ++++ .../support.dynamic/new.delete/new.delete.single/new.pass.cpp | 1 + .../new.delete/new.delete.single/new_nothrow_replace.pass.cpp | 4 ++++ .../sized_delete_calls_unsized_delete.pass.cpp | 4 ++++ .../new.delete.single/sized_delete_fsizeddeallocation.sh.cpp | 3 +++ 7 files changed, 20 insertions(+), 1 deletion(-) diff --git a/test/libcxx/test/config.py b/test/libcxx/test/config.py index ded8036d2..706005720 100644 --- a/test/libcxx/test/config.py +++ b/test/libcxx/test/config.py @@ -628,7 +628,6 @@ class Configuration(object): self.cxx.compile_flags += ['-O3'] self.env['UBSAN_OPTIONS'] = 'print_stacktrace=1' self.config.available_features.add('ubsan') - self.config.available_features.add('sanitizer-new-delete') elif san == 'Thread': self.cxx.flags += ['-fsanitize=thread'] self.config.available_features.add('tsan') diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow_replace.pass.cpp index 105c7a93f..dc4add7d0 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_nothrow_replace.pass.cpp @@ -11,6 +11,10 @@ // UNSUPPORTED: sanitizer-new-delete +// TODO Investigate why UBSAN prevents new from calling our replacement. +// XFAIL: ubsan + + #include #include #include diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_replace.pass.cpp index 92bd7b952..f3edaa0fb 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_array_replace.pass.cpp @@ -11,6 +11,10 @@ // UNSUPPORTED: sanitizer-new-delete +// TODO Investigate why UBSAN prevents new from calling our replacement. +// XFAIL: ubsan + + #include #include #include diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.pass.cpp index 57ce28752..892842a1b 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new.pass.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// // XFAIL: libcpp-no-exceptions + // test operator new // asan and msan will not call the new handler. diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_nothrow_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_nothrow_replace.pass.cpp index cd70f9094..9604612f7 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_nothrow_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_nothrow_replace.pass.cpp @@ -11,6 +11,10 @@ // UNSUPPORTED: sanitizer-new-delete +// TODO Investigate why UBSAN prevents nothrow new from calling our replacement. +// XFAIL: ubsan + + #include #include #include diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_calls_unsized_delete.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_calls_unsized_delete.pass.cpp index 5c4eba53d..f656d1cd7 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_calls_unsized_delete.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_calls_unsized_delete.pass.cpp @@ -13,6 +13,10 @@ // UNSUPPORTED: sanitizer-new-delete +// TODO Investigate why UBSAN prevents new from calling our replacement. +// XFAIL: ubsan + + #include #include #include diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp index da43d4969..24d33e210 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp @@ -14,6 +14,9 @@ // UNSUPPORTED: sanitizer-new-delete +// TODO Investigate why UBSAN prevents new from calling our replacement. +// XFAIL: ubsan + // NOTE: Only clang-3.7 and GCC 5.1 and greater support -fsized-deallocation. // REQUIRES: fsized-deallocation