From 13410b05bf0a7658d46f43751a62f85ebb66faaf Mon Sep 17 00:00:00 2001
From: root <jdhiser@gmail.com>
Date: Thu, 8 Jun 2023 18:57:38 +0000
Subject: [PATCH] Fix issue with ldrd handling where op[1] assumed memory if
 isPcrel.

---
 irdb-libs/ir_builders/fill_in_cfg.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/irdb-libs/ir_builders/fill_in_cfg.cpp b/irdb-libs/ir_builders/fill_in_cfg.cpp
index fd821cad7..7c0190a73 100644
--- a/irdb-libs/ir_builders/fill_in_cfg.cpp
+++ b/irdb-libs/ir_builders/fill_in_cfg.cpp
@@ -608,10 +608,11 @@ void PopulateCFG::detect_scoops_in_code(FileIR_t *firp)
 			// if there is an indexing operation, skip this instruction.
 			if( mem_op->hasIndexRegister()) continue;
 
-			// sanity check that it's a memory operation, and extract fields
-			assert(mem_op->isMemory());
+			// sanity check that it's a memory operation, as it could be a direct reference to the PC.
+			if(!mem_op->isMemory()) continue;
 
 			
+			// extract fields
 			referenced_address = mem_op->getMemoryDisplacement() + (is_arm32 ? insn->getAddress()->getVirtualOffset() + 8 : 0); 
 		}
 
-- 
GitLab