diff --git a/objdiff-core/src/arch/arm.rs b/objdiff-core/src/arch/arm.rs index 8ce6901..b7714e1 100644 --- a/objdiff-core/src/arch/arm.rs +++ b/objdiff-core/src/arch/arm.rs @@ -464,6 +464,22 @@ impl Arch for ArchArm { } flags } + + fn infer_function_size( + &self, + symbol: &Symbol, + section: &Section, + mut next_address: u64, + ) -> Result { + // Trim any trailing 4-byte zeroes from the end (padding) + while next_address >= symbol.address + 4 + && let Some(data) = section.data_range(next_address - 4, 4) + && data == [0u8; 4] + { + next_address -= 4; + } + Ok(next_address.saturating_sub(symbol.address)) + } } #[derive(Clone, Copy, Debug)]