Lines Matching refs:JT
627 JumpTable *JT = JTI->second; in populateJumpTables() local
630 for (BinaryFunction *BF : JT->Parents) in populateJumpTables()
641 analyzeJumpTable(JT->getAddress(), JT->Type, *(JT->Parents[0]), in populateJumpTables()
642 NextJTAddress, &JT->EntriesAsAddress); in populateJumpTables()
647 : JT->Parents) dbgs() in populateJumpTables()
650 JT->print(dbgs()); in populateJumpTables()
664 for (BinaryFunction *Frag : JT->Parents) { in populateJumpTables()
665 for (uint64_t EntryAddress : JT->EntriesAsAddress) in populateJumpTables()
678 if (opts::StrictMode && JT->Type == JumpTable::JTT_PIC) { in populateJumpTables()
679 for (uint64_t Address = JT->getAddress(); in populateJumpTables()
680 Address < JT->getAddress() + JT->getSize(); in populateJumpTables()
681 Address += JT->EntrySize) { in populateJumpTables()
687 for (BinaryFunction *Frag : JT->Parents) in populateJumpTables()
774 if (JumpTable *JT = getJumpTableContainingAddress(Address)) { in getOrCreateJumpTable() local
775 assert(JT->Type == Type && "jump table types have to match"); in getOrCreateJumpTable()
776 assert(Address == JT->getAddress() && "unexpected non-empty jump table"); in getOrCreateJumpTable()
780 if (JT->Parents.size() == 1 && JT->Parents[0] != &Function) { in getOrCreateJumpTable()
781 bool SameFunction = isFragmentOf(JT->Parents[0], &Function) || in getOrCreateJumpTable()
782 isFragmentOf(&Function, JT->Parents[0]); in getOrCreateJumpTable()
786 JT->Parents.push_back(&Function); in getOrCreateJumpTable()
789 << JT->Parents[0]->getPrintName() << "; " in getOrCreateJumpTable()
791 JT->print(outs()); in getOrCreateJumpTable()
793 Function.JumpTables.emplace(Address, JT); in getOrCreateJumpTable()
794 JT->Parents[0]->setHasIndirectTargetToSplitFragment(true); in getOrCreateJumpTable()
795 JT->Parents[1]->setHasIndirectTargetToSplitFragment(true); in getOrCreateJumpTable()
799 for (BinaryFunction *Frag : JT->Parents) in getOrCreateJumpTable()
804 return JT->getFirstLabel(); in getOrCreateJumpTable()
823 JumpTable *JT = new JumpTable(*JTLabel, Address, EntrySize, Type, in getOrCreateJumpTable() local
826 JT->Parents.push_back(&Function); in getOrCreateJumpTable()
828 JT->print(outs()); in getOrCreateJumpTable()
829 JumpTables.emplace(Address, JT); in getOrCreateJumpTable()
832 Function.JumpTables.emplace(Address, JT); in getOrCreateJumpTable()
837 BinaryContext::duplicateJumpTable(BinaryFunction &Function, JumpTable *JT, in duplicateJumpTable() argument
842 for (std::pair<const unsigned, MCSymbol *> Elmt : JT->Labels) { in duplicateJumpTable()
853 new JumpTable(*NewLabel, JT->getAddress(), JT->EntrySize, JT->Type, in duplicateJumpTable()
855 *getSectionForAddress(JT->getAddress())); in duplicateJumpTable()
856 NewJT->Parents = JT->Parents; in duplicateJumpTable()
857 NewJT->Entries = JT->Entries; in duplicateJumpTable()
858 NewJT->Counts = JT->Counts; in duplicateJumpTable()
872 if (const JumpTable *JT = BF.getJumpTableContainingAddress(Address)) { in generateJumpTableName() local
873 Offset = Address - JT->getAddress(); in generateJumpTableName()
874 auto Itr = JT->Labels.find(Offset); in generateJumpTableName()
875 if (Itr != JT->Labels.end()) in generateJumpTableName()
877 Id = JumpTableIds.at(JT->getAddress()); in generateJumpTableName()