Skip to content

Commit

Permalink
Remove some other clones
Browse files Browse the repository at this point in the history
  • Loading branch information
AngheloAlf committed Sep 25, 2024
1 parent 7c33ce7 commit 7420995
Showing 1 changed file with 26 additions and 8 deletions.
34 changes: 26 additions & 8 deletions src/rs/mapfile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,13 @@ impl MapFile {
prev_line = line;
}

for (i, segment) in temp_segment_list.iter_mut().enumerate() {
self.segments_list = Self::post_process_segments_gnu(temp_segment_list);
}

fn post_process_segments_gnu(temp_segment_list: Vec<segment::Segment>) -> Vec<segment::Segment> {
let mut segments_list = Vec::with_capacity(temp_segment_list.len());

for (i, segment) in temp_segment_list.into_iter().enumerate() {
if i == 0 && segment.is_placeholder() {
// skip the dummy segment if it has no size, files or symbols
continue;
Expand All @@ -248,7 +254,7 @@ impl MapFile {
let mut new_segment = segment.clone_no_filelist();

let mut vrom_offset = segment.vrom;
for file in segment.files_list.iter_mut() {
for mut file in segment.files_list.into_iter() {
let mut acummulated_size = 0;
let symbols_count = file.symbols.len();
let is_noload_section = file.is_noload_section();
Expand Down Expand Up @@ -308,11 +314,14 @@ impl MapFile {
vrom_offset += file.size;
}

new_segment.files_list.push(file.clone());
new_segment.files_list.push(file);
}

self.segments_list.push(new_segment);
segments_list.push(new_segment);
}

segments_list.shrink_to_fit();
segments_list
}

/**
Expand Down Expand Up @@ -414,15 +423,21 @@ impl MapFile {
}
}

for (i, segment) in temp_segment_list.iter_mut().enumerate() {
self.segments_list = Self::post_process_segments_lld(temp_segment_list);
}

fn post_process_segments_lld(temp_segment_list: Vec<segment::Segment>) -> Vec<segment::Segment> {
let mut segments_list = Vec::with_capacity(temp_segment_list.len());

for (i, segment) in temp_segment_list.into_iter().enumerate() {
if i == 0 && segment.is_placeholder() {
// skip the dummy segment if it has no size, files or symbols
continue;
}

let mut new_segment = segment.clone_no_filelist();

for file in segment.files_list.iter_mut() {
for mut file in segment.files_list.into_iter() {
if file.is_placeholder() {
// drop placeholders
continue;
Expand Down Expand Up @@ -455,11 +470,14 @@ impl MapFile {
}
}

new_segment.files_list.push(file.clone());
new_segment.files_list.push(file);
}

self.segments_list.push(new_segment);
segments_list.push(new_segment);
}

segments_list.shrink_to_fit();
segments_list
}

pub fn filter_by_section_type(&self, section_type: &str) -> Self {
Expand Down

0 comments on commit 7420995

Please sign in to comment.