Rust BPF program cleanup (#7990)

This commit is contained in:
Jack May 2020-01-27 18:27:44 -08:00 committed by GitHub
parent fd7d5cbe0d
commit 1596c961d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 119 additions and 124 deletions

186
programs/bpf/Cargo.lock generated
View File

@ -1926,165 +1926,165 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "solana-bpf-loader-program"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.23.0",
"solana-sdk 0.23.0",
"solana-logger 0.24.0",
"solana-sdk 0.24.0",
"solana_rbpf 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-bpf-programs"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpf-loader-program 0.23.0",
"solana-logger 0.23.0",
"solana-runtime 0.23.0",
"solana-sdk 0.23.0",
"solana-bpf-loader-program 0.24.0",
"solana-logger 0.24.0",
"solana-runtime 0.24.0",
"solana-sdk 0.24.0",
"solana_rbpf 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-bpf-rust-128bit"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-bpf-rust-128bit-dep 0.23.0",
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-bpf-rust-128bit-dep 0.24.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-128bit-dep"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-alloc"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-dep-crate"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-dup-accounts"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-external-spend"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-iter"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-many-args"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-bpf-rust-many-args-dep 0.23.0",
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-bpf-rust-many-args-dep 0.24.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-many-args-dep"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-noop"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-panic"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-param-passing"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-bpf-rust-param-passing-dep 0.23.0",
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-bpf-rust-param-passing-dep 0.24.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-param-passing-dep"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-bpf-rust-sysval"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"solana-sdk 0.23.0",
"solana-sdk-bpf-test 0.23.0",
"solana-sdk 0.24.0",
"solana-sdk-bpf-test 0.24.0",
]
[[package]]
name = "solana-config-program"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.23.0",
"solana-sdk 0.23.0",
"solana-logger 0.24.0",
"solana-sdk 0.24.0",
]
[[package]]
name = "solana-crate-features"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"backtrace 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)",
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2107,7 +2107,7 @@ dependencies = [
[[package]]
name = "solana-logger"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2116,30 +2116,30 @@ dependencies = [
[[package]]
name = "solana-measure"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-metrics 0.23.0",
"solana-sdk 0.23.0",
"solana-metrics 0.24.0",
"solana-sdk 0.24.0",
]
[[package]]
name = "solana-metrics"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"reqwest 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.23.0",
"solana-sdk 0.24.0",
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-rayon-threadlimit"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2147,7 +2147,7 @@ dependencies = [
[[package]]
name = "solana-runtime"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"bv 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2164,22 +2164,22 @@ dependencies = [
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpf-loader-program 0.23.0",
"solana-logger 0.23.0",
"solana-measure 0.23.0",
"solana-metrics 0.23.0",
"solana-rayon-threadlimit 0.23.0",
"solana-sdk 0.23.0",
"solana-stake-program 0.23.0",
"solana-storage-program 0.23.0",
"solana-vote-program 0.23.0",
"solana-bpf-loader-program 0.24.0",
"solana-logger 0.24.0",
"solana-measure 0.24.0",
"solana-metrics 0.24.0",
"solana-rayon-threadlimit 0.24.0",
"solana-sdk 0.24.0",
"solana-stake-program 0.24.0",
"solana-storage-program 0.24.0",
"solana-vote-program 0.24.0",
"sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-sdk"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2203,19 +2203,19 @@ dependencies = [
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
"sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-crate-features 0.23.0",
"solana-logger 0.23.0",
"solana-sdk-macro 0.23.0",
"solana-crate-features 0.24.0",
"solana-logger 0.24.0",
"solana-sdk-macro 0.24.0",
"thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-sdk-bpf-test"
version = "0.23.0"
version = "0.24.0"
[[package]]
name = "solana-sdk-macro"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2225,7 +2225,7 @@ dependencies = [
[[package]]
name = "solana-stake-program"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2234,17 +2234,17 @@ dependencies = [
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-config-program 0.23.0",
"solana-logger 0.23.0",
"solana-metrics 0.23.0",
"solana-sdk 0.23.0",
"solana-vote-program 0.23.0",
"solana-config-program 0.24.0",
"solana-logger 0.24.0",
"solana-metrics 0.24.0",
"solana-sdk 0.24.0",
"solana-vote-program 0.24.0",
"thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-storage-program"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2253,13 +2253,13 @@ dependencies = [
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.23.0",
"solana-sdk 0.23.0",
"solana-logger 0.24.0",
"solana-sdk 0.24.0",
]
[[package]]
name = "solana-vote-program"
version = "0.23.0"
version = "0.24.0"
dependencies = [
"bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2267,9 +2267,9 @@ dependencies = [
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.23.0",
"solana-metrics 0.23.0",
"solana-sdk 0.23.0",
"solana-logger 0.24.0",
"solana-metrics 0.24.0",
"solana-sdk 0.24.0",
"thiserror 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
]

View File

@ -3,10 +3,8 @@
#[macro_use]
extern crate alloc;
extern crate solana_sdk;
use solana_sdk::entrypoint::SUCCESS;
use solana_sdk::info;
use std::alloc::Layout;
use std::mem;
use solana_sdk::{entrypoint::SUCCESS, info};
use std::{alloc::Layout, mem};
#[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
@ -22,7 +20,7 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
}
unsafe {
// Test modest allocation and deallocation
// Test modest allocation and de-allocation
let layout = Layout::from_size_align(100, mem::align_of::<u8>()).unwrap();
let ptr = alloc::alloc::alloc(layout);

View File

@ -8,7 +8,7 @@ use solana_sdk::{
entrypoint!(process_instruction);
fn process_instruction(
_program_id: &Pubkey,
accounts: &mut [AccountInfo],
accounts: &[AccountInfo],
instruction_data: &[u8],
) -> u32 {
const FAILURE: u32 = 1;

View File

@ -6,7 +6,7 @@ use solana_sdk::{account_info::AccountInfo, entrypoint, entrypoint::SUCCESS, pub
entrypoint!(process_instruction);
fn process_instruction(
_program_id: &Pubkey,
accounts: &mut [AccountInfo],
accounts: &[AccountInfo],
_instruction_data: &[u8],
) -> u32 {
// account 0 is the mint and not owned by this program, any debit of its lamports

View File

@ -1,8 +1,7 @@
//! @brief Example Rust-based BPF program tests loop iteration
extern crate solana_sdk;
use solana_sdk::entrypoint::SUCCESS;
use solana_sdk::info;
use solana_sdk::{entrypoint::SUCCESS, info};
#[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
@ -22,7 +21,7 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
// Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]

View File

@ -2,8 +2,7 @@
mod helper;
extern crate solana_sdk;
use solana_sdk::entrypoint::SUCCESS;
use solana_sdk::info;
use solana_sdk::{entrypoint::SUCCESS, info};
#[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
@ -30,7 +29,7 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
// Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]

View File

@ -51,7 +51,7 @@ pub fn many_args_sret(
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
// Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]

View File

@ -22,7 +22,7 @@ fn return_sstruct() -> SStruct {
entrypoint!(process_instruction);
fn process_instruction(
program_id: &Pubkey,
accounts: &mut [AccountInfo],
accounts: &[AccountInfo],
instruction_data: &[u8],
) -> u32 {
info!("Program identifier:");

View File

@ -2,8 +2,7 @@
extern crate solana_sdk;
use solana_bpf_rust_param_passing_dep::{Data, TestDep};
use solana_sdk::entrypoint::SUCCESS;
use solana_sdk::info;
use solana_sdk::{entrypoint::SUCCESS, info};
#[no_mangle]
pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
@ -27,7 +26,7 @@ pub extern "C" fn entrypoint(_input: *mut u8) -> u32 {
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
// Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]

View File

@ -27,7 +27,7 @@ impl<'a> TestDep {
#[cfg(test)]
mod test {
use super::*;
// Pulls in the stubs requried for `info!()`
// Pulls in the stubs required for `info!()`
solana_sdk_bpf_test::stubs!();
#[test]

View File

@ -19,7 +19,7 @@ use solana_sdk::{
entrypoint!(process_instruction);
fn process_instruction(
_program_id: &Pubkey,
accounts: &mut [AccountInfo],
accounts: &[AccountInfo],
_instruction_data: &[u8],
) -> u32 {
// Clock

View File

@ -1,4 +1,4 @@
//! @brief Solana Rust-based BPF program entrypoint and its parameter types
//! @brief Solana Rust-based BPF program entry point and its parameter types
#![cfg(feature = "program")]
@ -16,22 +16,22 @@ use std::{
slice::{from_raw_parts, from_raw_parts_mut},
};
/// User implemented program entrypoint
/// User implemented function to process an instruction
///
/// program_id: Program ID of the currently executing program
/// accounts: Accounts passed as part of the instruction
/// data: Instruction data
/// instruction_data: Instruction data
pub type ProcessInstruction =
fn(program_id: &Pubkey, accounts: &mut [AccountInfo], instruction_data: &[u8]) -> u32;
fn(program_id: &Pubkey, accounts: &[AccountInfo], instruction_data: &[u8]) -> u32;
/// Programs indicate success with a return value of 0
pub const SUCCESS: u32 = 0;
/// Declare entrypoint of the program.
/// Declare the entry point of the program.
///
/// Deserialize the program input parameters and call
/// the user defined `ProcessInstruction`. Users must call
/// this macro otherwise an entrypoint for
/// Deserialize the program input arguments and call
/// the user defined `ProcessInstruction` function.
/// Users must call this macro otherwise an entry point for
/// their program will not be created.
#[macro_export]
macro_rules! entrypoint {
@ -40,15 +40,15 @@ macro_rules! entrypoint {
#[no_mangle]
pub unsafe extern "C" fn entrypoint(input: *mut u8) -> u32 {
unsafe {
let (program_id, mut accounts, instruction_data) =
let (program_id, accounts, instruction_data) =
$crate::entrypoint::deserialize(input);
$process_instruction(&program_id, &mut accounts, &instruction_data)
$process_instruction(&program_id, &accounts, &instruction_data)
}
}
};
}
/// Deserialize the input parameters
/// Deserialize the input arguments
///
/// # Safety
#[allow(clippy::type_complexity)]