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