[compiler-rt] r305534 - [cfi] Enable icall tests with thinlto.

Evgeniy Stepanov via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 15 17:18:35 PDT 2017


Author: eugenis
Date: Thu Jun 15 19:18:35 2017
New Revision: 305534

URL: http://llvm.org/viewvc/llvm-project?rev=305534&view=rev
Log:
[cfi] Enable icall tests with thinlto.

Added:
    compiler-rt/trunk/test/cfi/icall/wrong-signature-mixed-lto.c
Modified:
    compiler-rt/trunk/test/cfi/cross-dso/icall/lit.local.cfg
    compiler-rt/trunk/test/cfi/cross-dso/stats.cpp
    compiler-rt/trunk/test/cfi/icall/lit.local.cfg

Modified: compiler-rt/trunk/test/cfi/cross-dso/icall/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/cfi/cross-dso/icall/lit.local.cfg?rev=305534&r1=305533&r2=305534&view=diff
==============================================================================
--- compiler-rt/trunk/test/cfi/cross-dso/icall/lit.local.cfg (original)
+++ compiler-rt/trunk/test/cfi/cross-dso/icall/lit.local.cfg Thu Jun 15 19:18:35 2017
@@ -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

Modified: compiler-rt/trunk/test/cfi/cross-dso/stats.cpp
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/cfi/cross-dso/stats.cpp?rev=305534&r1=305533&r2=305534&view=diff
==============================================================================
--- compiler-rt/trunk/test/cfi/cross-dso/stats.cpp (original)
+++ compiler-rt/trunk/test/cfi/cross-dso/stats.cpp Thu Jun 15 19:18:35 2017
@@ -5,7 +5,6 @@
 
 // CFI-icall is not implemented in thinlto mode => ".cfi" suffixes are missing
 // in sanstats output.
-// XFAIL: thinlto
 
 struct ABase {};
 

Modified: compiler-rt/trunk/test/cfi/icall/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/cfi/icall/lit.local.cfg?rev=305534&r1=305533&r2=305534&view=diff
==============================================================================
--- compiler-rt/trunk/test/cfi/icall/lit.local.cfg (original)
+++ compiler-rt/trunk/test/cfi/icall/lit.local.cfg Thu Jun 15 19:18:35 2017
@@ -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

Added: compiler-rt/trunk/test/cfi/icall/wrong-signature-mixed-lto.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/cfi/icall/wrong-signature-mixed-lto.c?rev=305534&view=auto
==============================================================================
--- compiler-rt/trunk/test/cfi/icall/wrong-signature-mixed-lto.c (added)
+++ compiler-rt/trunk/test/cfi/icall/wrong-signature-mixed-lto.c Thu Jun 15 19:18:35 2017
@@ -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




More information about the llvm-commits mailing list