diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 8d7cdafc8..dd12ccb93 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -78,6 +78,19 @@ jobs: cd "$GITHUB_WORKSPACE/tools/test-env" ./build_zisk.sh + - name: Check libziskos.a does not bundle std + run: | + cargo +zisk build -p ziskos --release \ + --target riscv64ima-zisk-zkvm-elf \ + --config 'profile.release.lto="fat"' + LIBZISKOS=$(find target -name "libziskos.a" -path "*riscv64ima*" | head -1) + if ar t "$LIBZISKOS" | grep -q std; then + echo "FAIL: libziskos.a contains std object files:" + ar t "$LIBZISKOS" | grep std + exit 1 + fi + echo "OK: libziskos.a contains no std object files" + - name: Build setup env: USE_CACHE_SETUP: "1" diff --git a/definitions/src/lib.rs b/definitions/src/lib.rs index e90181091..ec211f733 100644 --- a/definitions/src/lib.rs +++ b/definitions/src/lib.rs @@ -1,3 +1,5 @@ +#![no_std] + mod syscall; pub use syscall::*; diff --git a/ziskos/entrypoint/src/lib.rs b/ziskos/entrypoint/src/lib.rs index 2918a0356..25e356802 100644 --- a/ziskos/entrypoint/src/lib.rs +++ b/ziskos/entrypoint/src/lib.rs @@ -1,4 +1,6 @@ #![cfg_attr(all(target_os = "zkvm", target_vendor = "zisk"), no_std)] +#![cfg_attr(all(target_os = "zkvm", target_vendor = "zisk"), feature(core_intrinsics))] +#![cfg_attr(all(target_os = "zkvm", target_vendor = "zisk"), allow(internal_features))] #![allow(unexpected_cfgs)] #![allow(unused_imports)] @@ -457,4 +459,13 @@ pub mod ziskos { core::arch::global_asm!(include_str!("dma/memcmp.s")); //core::arch::global_asm!(include_str!("dma/inputcpy.s")); core::arch::global_asm!(include_str!("dma/memset.s")); + + #[panic_handler] + fn panic(info: &core::panic::PanicInfo) -> ! { + if let Some(msg) = info.message().as_str() { + sys_write(1, msg.as_ptr(), msg.len()); + sys_write(1, b"\n".as_ptr(), 1); + } + core::intrinsics::abort() + } } diff --git a/ziskos/entrypoint/src/zisklib/lib/bn254/curve.rs b/ziskos/entrypoint/src/zisklib/lib/bn254/curve.rs index db3e5925d..cb25d9f53 100644 --- a/ziskos/entrypoint/src/zisklib/lib/bn254/curve.rs +++ b/ziskos/entrypoint/src/zisklib/lib/bn254/curve.rs @@ -3,9 +3,6 @@ #[cfg(all(target_os = "zkvm", target_vendor = "zisk"))] use crate::alloc_extern::vec::Vec; -#[cfg(not(all(target_os = "zkvm", target_vendor = "zisk")))] -use num_traits::ops::bytes; - use crate::{ syscalls::{ syscall_bn254_curve_add, syscall_bn254_curve_dbl, SyscallBn254CurveAddParams, diff --git a/zkvm-interface/build.rs b/zkvm-interface/build.rs index cfe0ce2f3..79fffcc9b 100644 --- a/zkvm-interface/build.rs +++ b/zkvm-interface/build.rs @@ -10,6 +10,7 @@ fn main() { .header(&accelerators_header) .header(&io_header) .clang_arg("-std=c11") + .use_core() .allowlist_type("zkvm_.*") .allowlist_var("ZKVM_.*") .allowlist_function("^zkvm_.*|^read_input$|^write_output$") diff --git a/zkvm-interface/src/lib.rs b/zkvm-interface/src/lib.rs index d13c36a11..ec88ab255 100644 --- a/zkvm-interface/src/lib.rs +++ b/zkvm-interface/src/lib.rs @@ -1,3 +1,4 @@ +#![no_std] //! zkVM C Interface Bindings //! //! This crate provides Rust bindings generated by bindgen from the standard zkVM