Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion crates/debug/src/transform/line_program.rs
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ where
}
}
}
let end_addr = (map.offset + map.len - 1) as u64;
let end_addr = (map.offset + map.len) as u64;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe add a comment similar to what we have in the test?

out_program.end_sequence(end_addr);
}
Ok((out_program, offset, files, file_index_base))
Expand Down
39 changes: 39 additions & 0 deletions tests/all/debug/translate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,25 @@ fn check_wasm(wasm_path: &str, directives: &str) -> Result<()> {
Ok(())
}

#[allow(dead_code)]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a copy&pasted function which could be refactored. I didn't do it, because this is test-only code. If somebody objects, I'm happy to fix.

fn check_line_program(wasm_path: &str, directives: &str) -> Result<()> {
let wasm = read(wasm_path)?;
let obj_file = NamedTempFile::new()?;
let obj_path = obj_file.path().to_str().unwrap();
compile_cranelift(&wasm, None, obj_path)?;
let dump = get_dwarfdump(obj_path, DwarfDumpSection::DebugLine)?;
let mut builder = CheckerBuilder::new();
builder
.text(directives)
.map_err(|e| format_err!("unable to build checker: {:?}", e))?;
let checker = builder.finish();
let check = checker
.explain(&dump, NO_VARIABLES)
.map_err(|e| format_err!("{:?}", e))?;
assert!(check.0, "didn't pass check {}", check.1);
Ok(())
}

#[test]
#[ignore]
#[cfg(all(
Expand Down Expand Up @@ -89,3 +108,23 @@ check: DW_AT_decl_line (10)
"##,
)
}

#[test]
#[ignore]
#[cfg(all(
any(target_os = "linux", target_os = "macos"),
target_arch = "x86_64",
target_pointer_width = "64"
))]
fn test_debug_dwarf5_translate_lines() -> Result<()> {
check_line_program(
"tests/all/debug/testsuite/fib-wasm-dwarf5.wasm",
r##"
check: Address Line Column File ISA Discriminator Flags
check: 0x000000000000013c 15 3 1 0 0
# The important point is that the following offset must be _after_ the `ret` instruction.
# FIXME: this +1 increment might vary on other archs.
check: 0x000000000000013d 15 3 1 0 0 end_sequence
Comment thread
bjorn3 marked this conversation as resolved.
Outdated
"##,
)
}