reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

unittests/tools/llvm-cfi-verify/FileAnalysis.cpp
   70     if (auto Err = Analysis.initialiseDisassemblyMembers()) {
   97   Analysis.parseSectionContents(
  111   EXPECT_EQ(nullptr, Analysis.getInstruction(0x0));
  112   EXPECT_EQ(nullptr, Analysis.getInstruction(0x1000));
  115   const auto *InstrMeta = Analysis.getInstruction(0xDEADBEEF);
  121   const auto *NextInstrMeta = Analysis.getNextInstructionSequential(*InstrMeta);
  122   EXPECT_EQ(nullptr, Analysis.getPrevInstructionSequential(*InstrMeta));
  126   InstrMeta = Analysis.getInstruction(0xDEADBEEF + 1);
  133   NextInstrMeta = Analysis.getNextInstructionSequential(*InstrMeta);
  134   EXPECT_EQ(PrevInstrMeta, Analysis.getPrevInstructionSequential(*InstrMeta));
  138   InstrMeta = Analysis.getInstruction(0xDEADBEEF + 3);
  145   NextInstrMeta = Analysis.getNextInstructionSequential(*InstrMeta);
  146   EXPECT_EQ(PrevInstrMeta, Analysis.getPrevInstructionSequential(*InstrMeta));
  150   InstrMeta = Analysis.getInstruction(0xDEADBEEF + 6);
  157   NextInstrMeta = Analysis.getNextInstructionSequential(*InstrMeta);
  158   EXPECT_EQ(PrevInstrMeta, Analysis.getPrevInstructionSequential(*InstrMeta));
  162   InstrMeta = Analysis.getInstruction(0xDEADBEEF + 10);
  169   EXPECT_EQ(nullptr, Analysis.getNextInstructionSequential(*InstrMeta));
  170   EXPECT_EQ(PrevInstrMeta, Analysis.getPrevInstructionSequential(*InstrMeta));
  174   InstrMeta = Analysis.getInstruction(0xDEADBEEF + 20);
  180   EXPECT_EQ(nullptr, Analysis.getNextInstructionSequential(*InstrMeta));
  181   EXPECT_EQ(PrevInstrMeta, Analysis.getPrevInstructionSequential(*InstrMeta));
  184   InstrMeta = Analysis.getInstruction(0xDEADBEEF + 21);
  190   EXPECT_EQ(nullptr, Analysis.getNextInstructionSequential(*InstrMeta));
  191   EXPECT_EQ(nullptr, Analysis.getPrevInstructionSequential(*InstrMeta));
  194   InstrMeta = Analysis.getInstruction(0xDEADBEEF + 23);
  200   EXPECT_EQ(nullptr, Analysis.getNextInstructionSequential(*InstrMeta));
  201   EXPECT_EQ(nullptr, Analysis.getPrevInstructionSequential(*InstrMeta));
  207   Analysis.parseSectionContents(
  214   const auto &BadInstrMeta = Analysis.getInstructionOrDie(0xDEADBEEF + 1);
  216       Analysis.getPrevInstructionSequential(BadInstrMeta);
  221   GoodInstrMeta = Analysis.getNextInstructionSequential(BadInstrMeta);
  230   Analysis.parseSectionContents(
  245   EXPECT_FALSE(Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF)));
  245   EXPECT_FALSE(Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF)));
  247       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 3)));
  247       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 3)));
  249       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 6)));
  249       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 6)));
  251       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 10)));
  251       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 10)));
  253       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 20)));
  253       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 20)));
  255       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 21)));
  255       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 21)));
  257       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 23)));
  257       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 23)));
  259       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 28)));
  259       Analysis.isCFITrap(Analysis.getInstructionOrDie(0xDEADBEEF + 28)));
  265   Analysis.parseSectionContents(
  281       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF)));
  281       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF)));
  283       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 1)));
  283       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 1)));
  285       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 3)));
  285       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 3)));
  287       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 4)));
  287       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 4)));
  289       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 6)));
  289       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 6)));
  291       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 8)));
  291       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 8)));
  293       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 10)));
  293       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 10)));
  295       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 15)));
  295       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 15)));
  297       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 17)));
  297       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 17)));
  299       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 19)));
  299       Analysis.canFallThrough(Analysis.getInstructionOrDie(0xDEADBEEF + 19)));
  305   Analysis.parseSectionContents(
  327   const auto *Current = Analysis.getInstruction(0xDEADBEEF);
  328   const auto *Next = Analysis.getDefiniteNextInstruction(*Current);
  332   Current = Analysis.getInstruction(0xDEADBEEF + 1);
  333   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  335   Current = Analysis.getInstruction(0xDEADBEEF + 3);
  336   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  338   Current = Analysis.getInstruction(0xDEADBEEF + 4);
  339   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  341   Current = Analysis.getInstruction(0xDEADBEEF + 6);
  342   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  344   Current = Analysis.getInstruction(0xDEADBEEF + 8);
  345   Next = Analysis.getDefiniteNextInstruction(*Current);
  349   Current = Analysis.getInstruction(0xDEADBEEF + 10);
  350   Next = Analysis.getDefiniteNextInstruction(*Current);
  354   Current = Analysis.getInstruction(0xDEADBEEF + 12);
  355   Next = Analysis.getDefiniteNextInstruction(*Current);
  359   Current = Analysis.getInstruction(0xDEADBEEF + 17);
  361   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  362   Next = Analysis.getDefiniteNextInstruction(*Current);
  364   Current = Analysis.getInstruction(0xDEADBEEF + 22);
  365   Next = Analysis.getDefiniteNextInstruction(*Current);
  369   Current = Analysis.getInstruction(0xDEADBEEF + 27);
  370   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  371   Current = Analysis.getInstruction(0xDEADBEEF + 29);
  372   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  373   Current = Analysis.getInstruction(0xDEADBEEF + 31);
  374   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  375   Current = Analysis.getInstruction(0xDEADBEEF + 33);
  376   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  378   Current = Analysis.getInstruction(0xDEADBEEF + 34);
  379   Next = Analysis.getDefiniteNextInstruction(*Current);
  383   Current = Analysis.getInstruction(0xDEADBEEF + 36);
  384   EXPECT_EQ(nullptr, Analysis.getDefiniteNextInstruction(*Current));
  386   Current = Analysis.getInstruction(0xDEADBEEF + 38);
  387   Next = Analysis.getDefiniteNextInstruction(*Current);
  395   Analysis.parseSectionContents(
  416   const auto *InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF);
  418       Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  421   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 1);
  422   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  428   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 3);
  429   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  434   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 4);
  435   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  439   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 6);
  440   EXPECT_TRUE(Analysis.getDirectControlFlowXRefs(*InstrMetaPtr).empty());
  442   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 8);
  443   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  444   EXPECT_TRUE(Analysis.getDirectControlFlowXRefs(*InstrMetaPtr).empty());
  446   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 10);
  447   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  451   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 12);
  452   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  453   EXPECT_TRUE(Analysis.getDirectControlFlowXRefs(*InstrMetaPtr).empty());
  455   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 17);
  456   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  461   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 22);
  462   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  463   EXPECT_TRUE(Analysis.getDirectControlFlowXRefs(*InstrMetaPtr).empty());
  465   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 27);
  466   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  467   EXPECT_TRUE(Analysis.getDirectControlFlowXRefs(*InstrMetaPtr).empty());
  469   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 29);
  470   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  471   EXPECT_TRUE(Analysis.getDirectControlFlowXRefs(*InstrMetaPtr).empty());
  473   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 31);
  474   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  479   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 33);
  480   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  484   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 34);
  485   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  486   EXPECT_TRUE(Analysis.getDirectControlFlowXRefs(*InstrMetaPtr).empty());
  488   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 36);
  489   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  490   EXPECT_TRUE(Analysis.getDirectControlFlowXRefs(*InstrMetaPtr).empty());
  492   InstrMetaPtr = &Analysis.getInstructionOrDie(0xDEADBEEF + 38);
  493   XRefs = Analysis.getDirectControlFlowXRefs(*InstrMetaPtr);
  494   EXPECT_TRUE(Analysis.getDirectControlFlowXRefs(*InstrMetaPtr).empty());
  500   Analysis.parseSectionContents(
  508       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF, 0x0});
  510             Analysis.validateCFIProtection(Result));
  511   Result = GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 1, 0x0});
  513             Analysis.validateCFIProtection(Result));
  514   Result = GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 3, 0x0});
  516             Analysis.validateCFIProtection(Result));
  517   Result = GraphBuilder::buildFlowGraph(Analysis, {0x12345678, 0x0});
  519             Analysis.validateCFIProtection(Result));
  525   Analysis.parseSectionContents(
  533       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 4, 0x0});
  535             Analysis.validateCFIProtection(Result));
  541   Analysis.parseSectionContents(
  549       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 2, 0x0});
  551             Analysis.validateCFIProtection(Result));
  557   Analysis.parseSectionContents(
  568       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 3, 0x0});
  570             Analysis.validateCFIProtection(Result));
  576   Analysis.parseSectionContents(
  586       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 3, 0x0});
  588             Analysis.validateCFIProtection(Result));
  594   Analysis.parseSectionContents(
  610       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 6, 0x0});
  612             Analysis.validateCFIProtection(Result));
  620   Analysis.parseSectionContents(
  635       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 2, 0x0});
  637             Analysis.validateCFIProtection(Result));
  645   Analysis.parseSectionContents(
  654       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 4, 0x0});
  656             Analysis.validateCFIProtection(Result));
  662   Analysis.parseSectionContents(
  671       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 4, 0x0});
  673             Analysis.validateCFIProtection(Result));
  681   Analysis.parseSectionContents(
  701       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 9, 0x0});
  703             Analysis.validateCFIProtection(Result));
  708   Analysis.parseSectionContents(
  720   GraphResult Result = GraphBuilder::buildFlowGraph(Analysis, {0x68811d, 0x0});
  722             Analysis.validateCFIProtection(Result));
  727   Analysis.parseSectionContents(
  734   Analysis.parseSectionContents(
  744   Analysis.parseSectionContents(
  751   GraphResult Result = GraphBuilder::buildFlowGraph(Analysis, {0x775a68, 0x0});
  753             Analysis.validateCFIProtection(Result));
  755   Result = GraphBuilder::buildFlowGraph(Analysis, {0x775a68, 0x0});
  757             Analysis.validateCFIProtection(Result));
  759   Result = GraphBuilder::buildFlowGraph(Analysis, {0x775a68, 0x0});
  761             Analysis.validateCFIProtection(Result));
  768   Analysis.parseSectionContents(
  777       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 10, 0x0});
  779             Analysis.validateCFIProtection(Result));
  785   Analysis.parseSectionContents(
  794       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 8, 0x0});
  796             Analysis.validateCFIProtection(Result));
  802   Analysis.parseSectionContents(
  811       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 9, 0x0});
  813             Analysis.validateCFIProtection(Result));
  819   Analysis.parseSectionContents(
  830       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 4, 0x0});
  832             Analysis.validateCFIProtection(Result));
  838   Analysis.parseSectionContents(
  844       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF, 0x0});
  846             Analysis.validateCFIProtection(Result));
  852   Analysis.parseSectionContents(
  860       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 8, 0x0});
  862             Analysis.validateCFIProtection(Result));
  868   Analysis.parseSectionContents(
  877       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 12, 0x0});
  879             Analysis.validateCFIProtection(Result));
  885   Analysis.parseSectionContents(
  894       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 12, 0x0});
  896             Analysis.validateCFIProtection(Result));
  902   Analysis.parseSectionContents(
  912       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 16, 0x0});
  914             Analysis.validateCFIProtection(Result));
  920   Analysis.parseSectionContents(
  930       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 16, 0x0});
  932             Analysis.validateCFIProtection(Result));
  938   Analysis.parseSectionContents(
  948       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 16, 0x0});
  950             Analysis.validateCFIProtection(Result));
  956   Analysis.parseSectionContents(
  966       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 16, 0x0});
  968             Analysis.validateCFIProtection(Result));
  974   Analysis.parseSectionContents(
  984       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 16, 0x0});
  986             Analysis.validateCFIProtection(Result));
  992   Analysis.parseSectionContents(
 1002       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 16, 0x0});
 1004             Analysis.validateCFIProtection(Result));
 1010   Analysis.parseSectionContents(
 1019       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 12, 0x0});
 1021             Analysis.validateCFIProtection(Result));
 1027   Analysis.parseSectionContents(
 1039       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 20, 0x0});
 1041             Analysis.validateCFIProtection(Result));
 1047   Analysis.parseSectionContents(
 1060       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 24, 0x0});
 1062             Analysis.validateCFIProtection(Result));
 1068   Analysis.parseSectionContents(
 1081       GraphBuilder::buildFlowGraph(Analysis, {0xDEADBEEF + 24, 0x0});
 1083             Analysis.validateCFIProtection(Result));