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