On Fri, Oct 14, 2016 at 12:49 AM, Eric Fiselier via cfe-commits <
cfe-commits@lists.llvm.org> wrote:

> Author: ericwf
> Date: Fri Oct 14 02:49:15 2016
> New Revision: 284210
>
> URL: http://llvm.org/viewvc/llvm-project?rev=284210&view=rev
> Log:
> XFAIL  aligned allocation test failures with UBSAN
>
> Modified:
>     libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp
>     libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_
> replace.pass.cpp
>     libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp
>     libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.single/new_align_val_t_
> nothrow_replace.pass.cpp
>
> Modified: libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp
> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/
> language.support/support.dynamic/new.delete/new.delete.
> array/delete_align_val_t_replace.pass.cpp?rev=284210&
> r1=284209&r2=284210&view=diff
> ============================================================
> ==================
> --- libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp
> (original)
> +++ libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp
> Fri Oct 14 02:49:15 2016
> @@ -17,6 +17,9 @@
>  // None of the current GCC compilers support this.
>  // XFAIL: gcc-4, gcc-5, gcc-6
>
> +// UBSAN replaces certain new/delete functions which makes this test fail
>

I don't think that's the problem; the UBSan runtime doesn't replace any
functions. Instead...


> +// XFAIL: ubsan
> +
>  #include <new>
>  #include <cstddef>
>  #include <cstdlib>
> @@ -58,24 +61,24 @@ struct alignas(std::max_align_t) B {};
>  int main()
>  {
>

I think you're missing a call to reset() here. It looks like the sanitizer
runtimes happen to call 'operator new' before entering main.


>      {
> -        B *x = new B;
> +        B *x = new B[2];
>          assert(0 == unsized_delete_called);
>          assert(0 == unsized_delete_nothrow_called);
>          assert(0 == aligned_delete_called);
>
> -        delete x;
> +        delete [] x;
>          assert(1 == unsized_delete_called);
>          assert(0 == unsized_delete_nothrow_called);
>          assert(0 == aligned_delete_called);
>      }
>      reset();
>      {
> -        A *x = new A;
> +        A *x = new A[2];
>          assert(0 == unsized_delete_called);
>          assert(0 == unsized_delete_nothrow_called);
>          assert(0 == aligned_delete_called);
>
> -        delete x;
> +        delete [] x;
>          assert(0 == unsized_delete_called);
>          assert(0 == unsized_delete_nothrow_called);
>          assert(1 == aligned_delete_called);
>
> Modified: libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_
> replace.pass.cpp
> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/
> language.support/support.dynamic/new.delete/new.delete.
> array/new_align_val_t_nothrow_replace.pass.cpp?rev=284210&
> r1=284209&r2=284210&view=diff
> ============================================================
> ==================
> --- libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp
> (original)
> +++ libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp
> Fri Oct 14 02:49:15 2016
> @@ -13,9 +13,6 @@
>
>  // UNSUPPORTED: sanitizer-new-delete
>
> -// TODO Investigate why UBSAN prevents nothrow new from calling our
> replacement.
> -// XFAIL: ubsan
> -
>  #include <new>
>  #include <cstddef>
>  #include <cstdlib>
>
> Modified: libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp
> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/
> language.support/support.dynamic/new.delete/new.delete.
> single/delete_align_val_t_replace.pass.cpp?rev=284210&
> r1=284209&r2=284210&view=diff
> ============================================================
> ==================
> --- libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp
> (original)
> +++ libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp
> Fri Oct 14 02:49:15 2016
> @@ -17,6 +17,9 @@
>  // None of the current GCC compilers support this.
>  // XFAIL: gcc-4, gcc-5, gcc-6
>
> +// UBSAN replaces certain new/delete functions which makes this test fail
> +// XFAIL: ubsan
> +
>  #include <new>
>  #include <cstddef>
>  #include <cstdlib>
>
> Modified: libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.single/new_align_val_t_
> nothrow_replace.pass.cpp
> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/
> language.support/support.dynamic/new.delete/new.delete.
> single/new_align_val_t_nothrow_replace.pass.cpp?rev=
> 284210&r1=284209&r2=284210&view=diff
> ============================================================
> ==================
> --- libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp
> (original)
> +++ libcxx/trunk/test/std/language.support/support.
> dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp
> Fri Oct 14 02:49:15 2016
> @@ -13,8 +13,6 @@
>
>  // UNSUPPORTED: sanitizer-new-delete
>
> -// TODO Investigate why UBSAN prevents nothrow new from calling our
> replacement.
> -// XFAIL: ubsan
>
>  #include <new>
>  #include <cstddef>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to