[compiler-rt] Add shared_cxxabi requirement to some tests
authorLeonard Chan <leonardchan@google.com>
Fri, 24 Sep 2021 18:51:26 +0000 (11:51 -0700)
committerLeonard Chan <leonardchan@google.com>
Fri, 24 Sep 2021 18:51:26 +0000 (11:51 -0700)
This adds REQUIRES: shared_cxxabi to a bunch of tests that would fail if this
weak reference in sanitizer common was undefined. This is necessary in cases
where libc++abi.a is statically linked in. Because there is no strong reference
to __cxa_demangle in compiler-rt, then if libc++abi is linked in via a static
archive, then the linker will not extract the archive member that would define
that weak symbol. This causes a handful of tests to fail because this leads to
the symbolizer printing mangled symbols where tests expect them demangled.

Technically, this feature is WAI since sanitizer runtimes shouldn't fail if
this symbol isn't resolved, and linking statically means you wouldn't need to
link in all of libc++abi. As a workaround, we can simply make it a requirement
that these tests use shared libc++abis.

Differential Revision: https://reviews.llvm.org/D109639

compiler-rt/test/asan/TestCases/Linux/odr-vtable.cpp
compiler-rt/test/ubsan/TestCases/TypeCheck/vptr-virtual-base.cpp

index 56f71b7..aabecf2 100644 (file)
@@ -1,6 +1,8 @@
 // Fails with debug checks: https://bugs.llvm.org/show_bug.cgi?id=46862
 // XFAIL: !compiler-rt-optimized && !riscv64
 
+// REQUIRES: shared_cxxabi
+
 /// Not using private alias or enabling ODR indicator can detect ODR issues.
 // RUN: %clangxx_asan -fno-rtti -DBUILD_SO1 -fPIC -shared -mllvm -asan-use-private-alias=0 %s -o %dynamiclib1
 // RUN: %clangxx_asan -fno-rtti -DBUILD_SO2 -fPIC -shared -mllvm -asan-use-private-alias=0 %s -o %dynamiclib2
index 925373b..fa0c6a7 100644 (file)
@@ -1,6 +1,7 @@
 // RUN: %clangxx -frtti -fsanitize=null,vptr -fno-sanitize-recover=vptr -g %s -O3 -o %t
 // RUN: not %run %t 2>&1 | FileCheck %s
 
+// REQUIRES: shared_cxxabi
 // REQUIRES: cxxabi
 // UNSUPPORTED: windows-msvc
 // Nested crash reported