From 2cd1e2e0ce335e1786caaf080771fcf5ffa99adc Mon Sep 17 00:00:00 2001 From: Haydn Trigg Date: Tue, 2 Jun 2026 13:20:05 +0930 Subject: [PATCH] Add missing x64 relocation types (#355) * Add missing x64 relocation types * Format x86.rs * Update x86.rs --- objdiff-core/src/arch/x86.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/objdiff-core/src/arch/x86.rs b/objdiff-core/src/arch/x86.rs index 0ad56d4..b02bd0e 100644 --- a/objdiff-core/src/arch/x86.rs +++ b/objdiff-core/src/arch/x86.rs @@ -80,7 +80,14 @@ impl ArchX86 { }, Architecture::X86_64 => match flags { RelocationFlags::Coff(typ) => match typ { - pe::IMAGE_REL_AMD64_ADDR32NB | pe::IMAGE_REL_AMD64_REL32 => Some(4), + pe::IMAGE_REL_AMD64_ADDR32NB + | pe::IMAGE_REL_AMD64_REL32 + | pe::IMAGE_REL_AMD64_REL32_1 + | pe::IMAGE_REL_AMD64_REL32_2 + | pe::IMAGE_REL_AMD64_REL32_3 + | pe::IMAGE_REL_AMD64_REL32_4 + | pe::IMAGE_REL_AMD64_REL32_5 + | pe::IMAGE_REL_AMD64_SECREL => Some(4), pe::IMAGE_REL_AMD64_ADDR64 => Some(8), _ => None, }, @@ -300,7 +307,15 @@ impl Arch for ArchX86 { }, Architecture::X86_64 => match relocation.flags() { object::RelocationFlags::Coff { - typ: pe::IMAGE_REL_AMD64_ADDR32NB | pe::IMAGE_REL_AMD64_REL32, + typ: + pe::IMAGE_REL_AMD64_ADDR32NB + | pe::IMAGE_REL_AMD64_REL32 + | pe::IMAGE_REL_AMD64_REL32_1 + | pe::IMAGE_REL_AMD64_REL32_2 + | pe::IMAGE_REL_AMD64_REL32_3 + | pe::IMAGE_REL_AMD64_REL32_4 + | pe::IMAGE_REL_AMD64_REL32_5 + | pe::IMAGE_REL_AMD64_SECREL, } | object::RelocationFlags::Elf { r_type: elf::R_X86_64_32 | elf::R_X86_64_PC32 } => { let data = @@ -343,6 +358,12 @@ impl Arch for ArchX86 { pe::IMAGE_REL_AMD64_ADDR64 => Some("IMAGE_REL_AMD64_ADDR64"), pe::IMAGE_REL_AMD64_ADDR32NB => Some("IMAGE_REL_AMD64_ADDR32NB"), pe::IMAGE_REL_AMD64_REL32 => Some("IMAGE_REL_AMD64_REL32"), + pe::IMAGE_REL_AMD64_REL32_1 => Some("IMAGE_REL_AMD64_REL32_1"), + pe::IMAGE_REL_AMD64_REL32_2 => Some("IMAGE_REL_AMD64_REL32_2"), + pe::IMAGE_REL_AMD64_REL32_3 => Some("IMAGE_REL_AMD64_REL32_3"), + pe::IMAGE_REL_AMD64_REL32_4 => Some("IMAGE_REL_AMD64_REL32_4"), + pe::IMAGE_REL_AMD64_REL32_5 => Some("IMAGE_REL_AMD64_REL32_5"), + pe::IMAGE_REL_AMD64_SECREL => Some("IMAGE_REL_AMD64_SECREL"), _ => None, }, _ => None,