hopper_runtime/
syscalls.rs1#[inline(always)]
13pub unsafe fn sol_log_data(segments: *const u8, segments_len: u64) {
14 #[cfg(all(target_os = "solana", feature = "hopper-native-backend"))]
15 unsafe {
16 hopper_native::syscalls::sol_log_data(segments, segments_len);
17 }
18
19 #[cfg(all(target_os = "solana", feature = "legacy-pinocchio-compat"))]
20 unsafe {
21 pinocchio::syscalls::sol_log_data(segments, segments_len);
22 }
23
24 #[cfg(all(target_os = "solana", feature = "solana-program-backend"))]
25 {
26 let slices = unsafe {
27 core::slice::from_raw_parts(segments as *const &[u8], segments_len as usize)
28 };
29 ::solana_program::log::sol_log_data(slices);
30 }
31
32 #[cfg(not(target_os = "solana"))]
33 {
34 let _ = (segments, segments_len);
35 }
36}
37
38#[inline(always)]
45pub unsafe fn sol_sha256(vals: *const u8, vals_len: u64, result: *mut u8) {
46 #[cfg(all(target_os = "solana", feature = "hopper-native-backend"))]
47 unsafe {
48 hopper_native::syscalls::sol_sha256(vals, vals_len, result);
49 }
50
51 #[cfg(all(target_os = "solana", feature = "legacy-pinocchio-compat"))]
52 unsafe {
53 pinocchio::syscalls::sol_sha256(vals, vals_len, result);
54 }
55
56 #[cfg(all(target_os = "solana", feature = "solana-program-backend"))]
57 {
58 let slices = unsafe {
59 core::slice::from_raw_parts(vals as *const &[u8], vals_len as usize)
60 };
61 let digest = ::solana_program::hash::hashv(slices).to_bytes();
62 unsafe {
63 core::ptr::copy_nonoverlapping(digest.as_ptr(), result, digest.len());
64 }
65 }
66
67 #[cfg(not(target_os = "solana"))]
68 {
69 let _ = (vals, vals_len, result);
70 }
71}