Skip to content

Commit

Permalink
Move symbolization/inspection sources into 'source' sub-modules
Browse files Browse the repository at this point in the history
With an upcoming change we are going to introduce another enum with
variants similar to that of the symbolization source to the project. To
prepare for that while preventing any naming conflicts from arising,
export all symbolization (and inspection) sources into a new sub-module,
'source'.

Signed-off-by: Daniel Müller <[email protected]>
  • Loading branch information
d-e-s-o committed Feb 6, 2025
1 parent da55439 commit ea6b24e
Show file tree
Hide file tree
Showing 23 changed files with 89 additions and 103 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Unreleased
- Adjusted `vmlinux` based kernel address symbolization logic to take
into account system KASLR state
- Added `kaslr_offset` member to `symbolize::Kernel`
- Moved symbolization and inspection sources into `source` sub-module


0.2.0-rc.2
Expand Down
7 changes: 4 additions & 3 deletions benches/inspect.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use std::hint::black_box;
use std::path::Path;

use blazesym::inspect;
use blazesym::inspect::source::Elf;
use blazesym::inspect::source::Source;
use blazesym::inspect::Inspector;

use criterion::measurement::Measurement;
Expand All @@ -14,7 +15,7 @@ fn lookup_elf() {
let dwarf_vmlinux = Path::new(&env!("CARGO_MANIFEST_DIR"))
.join("data")
.join("vmlinux-5.17.12-100.fc34.x86_64.elf");
let src = inspect::Source::Elf(inspect::Elf::new(dwarf_vmlinux));
let src = Source::Elf(Elf::new(dwarf_vmlinux));

let inspector = Inspector::new();
let results = inspector
Expand All @@ -35,7 +36,7 @@ fn lookup_dwarf() {
let dwarf_vmlinux = Path::new(&env!("CARGO_MANIFEST_DIR"))
.join("data")
.join("vmlinux-5.17.12-100.fc34.x86_64.dwarf");
let src = inspect::Source::Elf(inspect::Elf::new(dwarf_vmlinux));
let src = Source::Elf(Elf::new(dwarf_vmlinux));

let inspector = Inspector::new();
let results = inspector
Expand Down
12 changes: 6 additions & 6 deletions benches/symbolize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
use std::hint::black_box;
use std::path::Path;

use blazesym::symbolize::Breakpad;
use blazesym::symbolize::Elf;
use blazesym::symbolize::GsymFile;
use blazesym::symbolize::source::Breakpad;
use blazesym::symbolize::source::Elf;
use blazesym::symbolize::source::GsymFile;
use blazesym::symbolize::source::Kernel;
use blazesym::symbolize::source::Process;
use blazesym::symbolize::source::Source;
use blazesym::symbolize::Input;
use blazesym::symbolize::Kernel;
use blazesym::symbolize::Process;
use blazesym::symbolize::Source;
use blazesym::symbolize::Symbolizer;
use blazesym::Addr;
use blazesym::Pid;
Expand Down
2 changes: 1 addition & 1 deletion capi/include/blazesym.h
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ typedef struct blaze_inspector blaze_inspector;
/**
* An object representing an ELF inspection source.
*
* C ABI compatible version of [`inspect::Elf`].
* C ABI compatible version of [`inspect::source::Elf`].
*/
typedef struct blaze_inspect_elf_src {
/**
Expand Down
6 changes: 3 additions & 3 deletions capi/src/inspect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ use std::ptr;

#[cfg(doc)]
use blazesym::inspect;
use blazesym::inspect::Elf;
use blazesym::inspect::source::Elf;
use blazesym::inspect::source::Source;
use blazesym::inspect::Inspector;
use blazesym::inspect::Source;
use blazesym::inspect::SymInfo;
use blazesym::Addr;
use blazesym::SymType;
Expand All @@ -38,7 +38,7 @@ pub type blaze_inspector = Inspector;

/// An object representing an ELF inspection source.
///
/// C ABI compatible version of [`inspect::Elf`].
/// C ABI compatible version of [`inspect::source::Elf`].
#[repr(C)]
#[derive(Debug)]
pub struct blaze_inspect_elf_src {
Expand Down
16 changes: 8 additions & 8 deletions capi/src/symbolize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@ use std::path::Path;
use std::path::PathBuf;
use std::ptr;

use blazesym::symbolize::source::Elf;
use blazesym::symbolize::source::GsymData;
use blazesym::symbolize::source::GsymFile;
use blazesym::symbolize::source::Kernel;
use blazesym::symbolize::source::Process;
use blazesym::symbolize::source::Source;
use blazesym::symbolize::CodeInfo;
use blazesym::symbolize::Elf;
use blazesym::symbolize::GsymData;
use blazesym::symbolize::GsymFile;
use blazesym::symbolize::InlinedFn;
use blazesym::symbolize::Input;
use blazesym::symbolize::Kernel;
use blazesym::symbolize::Process;
use blazesym::symbolize::Reason;
use blazesym::symbolize::Source;
use blazesym::symbolize::Sym;
use blazesym::symbolize::Symbolized;
use blazesym::symbolize::Symbolizer;
Expand Down Expand Up @@ -1757,8 +1757,8 @@ mod tests {
.join("..")
.join("data")
.join("test-rs.bin");
let elf = inspect::Elf::new(&test_dwarf);
let src = inspect::Source::Elf(elf);
let elf = inspect::source::Elf::new(&test_dwarf);
let src = inspect::source::Source::Elf(elf);

let inspector = inspect::Inspector::new();
let results = inspector
Expand Down
26 changes: 13 additions & 13 deletions cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ fn inspect(inspect: args::inspect::Inspect) -> Result<()> {
path,
ref names,
}) => {
let src = inspect::Source::from(inspect::Breakpad::new(path));
let src = inspect::source::Source::from(inspect::source::Breakpad::new(path));
(src, names)
}
args::inspect::Lookup::Elf(args::inspect::ElfLookup { path, ref names }) => {
let src = inspect::Source::from(inspect::Elf::new(path));
let src = inspect::source::Source::from(inspect::source::Elf::new(path));
(src, names)
}
};
Expand All @@ -108,15 +108,15 @@ fn inspect(inspect: args::inspect::Inspect) -> Result<()> {
args::inspect::Inspect::Dump(dump) => {
let src = match dump {
args::inspect::Dump::Breakpad(args::inspect::BreakpadDump { path }) => {
inspect::Source::from(inspect::Breakpad::new(path))
inspect::source::Source::from(inspect::source::Breakpad::new(path))
}
args::inspect::Dump::Elf(args::inspect::ElfDump {
path,
no_debug_syms,
}) => {
let mut elf = inspect::Elf::new(path);
let mut elf = inspect::source::Elf::new(path);
elf.debug_syms = !no_debug_syms;
inspect::Source::from(elf)
inspect::source::Source::from(elf)
}
};
let mut sym_infos = Vec::new();
Expand Down Expand Up @@ -227,7 +227,7 @@ fn symbolize(symbolize: args::symbolize::Symbolize) -> Result<()> {
let mut builder = Symbolizer::builder();
let (src, input, addrs) = match symbolize {
args::symbolize::Symbolize::Breakpad(args::symbolize::Breakpad { path, ref addrs }) => {
let src = symbolize::Source::from(symbolize::Breakpad::new(path));
let src = symbolize::source::Source::from(symbolize::source::Breakpad::new(path));
let addrs = addrs.as_slice();
let input = symbolize::Input::FileOffset(addrs);
(src, input, addrs)
Expand All @@ -243,15 +243,15 @@ fn symbolize(symbolize: args::symbolize::Symbolize) -> Result<()> {
}) => {
builder = builder.set_debug_dirs(debug_dirs);

let mut elf = symbolize::Elf::new(path);
let mut elf = symbolize::source::Elf::new(path);
elf.debug_syms = !no_debug_syms;
let src = symbolize::Source::from(elf);
let src = symbolize::source::Source::from(elf);
let addrs = addrs.as_slice();
let input = symbolize::Input::VirtOffset(addrs);
(src, input, addrs)
}
args::symbolize::Symbolize::Gsym(args::symbolize::Gsym { path, ref addrs }) => {
let src = symbolize::Source::from(symbolize::GsymFile::new(path));
let src = symbolize::source::Source::from(symbolize::source::GsymFile::new(path));
let addrs = addrs.as_slice();
let input = symbolize::Input::VirtOffset(addrs);
(src, input, addrs)
Expand All @@ -261,9 +261,9 @@ fn symbolize(symbolize: args::symbolize::Symbolize) -> Result<()> {
ref addrs,
no_map_files,
}) => {
let mut process = symbolize::Process::new(pid);
let mut process = symbolize::source::Process::new(pid);
process.map_files = !no_map_files;
let src = symbolize::Source::from(process);
let src = symbolize::source::Source::from(process);
let addrs = addrs.as_slice();
let input = symbolize::Input::AbsAddr(addrs);
(src, input, addrs)
Expand All @@ -273,7 +273,7 @@ fn symbolize(symbolize: args::symbolize::Symbolize) -> Result<()> {
vmlinux,
ref addrs,
}) => {
let kernel = symbolize::Kernel {
let kernel = symbolize::source::Kernel {
kallsyms: match kallsyms {
None => MaybeDefault::Default,
Some(path) if path.as_os_str().is_empty() => MaybeDefault::None,
Expand All @@ -286,7 +286,7 @@ fn symbolize(symbolize: args::symbolize::Symbolize) -> Result<()> {
},
..Default::default()
};
let src = symbolize::Source::from(kernel);
let src = symbolize::source::Source::from(kernel);
let addrs = addrs.as_slice();
let input = symbolize::Input::AbsAddr(addrs);
(src, input, addrs)
Expand Down
4 changes: 2 additions & 2 deletions examples/addr2ln.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ use anyhow::bail;
use anyhow::Context as _;
use anyhow::Result;

use blazesym::symbolize::source::Elf;
use blazesym::symbolize::source::Source;
use blazesym::symbolize::CodeInfo;
use blazesym::symbolize::Elf;
use blazesym::symbolize::Input;
use blazesym::symbolize::Source;
use blazesym::symbolize::Sym;
use blazesym::symbolize::Symbolized;
use blazesym::symbolize::Symbolizer;
Expand Down
4 changes: 2 additions & 2 deletions examples/addr2ln_pid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ use anyhow::bail;
use anyhow::Context as _;
use anyhow::Result;

use blazesym::symbolize::source::Process;
use blazesym::symbolize::source::Source;
use blazesym::symbolize::CodeInfo;
use blazesym::symbolize::Input;
use blazesym::symbolize::Process;
use blazesym::symbolize::Source;
use blazesym::symbolize::Sym;
use blazesym::symbolize::Symbolized;
use blazesym::symbolize::Symbolizer;
Expand Down
4 changes: 2 additions & 2 deletions examples/backtrace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ use std::mem::size_of;
use std::mem::transmute;
use std::ptr;

use blazesym::symbolize::source::Process;
use blazesym::symbolize::source::Source;
use blazesym::symbolize::CodeInfo;
use blazesym::symbolize::Input;
use blazesym::symbolize::Process;
use blazesym::symbolize::Source;
use blazesym::symbolize::Sym;
use blazesym::symbolize::Symbolized;
use blazesym::symbolize::Symbolizer;
Expand Down
4 changes: 2 additions & 2 deletions examples/gsym-in-apk/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ fn find_the_answer_fn_file_offset() -> Addr {
.join("data")
.join("libtest-so.so");
let inspector = inspect::Inspector::new();
let src = inspect::Source::from(inspect::Elf::new(so));
let src = inspect::source::Source::from(inspect::source::Elf::new(so));
let syms = inspector
.lookup(&src, &["the_answer"])
.unwrap()
Expand All @@ -139,7 +139,7 @@ fn find_the_answer_fn_file_offset() -> Addr {
fn main() -> Result<()> {
let fn_file_offset = find_the_answer_fn_file_offset();
let apk = apk_path();
let src = symbolize::Source::Apk(symbolize::Apk::new(apk));
let src = symbolize::source::Source::Apk(symbolize::source::Apk::new(apk));
let symbolizer = Symbolizer::builder()
// Set a custom "dispatcher" function for symbolizing APKs. This will
// cause the library to invoke our `dispatch_apk` function with some
Expand Down
4 changes: 2 additions & 2 deletions examples/inspect-mangled.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ use std::path::Path;

use anyhow::Result;

use blazesym::inspect::Elf;
use blazesym::inspect::source::Elf;
use blazesym::inspect::source::Source;
use blazesym::inspect::Inspector;
use blazesym::inspect::Source;
use blazesym::inspect::SymInfo;

use rustc_demangle::demangle;
Expand Down
4 changes: 2 additions & 2 deletions examples/normalize-virt-offset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

use blazesym::helper::ElfResolver;
use blazesym::normalize::Normalizer;
use blazesym::symbolize::Elf;
use blazesym::symbolize::source::Elf;
use blazesym::symbolize::source::Source;
use blazesym::symbolize::Input;
use blazesym::symbolize::Source;
use blazesym::symbolize::Symbolizer;
use blazesym::symbolize::TranslateFileOffset as _;
use blazesym::Addr;
Expand Down
3 changes: 2 additions & 1 deletion examples/sym-debuginfod/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,8 @@ fn main() -> Result<()> {
.context("failed to find valid URLs in DEBUGINFOD_URLS environment variable")?;
let client = CachingClient::from_env(client)?;

let src = symbolize::Source::Process(symbolize::Process::new(Pid::from(args.pid)));
let src =
symbolize::source::Source::Process(symbolize::source::Process::new(Pid::from(args.pid)));
let symbolizer = Symbolizer::builder()
.set_process_dispatcher(move |info| dispatch_process(info, &client))
.build();
Expand Down
12 changes: 4 additions & 8 deletions src/inspect/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
//! etc.) by name or iterating over all available symbols.
//!
//! ```no_run
//! use blazesym::inspect;
//! use blazesym::inspect::source::Elf;
//! use blazesym::inspect::source::Source;
//! use blazesym::inspect::Inspector;
//!
//! let src = inspect::Source::Elf(inspect::Elf::new("/usr/bin/libc.so"));
//! let src = Source::Elf(Elf::new("/usr/bin/libc.so"));
//! let inspector = Inspector::new();
//! let results = inspector
//! .lookup(&src, &["fopen"])
Expand All @@ -18,7 +19,7 @@
#[cfg_attr(not(feature = "dwarf"), allow(unused_variables))]
mod inspector;
mod source;
pub mod source;

use std::borrow::Cow;
use std::fmt::Debug;
Expand All @@ -30,11 +31,6 @@ use crate::Result;
use crate::SymType;

pub use inspector::Inspector;
cfg_breakpad! {
pub use source::Breakpad;
}
pub use source::Elf;
pub use source::Source;


/// Information about a symbol.
Expand Down
2 changes: 2 additions & 0 deletions src/inspect/source.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
//! Definitions of supported inspection sources.
use std::fmt::Debug;
use std::fmt::Formatter;
use std::fmt::Result as FmtResult;
Expand Down
6 changes: 3 additions & 3 deletions src/normalize/meta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ use super::Reason;
///
/// The corresponding file offset is normalized only to the APK container, not
/// any potential internal ELF files. Use the
/// [`Apk`][crate::symbolize::Source::Apk] symbolization source in order to
/// symbolize the offset:
/// [`Apk`][crate::symbolize::source::Source::Apk] symbolization source in order
/// to symbolize the offset:
/// ```no_run
/// # use std::path::Path;
/// # use blazesym::Pid;
Expand All @@ -29,7 +29,7 @@ use super::Reason;
///
/// // We assume that we have the APK lying around at the same path as on the
/// // "remote" system.
/// let src = symbolize::Source::from(symbolize::Apk::new(&apk.path));
/// let src = symbolize::source::Source::from(symbolize::source::Apk::new(&apk.path));
/// let symbolizer = symbolize::Symbolizer::new();
/// let sym = symbolizer
/// .symbolize_single(&src, symbolize::Input::FileOffset(output))
Expand Down
Loading

0 comments on commit ea6b24e

Please sign in to comment.