From e77c84bc4083dc90f9610bc8d61774417b76eec5 Mon Sep 17 00:00:00 2001 From: Haydn Trigg Date: Fri, 29 May 2026 00:59:36 +0930 Subject: [PATCH 1/3] Add missing x64 relocation types --- objdiff-core/src/arch/x86.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/objdiff-core/src/arch/x86.rs b/objdiff-core/src/arch/x86.rs index 004a3375..fefb6881 100644 --- a/objdiff-core/src/arch/x86.rs +++ b/objdiff-core/src/arch/x86.rs @@ -80,7 +80,13 @@ 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 => Some(4), pe::IMAGE_REL_AMD64_ADDR64 => Some(8), _ => None, }, @@ -294,7 +300,13 @@ 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, } | object::RelocationFlags::Elf { r_type: elf::R_X86_64_32 | elf::R_X86_64_PC32 } => { let data = @@ -337,6 +349,11 @@ 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"), _ => None, }, _ => None, From 7d5ebc0546f70b68af90f58b5dfa5cc033a8e213 Mon Sep 17 00:00:00 2001 From: Haydn Trigg Date: Fri, 29 May 2026 01:08:57 +0930 Subject: [PATCH 2/3] Format x86.rs --- objdiff-core/src/arch/x86.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/objdiff-core/src/arch/x86.rs b/objdiff-core/src/arch/x86.rs index fefb6881..df49b834 100644 --- a/objdiff-core/src/arch/x86.rs +++ b/objdiff-core/src/arch/x86.rs @@ -300,13 +300,14 @@ impl Arch for ArchX86 { }, Architecture::X86_64 => match relocation.flags() { object::RelocationFlags::Coff { - 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, + 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, } | object::RelocationFlags::Elf { r_type: elf::R_X86_64_32 | elf::R_X86_64_PC32 } => { let data = From 7f3b8315bb102efbcfd3922fc1eb46b29a273280 Mon Sep 17 00:00:00 2001 From: Haydn Trigg Date: Fri, 29 May 2026 19:05:20 +0930 Subject: [PATCH 3/3] Update x86.rs --- objdiff-core/src/arch/x86.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/objdiff-core/src/arch/x86.rs b/objdiff-core/src/arch/x86.rs index df49b834..3f086002 100644 --- a/objdiff-core/src/arch/x86.rs +++ b/objdiff-core/src/arch/x86.rs @@ -86,7 +86,8 @@ impl ArchX86 { | pe::IMAGE_REL_AMD64_REL32_2 | pe::IMAGE_REL_AMD64_REL32_3 | pe::IMAGE_REL_AMD64_REL32_4 - | pe::IMAGE_REL_AMD64_REL32_5 => Some(4), + | pe::IMAGE_REL_AMD64_REL32_5 + | pe::IMAGE_REL_AMD64_SECREL => Some(4), pe::IMAGE_REL_AMD64_ADDR64 => Some(8), _ => None, }, @@ -307,7 +308,8 @@ impl Arch for ArchX86 { | 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_REL32_5 + | pe::IMAGE_REL_AMD64_SECREL, } | object::RelocationFlags::Elf { r_type: elf::R_X86_64_32 | elf::R_X86_64_PC32 } => { let data = @@ -355,6 +357,7 @@ impl Arch for ArchX86 { 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,