diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2017-06-16 00:18:35 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2017-06-16 00:18:35 +0000 |
| commit | 2aed0fb07ec214dc3aaf38b7f87b6385bbb1d646 (patch) | |
| tree | d72782d8299083fec4e2f4edc33fc47fe4636095 | |
| parent | 4d4ee93d25640fafe73d512655cde20911782f8a (diff) | |
| download | bcm5719-llvm-2aed0fb07ec214dc3aaf38b7f87b6385bbb1d646.tar.gz bcm5719-llvm-2aed0fb07ec214dc3aaf38b7f87b6385bbb1d646.zip | |
[cfi] Enable icall tests with thinlto.
llvm-svn: 305534
| -rw-r--r-- | compiler-rt/test/cfi/cross-dso/icall/lit.local.cfg | 3 | ||||
| -rw-r--r-- | compiler-rt/test/cfi/cross-dso/stats.cpp | 1 | ||||
| -rw-r--r-- | compiler-rt/test/cfi/icall/lit.local.cfg | 3 | ||||
| -rw-r--r-- | compiler-rt/test/cfi/icall/wrong-signature-mixed-lto.c | 41 |
4 files changed, 41 insertions, 7 deletions
diff --git a/compiler-rt/test/cfi/cross-dso/icall/lit.local.cfg b/compiler-rt/test/cfi/cross-dso/icall/lit.local.cfg index 322b287a639..db08765a2bb 100644 --- a/compiler-rt/test/cfi/cross-dso/icall/lit.local.cfg +++ b/compiler-rt/test/cfi/cross-dso/icall/lit.local.cfg @@ -1,6 +1,3 @@ # The cfi-icall checker is only supported on x86 and x86_64 for now. if config.root.host_arch not in ['x86', 'x86_64']: config.unsupported = True - -if config.root.use_thinlto: - config.unsupported = True diff --git a/compiler-rt/test/cfi/cross-dso/stats.cpp b/compiler-rt/test/cfi/cross-dso/stats.cpp index fb98a50a3e7..975a1ff9fa2 100644 --- a/compiler-rt/test/cfi/cross-dso/stats.cpp +++ b/compiler-rt/test/cfi/cross-dso/stats.cpp @@ -5,7 +5,6 @@ // CFI-icall is not implemented in thinlto mode => ".cfi" suffixes are missing // in sanstats output. -// XFAIL: thinlto struct ABase {}; diff --git a/compiler-rt/test/cfi/icall/lit.local.cfg b/compiler-rt/test/cfi/icall/lit.local.cfg index 44891c5e2de..db08765a2bb 100644 --- a/compiler-rt/test/cfi/icall/lit.local.cfg +++ b/compiler-rt/test/cfi/icall/lit.local.cfg @@ -1,6 +1,3 @@ # The cfi-icall checker is only supported on x86 and x86_64 for now. if config.root.host_arch not in ['x86', 'x86_64']: config.unsupported = True - -if config.use_thinlto: - config.unsupported = True diff --git a/compiler-rt/test/cfi/icall/wrong-signature-mixed-lto.c b/compiler-rt/test/cfi/icall/wrong-signature-mixed-lto.c new file mode 100644 index 00000000000..0e5fb8508c9 --- /dev/null +++ b/compiler-rt/test/cfi/icall/wrong-signature-mixed-lto.c @@ -0,0 +1,41 @@ +// Test that the checking is done with the actual type of f() even when the +// calling module has an incorrect declaration. Test a mix of lto types. +// +// -flto below overrides -flto=thin in %clang_cfi +// RUN: %clang_cfi %s -DMODULE_A -c -o %t1_a.o +// RUN: %clang_cfi %s -DMODULE_B -c -o %t1_b.o -flto +// RUN: %clang_cfi %t1_a.o %t1_b.o -o %t1 +// RUN: %expect_crash %t1 2>&1 | FileCheck --check-prefix=CFI %s +// +// RUN: %clang_cfi %s -DMODULE_A -c -o %t2_a.o -flto +// RUN: %clang_cfi %s -DMODULE_B -c -o %t2_b.o +// RUN: %clang_cfi %t2_a.o %t2_b.o -o %t2 +// RUN: %expect_crash %t2 2>&1 | FileCheck --check-prefix=CFI %s +// +// RUN: %clang_cfi %s -DMODULE_A -c -o %t3_a.o +// RUN: %clang_cfi %s -DMODULE_B -c -o %t3_b.o +// RUN: %clang_cfi %t3_a.o %t3_b.o -o %t3 +// RUN: %expect_crash %t3 2>&1 | FileCheck --check-prefix=CFI %s +// +// REQUIRES: thinlto + +#include <stdio.h> + +#if defined(MODULE_B) +int f() { + return 42; +} +#elif defined(MODULE_A) +void f(); + +int main() { + // CFI: 1 + fprintf(stderr, "1\n"); + + void (*volatile p)() = &f; + p(); + + // CFI-NOT: 2 + fprintf(stderr, "2\n"); +} +#endif |

