From abcb69ebfd0b291f357db5591f5fdc9df4a0665e Mon Sep 17 00:00:00 2001 From: Jason Hiser <jdhiser@gmail.com> Date: Thu, 7 Mar 2019 21:40:29 -0500 Subject: [PATCH] fixed type3 unpinner --- irdb-libs/ir_builders/fill_in_indtargs.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/irdb-libs/ir_builders/fill_in_indtargs.cpp b/irdb-libs/ir_builders/fill_in_indtargs.cpp index 28ea73ea5..99d63250e 100644 --- a/irdb-libs/ir_builders/fill_in_indtargs.cpp +++ b/irdb-libs/ir_builders/fill_in_indtargs.cpp @@ -2732,7 +2732,7 @@ void setup_icfs(FileIR_t* firp, EXEIO::exeio* elfiop) firp->GetAllICFS().insert(nn); insn->SetIBTargets(nn); */ - auto nn=firp->addNewICFS(insn,jmptables[insn]); + auto nn=firp->addNewICFS(insn,jmptables[insn], jmptables[insn].getAnalysisStatus()); if(getenv("IB_VERBOSE")!=0) { @@ -3209,7 +3209,11 @@ void unpin_switches(FileIR_t *firp, int do_unpin_opt) DataScoop_t* scoop=find_scoop(firp,jmptables[insn].GetTableStart()); if(!scoop) continue; - if(jmptables[insn].GetSwitchType().areOnlyTheseSet(ibt_provenance_t::ibtp_switchtable_type3)) + if(jmptables[insn].GetSwitchType().areOnlyTheseSet( + ibt_provenance_t::ibtp_switchtable_type3 | + ibt_provenance_t::ibtp_rodata | + ibt_provenance_t::ibtp_stars_switch + )) { unpin_type3_switchtable(firp,insn,scoop, do_unpin_opt); } -- GitLab