From 6990f71e154c18cb153cd43f42602836c0ae0de5 Mon Sep 17 00:00:00 2001 From: febo Date: Tue, 25 Nov 2025 13:50:19 +0000 Subject: [PATCH] Add target_arch bpf --- sdk/src/entrypoint/mod.rs | 18 +++++++++--------- sdk/src/sysvars/mod.rs | 16 ++++++++-------- sdk/src/sysvars/slot_hashes/mod.rs | 6 +++--- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/sdk/src/entrypoint/mod.rs b/sdk/src/entrypoint/mod.rs index 7d934235..d0d99afc 100644 --- a/sdk/src/entrypoint/mod.rs +++ b/sdk/src/entrypoint/mod.rs @@ -18,7 +18,7 @@ use crate::{ Address, BPF_ALIGN_OF_U128, MAX_TX_ACCOUNTS, }; -#[cfg(all(target_os = "solana", feature = "alloc"))] +#[cfg(all(any(target_os = "solana", target_arch = "bpf"), feature = "alloc"))] pub use alloc::BumpAllocator; /// Start address of the memory region used for program heap. @@ -440,7 +440,7 @@ pub unsafe fn deserialize( macro_rules! default_panic_handler { () => { /// Default panic handler. - #[cfg(target_os = "solana")] + #[cfg(any(target_os = "solana", target_arch = "bpf"))] #[no_mangle] fn custom_panic(info: &core::panic::PanicInfo<'_>) { if let Some(location) = info.location() { @@ -464,7 +464,7 @@ macro_rules! default_panic_handler { macro_rules! nostd_panic_handler { () => { /// A panic handler for `no_std`. - #[cfg(target_os = "solana")] + #[cfg(any(target_os = "solana", target_arch = "bpf"))] #[panic_handler] fn handler(info: &core::panic::PanicInfo<'_>) -> ! { if let Some(location) = info.location() { @@ -490,7 +490,7 @@ macro_rules! nostd_panic_handler { /// `"solana"`. /// /// This links the `std` library, which will set up a default panic handler. - #[cfg(not(target_os = "solana"))] + #[cfg(not(any(target_os = "solana", target_arch = "bpf")))] mod __private_panic_handler { extern crate std as __std; } @@ -504,7 +504,7 @@ macro_rules! nostd_panic_handler { #[macro_export] macro_rules! default_allocator { () => { - #[cfg(target_os = "solana")] + #[cfg(any(target_os = "solana", target_arch = "bpf"))] #[global_allocator] static A: $crate::entrypoint::BumpAllocator = $crate::entrypoint::BumpAllocator { start: $crate::entrypoint::HEAP_START_ADDRESS as usize, @@ -515,7 +515,7 @@ macro_rules! default_allocator { /// `"solana"`. /// /// This links the `std` library, which will set up a default global allocator. - #[cfg(not(target_os = "solana"))] + #[cfg(not(any(target_os = "solana", target_arch = "bpf")))] mod __private_alloc { extern crate std as __std; } @@ -534,7 +534,7 @@ macro_rules! default_allocator { #[macro_export] macro_rules! no_allocator { () => { - #[cfg(target_os = "solana")] + #[cfg(any(target_os = "solana", target_arch = "bpf"))] #[global_allocator] static A: $crate::entrypoint::NoAllocator = $crate::entrypoint::NoAllocator; @@ -582,7 +582,7 @@ macro_rules! no_allocator { /// `"solana"`. /// /// This links the `std` library, which will set up a default global allocator. - #[cfg(not(target_os = "solana"))] + #[cfg(not(any(target_os = "solana", target_arch = "bpf")))] mod __private_alloc { extern crate std as __std; } @@ -606,7 +606,7 @@ unsafe impl GlobalAlloc for NoAllocator { } } -#[cfg(all(target_os = "solana", feature = "alloc"))] +#[cfg(all(any(target_os = "solana", target_arch = "bpf"), feature = "alloc"))] mod alloc { use core::{ alloc::{GlobalAlloc, Layout}, diff --git a/sdk/src/sysvars/mod.rs b/sdk/src/sysvars/mod.rs index c8d86f1c..9d820170 100644 --- a/sdk/src/sysvars/mod.rs +++ b/sdk/src/sysvars/mod.rs @@ -1,9 +1,9 @@ //! Provides access to cluster system accounts. -#[cfg(not(target_os = "solana"))] +#[cfg(not(any(target_os = "solana", target_arch = "bpf")))] use core::hint::black_box; -#[cfg(target_os = "solana")] +#[cfg(any(target_os = "solana", target_arch = "bpf"))] use crate::syscalls::sol_get_sysvar; use crate::{error::ProgramError, Address}; @@ -17,13 +17,13 @@ pub mod slot_hashes; /// the sysvar data. // // Defined in the bpf loader as [`OFFSET_LENGTH_EXCEEDS_SYSVAR`](https://github.com/anza-xyz/agave/blob/master/programs/bpf_loader/src/syscalls/sysvar.rs#L172). -#[cfg(target_os = "solana")] +#[cfg(any(target_os = "solana", target_arch = "bpf"))] const OFFSET_LENGTH_EXCEEDS_SYSVAR: u64 = 1; /// Return value indicating that the sysvar was not found. // // Defined in the bpf loader as [`SYSVAR_NOT_FOUND`](https://github.com/anza-xyz/agave/blob/master/programs/bpf_loader/src/syscalls/sysvar.rs#L171). -#[cfg(target_os = "solana")] +#[cfg(any(target_os = "solana", target_arch = "bpf"))] const SYSVAR_NOT_FOUND: u64 = 2; /// A type that holds sysvar data. @@ -49,10 +49,10 @@ macro_rules! impl_sysvar_get { let mut var = core::mem::MaybeUninit::::uninit(); let var_addr = var.as_mut_ptr() as *mut _ as *mut u8; - #[cfg(target_os = "solana")] + #[cfg(any(target_os = "solana", target_arch = "bpf"))] let result = unsafe { $crate::syscalls::$syscall_name(var_addr) }; - #[cfg(not(target_os = "solana"))] + #[cfg(not(any(target_os = "solana", target_arch = "bpf")))] let result = core::hint::black_box(var_addr as *const _ as u64); match result { @@ -81,7 +81,7 @@ pub unsafe fn get_sysvar_unchecked( offset: usize, len: usize, ) -> Result<(), ProgramError> { - #[cfg(target_os = "solana")] + #[cfg(any(target_os = "solana", target_arch = "bpf"))] { let result = unsafe { sol_get_sysvar( @@ -101,7 +101,7 @@ pub unsafe fn get_sysvar_unchecked( } } - #[cfg(not(target_os = "solana"))] + #[cfg(not(any(target_os = "solana", target_arch = "bpf")))] { black_box((dst, sysvar_id, offset, len)); Ok(()) diff --git a/sdk/src/sysvars/slot_hashes/mod.rs b/sdk/src/sysvars/slot_hashes/mod.rs index a61bd63c..4ccb3c73 100644 --- a/sdk/src/sysvars/slot_hashes/mod.rs +++ b/sdk/src/sysvars/slot_hashes/mod.rs @@ -71,13 +71,13 @@ pub struct SlotHashes> { /// Log a `Hash` from a program. pub fn log(hash: &Hash) { - #[cfg(target_os = "solana")] + #[cfg(any(target_os = "solana", target_arch = "bpf"))] // SAFETY: `sol_log_pubkey` expects a valid pointer to a 32-byte array. unsafe { solana_address::syscalls::sol_log_pubkey(hash.as_ptr()); } - #[cfg(not(target_os = "solana"))] + #[cfg(not(any(target_os = "solana", target_arch = "bpf")))] core::hint::black_box(hash); } @@ -311,7 +311,7 @@ impl SlotHashes> { crate::sysvars::get_sysvar_unchecked(buffer_ptr, &SLOTHASHES_ID, 0, MAX_SIZE)?; // For tests on builds that don't actually fill the buffer. - #[cfg(not(target_os = "solana"))] + #[cfg(not(any(target_os = "solana", target_arch = "bpf")))] core::ptr::write_bytes(buffer_ptr, 0, NUM_ENTRIES_SIZE); Ok(())