From 2785ccf14553b337cb88adfcc176e399eb93a871 Mon Sep 17 00:00:00 2001 From: martinjrobins Date: Sat, 18 Apr 2026 16:53:22 +0000 Subject: [PATCH] feat: impl emit for object module --- diffsl/src/execution/object/mod.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/diffsl/src/execution/object/mod.rs b/diffsl/src/execution/object/mod.rs index 09b6bf5..e247ec7 100644 --- a/diffsl/src/execution/object/mod.rs +++ b/diffsl/src/execution/object/mod.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use super::{ mmap::{MappedSection, MmapOptions}, - module::{CodegenModule, CodegenModuleJit, CodegenModuleLink}, + module::{CodegenModule, CodegenModuleEmit, CodegenModuleJit, CodegenModuleLink}, relocations::{ handle_jump_entry, handle_relocation, is_jump_table_entry, relocation_target_section, symbol_offset, JumpTableEntry, @@ -12,6 +12,7 @@ use super::{ use object::{Object, ObjectSection, ObjectSymbol, SectionKind}; pub struct ObjectModule { + object_buffer: Vec, sections: HashMap, symbols: HashMap, code_section_name: String, @@ -163,6 +164,7 @@ impl CodegenModuleLink for ObjectModule { } Ok(Self { + object_buffer: buffer.to_vec(), sections: mapped_sections, symbols: symbol_map, code_section_name: text_sec_name.to_string(), @@ -170,6 +172,12 @@ impl CodegenModuleLink for ObjectModule { } } +impl CodegenModuleEmit for ObjectModule { + fn to_object(&self) -> Result> { + Ok(self.object_buffer.clone()) + } +} + impl CodegenModuleJit for ObjectModule { fn jit(&mut self) -> Result> { // map symbols to addresses