From aa365c328e6904b92debd95f37ad0e84ea3de5bc Mon Sep 17 00:00:00 2001 From: Jaby Date: Mon, 24 Jul 2023 20:41:38 +0200 Subject: [PATCH] Sort map --- src/Tools/readmap/src/lib.rs | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/Tools/readmap/src/lib.rs b/src/Tools/readmap/src/lib.rs index 9dfd3c51..17e7c1d7 100644 --- a/src/Tools/readmap/src/lib.rs +++ b/src/Tools/readmap/src/lib.rs @@ -26,12 +26,28 @@ pub fn scan Option>(mut next_line: F) -> Result ({})", memory_map.global.len()); - for section in memory_map.sections { - println!("Name: {} ({})", section.name, section.symbols.len()); + sort_memory_map(&mut memory_map); + Ok(memory_map) +} + +fn sort_memory_map(memory_map: &mut MemoryMap) { + fn sort_symbol_vec(symbol_vec: &mut Vec) { + symbol_vec.sort_by(|a, b| { + a.adr.cmp(&b.adr) + }); + } + + fn sort_section_vec(section_vec: &mut Vec
) { + section_vec.sort_by(|a, b| { + a.adr.cmp(&b.adr) + }); + } + + sort_section_vec(&mut memory_map.sections); + sort_symbol_vec(&mut memory_map.global); + for section in &mut memory_map.sections { + sort_symbol_vec(&mut section.symbols); } - Err(Error::from_str("Symbols should be sorted by address now - not implemented yet")) } fn scan_symbols Option>(next_line: &mut F, memory_map: &mut MemoryMap) -> Result {