diff options
| author | KyleMiles <krm504@nyu.edu> | 2023-08-22 19:41:14 -0400 |
|---|---|---|
| committer | KyleMiles <krm504@nyu.edu> | 2023-08-25 11:18:21 -0400 |
| commit | a245156062be928592aafd5613f597dded3c69bd (patch) | |
| tree | 616d40187abc23713a071f4795f786d734b13c6c /rust/examples | |
| parent | 1977088796491238519237755239598834408626 (diff) | |
DWARF Import : Correctly track parsing progress
Diffstat (limited to 'rust/examples')
| -rw-r--r-- | rust/examples/dwarf/dwarf_import/src/lib.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/rust/examples/dwarf/dwarf_import/src/lib.rs b/rust/examples/dwarf/dwarf_import/src/lib.rs index c1f3206d..396aa0cf 100644 --- a/rust/examples/dwarf/dwarf_import/src/lib.rs +++ b/rust/examples/dwarf/dwarf_import/src/lib.rs @@ -172,17 +172,17 @@ fn parse_unit<R: Reader<Offset = usize>>( unit: &Unit<R>, debug_info_builder: &mut DebugInfoBuilder, progress: &dyn Fn(usize, usize) -> Result<(), ()>, + current_die_number: &mut usize, total_die_count: usize, ) { let mut entries = unit.entries(); // Really all we care about as we iterate the entries in a given unit is how they modify state (our perception of the file) // There's a lot of junk we don't care about in DWARF info, so we choose a couple DIEs and mutate state (add functions (which adds the types it uses) and keep track of what namespace we're in) - let mut current_die_number = 0; while let Ok(Some((_, entry))) = entries.next_dfs() { - current_die_number += 1; - if current_die_number % 1000 == 0 - && (*progress)(current_die_number, total_die_count).is_err() + *current_die_number += 1; + if *current_die_number % 1000 == 0 + && (*progress)(*current_die_number, total_die_count).is_err() { return; // Parsing canceled } @@ -236,12 +236,14 @@ fn parse_dwarf( // Parse all the compilation units let mut iter = dwarf.units(); + let mut current_die_number = 0; while let Ok(Some(header)) = iter.next() { parse_unit( &dwarf, &dwarf.unit(header).unwrap(), &mut debug_info_builder, &progress, + &mut current_die_number, total_die_count, ); } |
