summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2017-06-16 00:18:35 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2017-06-16 00:18:35 +0000
commit2aed0fb07ec214dc3aaf38b7f87b6385bbb1d646 (patch)
treed72782d8299083fec4e2f4edc33fc47fe4636095
parent4d4ee93d25640fafe73d512655cde20911782f8a (diff)
downloadbcm5719-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.cfg3
-rw-r--r--compiler-rt/test/cfi/cross-dso/stats.cpp1
-rw-r--r--compiler-rt/test/cfi/icall/lit.local.cfg3
-rw-r--r--compiler-rt/test/cfi/icall/wrong-signature-mixed-lto.c41
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
OpenPOWER on IntegriCloud