From a30b4022fa85320806b8b4d004ea713b68df6566 Mon Sep 17 00:00:00 2001 From: Kamen Mladenov Date: Thu, 27 Mar 2025 13:25:05 +0200 Subject: feat(zkvms/risc0): Implement elf encoding Recently, RISC0 have added code to their SDK which adds magic bytes to the (already compiled) ELF. Since we're taking another route than intended, we'll need to replicate this step too. We're doing things in a different fashion, because their SDK normally compiles the guest, and doesn't allow you to supply a prebuilt ELF. --- zkvms/risc0/guest_elf_patch/src/main.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 zkvms/risc0/guest_elf_patch/src/main.rs (limited to 'zkvms/risc0/guest_elf_patch/src/main.rs') diff --git a/zkvms/risc0/guest_elf_patch/src/main.rs b/zkvms/risc0/guest_elf_patch/src/main.rs new file mode 100644 index 0000000..6999ab4 --- /dev/null +++ b/zkvms/risc0/guest_elf_patch/src/main.rs @@ -0,0 +1,11 @@ +use risc0_binfmt::ProgramBinary; +use risc0_zkos_v1compat::V1COMPAT_ELF; + +static ELF: &[u8] = include_bytes!("../../host/src/guest"); + +// https://github.com/risc0/risc0/blob/fee2e19a3c49b3da492403de5e2d011c890e52de/risc0/build/src/lib.rs#L179-L187 +fn main() { + let binary = ProgramBinary::new(&ELF, V1COMPAT_ELF); + let elf = binary.encode(); + std::fs::write("../host/src/guest", &elf).expect("couldn't add magic bytes to elf!"); +} -- cgit v1.2.3