1use formatic::{Arch, BinFormat, Decl, Endian, Link, ObjectBuilder, Scope};
2
3pub fn main() -> Result<(), Box<dyn std::error::Error>> {
4 let mut obj = ObjectBuilder::new("test.o");
5
6 obj.decls(vec![
7 ("callme", Decl::Function(Scope::Import)),
8 ("call", Decl::Function(Scope::Export)),
9 ("data", Decl::Data(Scope::Export)),
10 ]);
11
12 obj.define(
13 "call",
14 vec![
15 0xF3, 0x0F, 0x1E, 0xFA, 0x55, 0x48, 0x89, 0xE5, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xC3, ],
22 );
23
24 obj.define("data",
25 b"Hello World".into()
26 );
27
28 obj.link(Link {
29 from: "call".into(),
30 to: "callme".into(),
31 at: 9,
32 });
33
34 obj.write(BinFormat::host(), Arch::host(), Endian::host())?;
35
36 Ok(())
37}