#[path = "support/mod.rs"]
mod fixture_support;
use elf_loader::{LinkContext, Linker, Result, input::PathBuf, runtime::DomainId};
fn main() -> Result<()> {
let fixtures = fixture_support::ensure_all();
let mut context = LinkContext::<()>::new(DomainId::PROCESS);
let loaded = Linker::new()
.resolver(fixture_support::search_path_resolver())
.run()
.load(&mut context, PathBuf::from(fixtures.leaf_str()))?;
let module = context.module(loaded.root())?;
let leaf_value = unsafe { module.get::<extern "C" fn() -> i32>("leaf_value").unwrap() };
let value = leaf_value();
assert_eq!(value, 3);
println!(
"loaded {} with {} committed modules; leaf_value() = {}",
module.name(),
loaded.modules().len(),
value
);
Ok(())
}