From 8d24ec63733526721ec286694c0b37733276790e Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sat, 30 Aug 2025 22:57:19 -0600 Subject: [PATCH] Detect x86 instruction size differences Check raw code length when instructions have same disassembly but different encodings. Marks as OpMismatch to indicate encoding difference. Fixes #242 Fixes #233 --- objdiff-core/src/diff/code.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/objdiff-core/src/diff/code.rs b/objdiff-core/src/diff/code.rs index f5ceb45..50efcec 100644 --- a/objdiff-core/src/diff/code.rs +++ b/objdiff-core/src/diff/code.rs @@ -496,6 +496,14 @@ fn diff_instruction( result.right_args_diff.push(InstructionArgDiffIndex::new(b_diff)); } } + if result.kind == InstructionDiffKind::None + && left_resolved.code.len() != right_resolved.code.len() + { + // If everything else matches but the raw code length differs (e.g. x86 instructions + // with same disassembly but different encoding), mark as op mismatch + result.kind = InstructionDiffKind::OpMismatch; + state.diff_score += PENALTY_REG_DIFF; + } return Ok(result); }