diff --git a/build.rs b/build.rs index a50026d77..e3805af0e 100644 --- a/build.rs +++ b/build.rs @@ -371,6 +371,7 @@ fn prepare_test_files(crate_root: &Path) { let src = crate_root.join("data").join("test-stable-addresses.bin"); gsym(&src, "test-stable-addresses.gsym"); dwarf(&src, "test-stable-addresses-dwarf-only.bin"); + strip(&src, "test-stable-addresses-stripped.bin", &[]); let src = crate_root.join("data").join("kallsyms.xz"); let mut dst = src.clone(); diff --git a/tests/blazesym.rs b/tests/blazesym.rs index 8abee3fee..088fd797f 100644 --- a/tests/blazesym.rs +++ b/tests/blazesym.rs @@ -17,6 +17,8 @@ use blazesym::inspect; use blazesym::inspect::Inspector; use blazesym::normalize::Normalizer; use blazesym::symbolize; +use blazesym::symbolize::Reason; +use blazesym::symbolize::Symbolized; use blazesym::symbolize::Symbolizer; use blazesym::Addr; use blazesym::ErrorKind; @@ -123,6 +125,22 @@ fn symbolize_elf_dwarf_gsym() { let src = symbolize::Source::from(symbolize::GsymData::new(&data)); test(src, true); } +/// +/// Check that we "fail" symbolization as expected on a stripped ELF +/// binary. +#[test] +fn symbolize_elf_stripped() { + let path = Path::new(&env!("CARGO_MANIFEST_DIR")) + .join("data") + .join("test-stable-addresses-stripped.bin"); + let src = symbolize::Source::Elf(symbolize::Elf::new(path)); + let symbolizer = Symbolizer::new(); + let result = symbolizer + .symbolize_single(&src, symbolize::Input::VirtOffset(0x2000100)) + .unwrap(); + + assert_eq!(result, Symbolized::Unknown(Reason::MissingSyms)); +} /// Make sure that we report (enabled) or don't report (disabled) inlined /// functions with DWARF and Gsym sources.