diff --git a/objdiff-core/src/arch/superh/mod.rs b/objdiff-core/src/arch/superh/mod.rs index 699789c..e349a0b 100644 --- a/objdiff-core/src/arch/superh/mod.rs +++ b/objdiff-core/src/arch/superh/mod.rs @@ -76,7 +76,9 @@ impl Arch for ArchSuperH { sh2_disasm(0, opcode, true, &mut parts, &resolved, &mut branch_dest); - if let Some(symbol_data) = resolved.section.symbol_data(resolved.symbol) { + if let Some(symbol_data) = + resolved.section.data_range(resolved.symbol.address, resolved.symbol.size as usize) + { // scan for data // map of instruction offsets to data target offsets let mut data_offsets = BTreeMap::::new(); diff --git a/objdiff-core/src/obj/mod.rs b/objdiff-core/src/obj/mod.rs index 46d6cc7..d3ac358 100644 --- a/objdiff-core/src/obj/mod.rs +++ b/objdiff-core/src/obj/mod.rs @@ -99,19 +99,8 @@ impl fmt::Debug for SectionData { impl Section { pub fn data_range(&self, address: u64, size: usize) -> Option<&[u8]> { - let start = self.address; - let end = start + self.size; - if address >= start && address + size as u64 <= end { - let offset = (address - start) as usize; - Some(&self.data[offset..offset + size]) - } else { - None - } - } - - pub fn symbol_data(&self, symbol: &Symbol) -> Option<&[u8]> { - let offset = symbol.address.checked_sub(self.address)?; - self.data.get(offset as usize..offset as usize + symbol.size as usize) + let offset = address.checked_sub(self.address)?; + self.data.get(offset as usize..offset as usize + size) } // The alignment to use when "Combine data/text sections" is enabled. diff --git a/objdiff-core/src/util.rs b/objdiff-core/src/util.rs index f3dc6b7..81995f1 100644 --- a/objdiff-core/src/util.rs +++ b/objdiff-core/src/util.rs @@ -57,6 +57,5 @@ pub fn align_data_to_4( pub fn align_u64_to(len: u64, align: u64) -> u64 { len + ((align - (len % align)) % align) } pub fn align_data_slice_to(data: &mut Vec, align: u64) { - const ALIGN_BYTE: u8 = 0; - data.resize(align_u64_to(data.len() as u64, align) as usize, ALIGN_BYTE); + data.resize(align_u64_to(data.len() as u64, align) as usize, 0); }