diff --git a/irdb-libs/ir_builders/fill_in_indtargs.cpp b/irdb-libs/ir_builders/fill_in_indtargs.cpp index 28ea73ea50ae27bebc20cab0dd647f61642151cd..99d63250e5ef07c025cfc0fe40a02d83fd828d52 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); }