reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
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));