Skip to main content

windows_elf_loader/
lib.rs

1use elf_loader::{
2    Error, Loader,
3    image::RawDylib as ElfDylib,
4    input::{ElfBinary, ElfFile},
5    os::DefaultMmap,
6    tls::DefaultTlsResolver,
7};
8
9/// elf loader
10pub struct WinElfLoader {
11    loader: Loader<DefaultMmap, (), (), DefaultTlsResolver>,
12}
13
14impl WinElfLoader {
15    pub fn new() -> Self {
16        let loader = Loader::new().with_default_tls_resolver();
17        Self { loader }
18    }
19
20    pub fn load_dylib(
21        &mut self,
22        name: &str,
23        bytes: impl AsRef<[u8]>,
24    ) -> Result<ElfDylib<()>, Error> {
25        let object = ElfBinary::new(name, bytes.as_ref());
26        self.loader.load_dylib(object)
27    }
28
29    pub fn load_file(&mut self, name: &str) -> Result<ElfDylib<()>, Error> {
30        let object = ElfFile::from_path(name)?;
31        self.loader.load_dylib(object)
32    }
33}