brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 9e6b7ff Raw
43 lines · cpp
1// Fails with debug checks: https://bugs.llvm.org/show_bug.cgi?id=468622// XFAIL: !compiler-rt-optimized && !target=riscv64{{.*}}3 4// REQUIRES: shared_cxxabi5 6/// Not using private alias or enabling ODR indicator can detect ODR issues.7// RUN: mkdir -p %t.dir && cd %t.dir8// RUN: %clangxx_asan -fno-rtti -DBUILD_SO1 -fPIC -shared -mllvm -asan-use-private-alias=0 %s -o %dynamiclib19// RUN: %clangxx_asan -fno-rtti -DBUILD_SO2 -fPIC -shared -mllvm -asan-use-private-alias=0 %s -o %dynamiclib210// RUN: %clangxx_asan -fno-rtti %s %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t.dir/EXE11// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t.dir/EXE 2>&1 | FileCheck %s12 13// RUN: %clangxx_asan -fno-rtti -DBUILD_SO1 -fPIC -shared -mllvm -asan-use-odr-indicator=1 %s -o %dynamiclib114// RUN: %clangxx_asan -fno-rtti -DBUILD_SO2 -fPIC -shared -mllvm -asan-use-odr-indicator=1 %s -o %dynamiclib215// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t.dir/EXE 2>&1 | FileCheck %s16 17/// By default we can detect ODR issues in vtables.18// RUN: %clangxx_asan -fno-rtti -DBUILD_SO1 -fPIC -shared %s -o %dynamiclib119// RUN: %clangxx_asan -fno-rtti -DBUILD_SO2 -fPIC -shared %s -o %dynamiclib220// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t.dir/EXE 2>&1 | FileCheck %s21 22struct XYZ {23  virtual void foo();24};25 26#if defined(BUILD_SO1)27 28void XYZ::foo() {}29 30#elif defined(BUILD_SO2)31 32void XYZ::foo() {}33 34#else35 36int main() {}37 38#endif39 40// CHECK: AddressSanitizer: odr-violation41// CHECK-NEXT: 'vtable for XYZ'42// CHECK-NEXT: 'vtable for XYZ'43