From f428f8390e3128eb7d82377789d28c6955bc69e1 Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Fri, 22 Aug 2025 16:11:40 +0800 Subject: [PATCH 1/2] Ignore ELF header OS byte The OS byte changed from System V (0) to GNU (3) in Rust 1.89 --- src/lib.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index aa35ce7..314da39 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -88,7 +88,7 @@ where const ET_EXEC: u16 = 0x0002; /// Standard ELF magic header const ELF_MAGIC: u32 = 0x7F454C46; - /// 32-bit, little-endian, version 1, SysV + /// 32-bit, little-endian, version 1, low OS byte ignored. const DESIRED_ELF_VERSION: u32 = 0x01010100; /// Make a new loader @@ -98,7 +98,8 @@ where // File doesn't start 0x7F E L F return Err(Error::NotAnElfFile); } - let class_endian_version_abi = data_source.read_u32_be(0x04)?; + // Mask out the OS byte which varies between Rust compiler versions. + let class_endian_version_abi = data_source.read_u32_be(0x04)? & 0xffffff00; if class_endian_version_abi != Self::DESIRED_ELF_VERSION { return Err(Error::WrongElfFile); } From c03580d6ee1348b1616b63ab545548398e577b01 Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Fri, 22 Aug 2025 16:13:32 +0800 Subject: [PATCH 2/2] Fix mismatched_lifetime_syntaxes warnings --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 314da39..5ceca46 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -157,7 +157,7 @@ where } /// Create a section header iterator. - pub fn iter_section_headers(&self) -> IterSectionHeaders { + pub fn iter_section_headers(&self) -> IterSectionHeaders<'_, DS> { IterSectionHeaders { parent: self, next_section: 0, @@ -165,7 +165,7 @@ where } /// Create a program header iterator. - pub fn iter_program_headers(&self) -> IterProgramHeaders { + pub fn iter_program_headers(&self) -> IterProgramHeaders<'_, DS> { IterProgramHeaders { parent: self, next_program_header: 0,