diff --git a/Cargo.lock b/Cargo.lock index 1bfebba..1b5f999 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2861,7 +2861,7 @@ dependencies = [ [[package]] name = "objdiff-cli" -version = "2.3.3" +version = "2.3.4" dependencies = [ "anyhow", "argp", @@ -2883,7 +2883,7 @@ dependencies = [ [[package]] name = "objdiff-core" -version = "2.3.3" +version = "2.3.4" dependencies = [ "anyhow", "arm-attr", @@ -2923,7 +2923,7 @@ dependencies = [ [[package]] name = "objdiff-gui" -version = "2.3.3" +version = "2.3.4" dependencies = [ "anyhow", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 87131bf..033914f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ strip = "debuginfo" codegen-units = 1 [workspace.package] -version = "2.3.3" +version = "2.3.4" authors = ["Luke Street "] edition = "2021" license = "MIT OR Apache-2.0" diff --git a/objdiff-core/src/diff/mod.rs b/objdiff-core/src/diff/mod.rs index b5e2f77..fe5af43 100644 --- a/objdiff-core/src/diff/mod.rs +++ b/objdiff-core/src/diff/mod.rs @@ -11,7 +11,7 @@ use crate::{ diff_generic_section, no_diff_symbol, }, }, - obj::{ObjInfo, ObjIns, ObjSection, ObjSectionKind, ObjSymbol, SymbolRef}, + obj::{ObjInfo, ObjIns, ObjSection, ObjSectionKind, ObjSymbol, SymbolRef, SECTION_COMMON}, }; pub mod code; @@ -340,7 +340,7 @@ impl ObjDiff { } for (symbol_idx, _) in obj.common.iter().enumerate() { result.common.push(ObjSymbolDiff { - symbol_ref: SymbolRef { section_idx: obj.sections.len(), symbol_idx }, + symbol_ref: SymbolRef { section_idx: SECTION_COMMON, symbol_idx }, target_symbol: None, instructions: vec![], match_percent: None, @@ -361,7 +361,7 @@ impl ObjDiff { #[inline] pub fn symbol_diff(&self, symbol_ref: SymbolRef) -> &ObjSymbolDiff { - if symbol_ref.section_idx == self.sections.len() { + if symbol_ref.section_idx == SECTION_COMMON { &self.common[symbol_ref.symbol_idx] } else { &self.section_diff(symbol_ref.section_idx).symbols[symbol_ref.symbol_idx] @@ -370,7 +370,7 @@ impl ObjDiff { #[inline] pub fn symbol_diff_mut(&mut self, symbol_ref: SymbolRef) -> &mut ObjSymbolDiff { - if symbol_ref.section_idx == self.sections.len() { + if symbol_ref.section_idx == SECTION_COMMON { &mut self.common[symbol_ref.symbol_idx] } else { &mut self.section_diff_mut(symbol_ref.section_idx).symbols[symbol_ref.symbol_idx] @@ -758,7 +758,7 @@ fn matching_symbols( } } for (symbol_idx, symbol) in left.common.iter().enumerate() { - let symbol_ref = SymbolRef { section_idx: left.sections.len(), symbol_idx }; + let symbol_ref = SymbolRef { section_idx: SECTION_COMMON, symbol_idx }; if left_used.contains(&symbol_ref) { continue; } @@ -790,7 +790,7 @@ fn matching_symbols( } } for (symbol_idx, symbol) in right.common.iter().enumerate() { - let symbol_ref = SymbolRef { section_idx: right.sections.len(), symbol_idx }; + let symbol_ref = SymbolRef { section_idx: SECTION_COMMON, symbol_idx }; if right_used.contains(&symbol_ref) { continue; } @@ -883,7 +883,7 @@ fn find_common_symbol(obj: Option<&ObjInfo>, in_symbol: &ObjSymbol) -> Option (Option<&ObjSection>, &ObjSymbol) { - if symbol_ref.section_idx == self.sections.len() { + if symbol_ref.section_idx == SECTION_COMMON { let symbol = &self.common[symbol_ref.symbol_idx]; return (None, symbol); } diff --git a/objdiff-gui/src/views/symbol_diff.rs b/objdiff-gui/src/views/symbol_diff.rs index cd17eb4..1ca66dd 100644 --- a/objdiff-gui/src/views/symbol_diff.rs +++ b/objdiff-gui/src/views/symbol_diff.rs @@ -7,7 +7,9 @@ use egui::{ use objdiff_core::{ arch::ObjArch, diff::{display::HighlightKind, ObjDiff, ObjSymbolDiff}, - obj::{ObjInfo, ObjSection, ObjSectionKind, ObjSymbol, ObjSymbolFlags, SymbolRef}, + obj::{ + ObjInfo, ObjSection, ObjSectionKind, ObjSymbol, ObjSymbolFlags, SymbolRef, SECTION_COMMON, + }, }; use regex::{Regex, RegexBuilder}; @@ -651,11 +653,11 @@ pub fn symbol_list_ui( ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend); // Skip sections with all symbols filtered out - if mapping.keys().any(|symbol_ref| symbol_ref.section_idx == usize::MAX) { + if mapping.keys().any(|symbol_ref| symbol_ref.section_idx == SECTION_COMMON) { CollapsingHeader::new(".comm").default_open(true).show(ui, |ui| { for (symbol_ref, symbol_diff) in mapping .iter() - .filter(|(symbol_ref, _)| symbol_ref.section_idx == usize::MAX) + .filter(|(symbol_ref, _)| symbol_ref.section_idx == SECTION_COMMON) { let symbol = ctx.obj.section_symbol(*symbol_ref).1; if let Some(result) = symbol_ui(