From 12fe017ec07e962b85a90ce4747f21f3bec47695 Mon Sep 17 00:00:00 2001 From: jdh8d <jdh8d@git.zephyr-software.com> Date: Mon, 30 Nov 2015 00:52:08 +0000 Subject: [PATCH] Updates for dealing with IBs in STARS/irdb Former-commit-id: 11589cbc99400d4999707776d0190475cdef0867 --- src/interfaces/irdb/STARS_IRDB_Program.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/interfaces/irdb/STARS_IRDB_Program.cpp b/src/interfaces/irdb/STARS_IRDB_Program.cpp index f79e98c3..738cd067 100644 --- a/src/interfaces/irdb/STARS_IRDB_Program.cpp +++ b/src/interfaces/irdb/STARS_IRDB_Program.cpp @@ -304,6 +304,19 @@ void STARS_IRDB_Program_t::GetBlockSuccessorTargets SuccList.push_back(STARS_InstructionID_t(irdb_insn->GetFallthrough()->GetBaseID())); if(irdb_insn->GetTarget()) SuccList.push_back(STARS_InstructionID_t(irdb_insn->GetTarget()->GetBaseID())); + + // if no IBTs or the analysis failed. + if(!irdb_insn->GetIBTargets() || !irdb_insn->GetIBTargets()->IsComplete()) + // don't include any + return; + + for(libIRDB::InstructionSet_t::iterator it=irdb_insn->GetIBTargets()->begin(); + it!=irdb_insn->GetIBTargets()->end(); ++it) + { + libIRDB::Instruction_t* target=*it; + assert(target); + SuccList.push_back(STARS_InstructionID_t(target->GetBaseID())); + } return; } -- GitLab