From 7efee58c4dec58687d5a2c48fde1ef59561494a4 Mon Sep 17 00:00:00 2001 From: Michael Sippel Date: Sun, 12 May 2024 04:20:45 +0200 Subject: [PATCH] linker: add link_relative() --- src/linker.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/linker.rs b/src/linker.rs index 02d9d57..1095954 100644 --- a/src/linker.rs +++ b/src/linker.rs @@ -47,6 +47,20 @@ impl Linker { Ok(bytecode) } + pub fn link_relative(self, symbol: &String) -> Result, LinkError> { + Ok(self.link_partial()? + .into_iter() + .map(|w| match w { + AssemblyWord::Symbol(LinkAddr::Absolute(addr)) => + AssemblyWord::Symbol(LinkAddr::Relative { + symbol: symbol.clone(), + offset: addr + }), + w => w + }) + .collect()) + } + pub fn link_total(self) -> Result, LinkError> { self.link_partial()? .into_iter()