summaryrefslogtreecommitdiff
path: root/rust/examples
diff options
context:
space:
mode:
authorKyleMiles <krm504@nyu.edu>2023-08-22 19:41:14 -0400
committerKyleMiles <krm504@nyu.edu>2023-08-25 11:18:21 -0400
commita245156062be928592aafd5613f597dded3c69bd (patch)
tree616d40187abc23713a071f4795f786d734b13c6c /rust/examples
parent1977088796491238519237755239598834408626 (diff)
DWARF Import : Correctly track parsing progress
Diffstat (limited to 'rust/examples')
-rw-r--r--rust/examples/dwarf/dwarf_import/src/lib.rs10
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,
);
}