summaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorMitch Phillips <mitchphillips@outlook.com>2017-10-23 20:54:01 +0000
committerMitch Phillips <mitchphillips@outlook.com>2017-10-23 20:54:01 +0000
commit30e015950d75a1ad3dae2d2389bf7a7c3748d9bd (patch)
tree2075124e1072e50fd70812bf737e363332bac6f5 /unittests
parentd7958d5ac0c1e979dec35ea26a981532e094b5b2 (diff)
Made llvm-cfi-verify not execute unit tests on non-x86 builds.
Patched out from D38427. Reviewers: vlad.tsyrklevich Reviewed By: vlad.tsyrklevich Subscribers: llvm-commits, kcc, pcc, mgorny Differential Revision: https://reviews.llvm.org/D39197 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316375 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r--unittests/tools/llvm-cfi-verify/CMakeLists.txt9
-rw-r--r--unittests/tools/llvm-cfi-verify/FileAnalysis.cpp23
-rw-r--r--unittests/tools/llvm-cfi-verify/GraphBuilder.cpp37
3 files changed, 59 insertions, 10 deletions
diff --git a/unittests/tools/llvm-cfi-verify/CMakeLists.txt b/unittests/tools/llvm-cfi-verify/CMakeLists.txt
index 938b90eb83b..08830a2eaa5 100644
--- a/unittests/tools/llvm-cfi-verify/CMakeLists.txt
+++ b/unittests/tools/llvm-cfi-verify/CMakeLists.txt
@@ -11,9 +11,6 @@ set(LLVM_LINK_COMPONENTS
Support
)
-list(FIND LLVM_TARGETS_TO_BUILD "X86" x86_idx)
-if (NOT x86_idx LESS 0)
- add_llvm_unittest(CFIVerifyTests
- FileAnalysis.cpp
- GraphBuilder.cpp)
-endif()
+add_llvm_unittest(CFIVerifyTests
+ FileAnalysis.cpp
+ GraphBuilder.cpp)
diff --git a/unittests/tools/llvm-cfi-verify/FileAnalysis.cpp b/unittests/tools/llvm-cfi-verify/FileAnalysis.cpp
index 66fdc42ccfc..c94a0fc75d9 100644
--- a/unittests/tools/llvm-cfi-verify/FileAnalysis.cpp
+++ b/unittests/tools/llvm-cfi-verify/FileAnalysis.cpp
@@ -63,15 +63,24 @@ public:
class BasicFileAnalysisTest : public ::testing::Test {
protected:
virtual void SetUp() {
- if (Analysis.initialiseDisassemblyMembers()) {
- FAIL() << "Failed to initialise FileAnalysis.";
+ SuccessfullyInitialised = true;
+ if (auto Err = Analysis.initialiseDisassemblyMembers()) {
+ handleAllErrors(std::move(Err), [&](const UnsupportedDisassembly &E) {
+ SuccessfullyInitialised = false;
+ outs()
+ << "Note: CFIVerifyTests are disabled due to lack of x86 support "
+ "on this build.\n";
+ });
}
}
+ bool SuccessfullyInitialised;
ELFx86TestFileAnalysis Analysis;
};
TEST_F(BasicFileAnalysisTest, BasicDisassemblyTraversalTest) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x90, // 0: nop
@@ -180,6 +189,8 @@ TEST_F(BasicFileAnalysisTest, BasicDisassemblyTraversalTest) {
}
TEST_F(BasicFileAnalysisTest, PrevAndNextFromBadInst) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x90, // 0: nop
@@ -201,6 +212,8 @@ TEST_F(BasicFileAnalysisTest, PrevAndNextFromBadInst) {
}
TEST_F(BasicFileAnalysisTest, CFITrapTest) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x90, // 0: nop
@@ -234,6 +247,8 @@ TEST_F(BasicFileAnalysisTest, CFITrapTest) {
}
TEST_F(BasicFileAnalysisTest, FallThroughTest) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x90, // 0: nop
@@ -272,6 +287,8 @@ TEST_F(BasicFileAnalysisTest, FallThroughTest) {
}
TEST_F(BasicFileAnalysisTest, DefiniteNextInstructionTest) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x90, // 0: nop
@@ -360,6 +377,8 @@ TEST_F(BasicFileAnalysisTest, DefiniteNextInstructionTest) {
}
TEST_F(BasicFileAnalysisTest, ControlFlowXRefsTest) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x90, // 0: nop
diff --git a/unittests/tools/llvm-cfi-verify/GraphBuilder.cpp b/unittests/tools/llvm-cfi-verify/GraphBuilder.cpp
index 5cff6577700..b200677dd09 100644
--- a/unittests/tools/llvm-cfi-verify/GraphBuilder.cpp
+++ b/unittests/tools/llvm-cfi-verify/GraphBuilder.cpp
@@ -126,11 +126,18 @@ public:
class BasicGraphBuilderTest : public ::testing::Test {
protected:
virtual void SetUp() {
- if (Analysis.initialiseDisassemblyMembers()) {
- FAIL() << "Failed to initialise FileAnalysis.";
+ SuccessfullyInitialised = true;
+ if (auto Err = Analysis.initialiseDisassemblyMembers()) {
+ handleAllErrors(std::move(Err), [&](const UnsupportedDisassembly &E) {
+ SuccessfullyInitialised = false;
+ outs()
+ << "Note: CFIVerifyTests are disabled due to lack of x86 support "
+ "on this build.\n";
+ });
}
}
+ bool SuccessfullyInitialised;
ELFx86TestFileAnalysis Analysis;
};
@@ -141,6 +148,8 @@ MATCHER_P2(HasPath, Result, Matcher, "has path " + PrintToString(Matcher)) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestSinglePathFallthroughUd2) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
@@ -165,6 +174,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestSinglePathFallthroughUd2) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestSinglePathJumpUd2) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
@@ -189,6 +200,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestSinglePathJumpUd2) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestDualPathDualUd2) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0x03, // 0: jne 5 [+3]
@@ -226,6 +239,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestDualPathDualUd2) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestDualPathSingleUd2) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0x05, // 0: jne 7 [+5]
@@ -262,6 +277,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphTestDualPathSingleUd2) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphFailures) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x90, // 0: nop
@@ -282,6 +299,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphFailures) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphNoXrefs) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0xeb, 0xfe, // 0: jmp 0 [-2]
@@ -295,6 +314,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphNoXrefs) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphConditionalInfiniteLoop) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0xfe, // 0: jne 0 [-2]
@@ -315,6 +336,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphConditionalInfiniteLoop) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphUnconditionalInfiniteLoop) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
@@ -337,6 +360,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphUnconditionalInfiniteLoop) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphNoFlowsToIndirection) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0x00, // 0: jne 2 [+0]
@@ -350,6 +375,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphNoFlowsToIndirection) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphLengthExceededUpwards) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0x06, // 0: jne 8 [+6]
@@ -377,6 +404,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphLengthExceededUpwards) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphLengthExceededDownwards) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0x02, // 0: jne 4 [+2]
@@ -411,6 +440,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphLengthExceededDownwards) {
// paths correctly. We don't need to recalculate the flow from 0x2 -> 0x3 as it
// should only need to be generated once.
TEST_F(BasicGraphBuilderTest, BuildFlowGraphWithRepeatedWork) {
+ if (!SuccessfullyInitialised)
+ return;
Analysis.parseSectionContents(
{
0x75, 0x05, // 0: jne 7 [+5]
@@ -449,6 +480,8 @@ TEST_F(BasicGraphBuilderTest, BuildFlowGraphWithRepeatedWork) {
}
TEST_F(BasicGraphBuilderTest, BuildFlowGraphComplexExample) {
+ if (!SuccessfullyInitialised)
+ return;
// The following code has this graph:
// +----------+ +--------------+
// | 20 | <--- | 0 |