From f84e88f0a2f1e3780eb996e135913b320e85ab01 Mon Sep 17 00:00:00 2001 From: Jack May Date: Tue, 30 Mar 2021 12:16:21 -0700 Subject: [PATCH] Cleanup nits (#16211) --- programs/bpf/Cargo.lock | 2 +- programs/bpf/Cargo.toml | 2 +- programs/bpf/build.rs | 2 +- .../bpf/rust/{sysval => sysvar}/Cargo.toml | 4 +- .../bpf/rust/{sysval => sysvar}/src/lib.rs | 2 +- programs/bpf/tests/programs.rs | 2 +- programs/bpf_loader/src/syscalls.rs | 51 ++++++++++--------- sdk/program/src/instruction.rs | 9 ++++ 8 files changed, 42 insertions(+), 32 deletions(-) rename programs/bpf/rust/{sysval => sysvar}/Cargo.toml (83%) rename programs/bpf/rust/{sysval => sysvar}/src/lib.rs (96%) diff --git a/programs/bpf/Cargo.lock b/programs/bpf/Cargo.lock index ff135257b2..7a3dfd248a 100644 --- a/programs/bpf/Cargo.lock +++ b/programs/bpf/Cargo.lock @@ -2863,7 +2863,7 @@ dependencies = [ ] [[package]] -name = "solana-bpf-rust-sysval" +name = "solana-bpf-rust-sysvar" version = "1.7.0" dependencies = [ "solana-program 1.7.0", diff --git a/programs/bpf/Cargo.toml b/programs/bpf/Cargo.toml index 98b108f739..991a6715b6 100644 --- a/programs/bpf/Cargo.toml +++ b/programs/bpf/Cargo.toml @@ -73,7 +73,7 @@ members = [ "rust/sha256", "rust/spoof1", "rust/spoof1_system", - "rust/sysval", + "rust/sysvar", "rust/upgradeable", "rust/upgraded", ] diff --git a/programs/bpf/build.rs b/programs/bpf/build.rs index 79bb1ec3c9..03a436acee 100644 --- a/programs/bpf/build.rs +++ b/programs/bpf/build.rs @@ -88,7 +88,7 @@ fn main() { "sha256", "spoof1", "spoof1_system", - "sysval", + "sysvar", "upgradeable", "upgraded", ]; diff --git a/programs/bpf/rust/sysval/Cargo.toml b/programs/bpf/rust/sysvar/Cargo.toml similarity index 83% rename from programs/bpf/rust/sysval/Cargo.toml rename to programs/bpf/rust/sysvar/Cargo.toml index 19d6350e72..4da8936f60 100644 --- a/programs/bpf/rust/sysval/Cargo.toml +++ b/programs/bpf/rust/sysvar/Cargo.toml @@ -1,12 +1,12 @@ [package] -name = "solana-bpf-rust-sysval" +name = "solana-bpf-rust-sysvar" version = "1.7.0" description = "Solana BPF test program written in Rust" authors = ["Solana Maintainers "] repository = "https://github.com/solana-labs/solana" license = "Apache-2.0" homepage = "https://solana.com/" -documentation = "https://docs.rs/solana-bpf-rust-sysval" +documentation = "https://docs.rs/solana-bpf-rust-sysvar" edition = "2018" [dependencies] diff --git a/programs/bpf/rust/sysval/src/lib.rs b/programs/bpf/rust/sysvar/src/lib.rs similarity index 96% rename from programs/bpf/rust/sysval/src/lib.rs rename to programs/bpf/rust/sysvar/src/lib.rs index 062a6fc372..7bdea1bb73 100644 --- a/programs/bpf/rust/sysval/src/lib.rs +++ b/programs/bpf/rust/sysvar/src/lib.rs @@ -1,4 +1,4 @@ -//! @brief Example Rust-based BPF program that tests sysval use +//! @brief Example Rust-based BPF program that tests sysvar use extern crate solana_program; use solana_program::{ diff --git a/programs/bpf/tests/programs.rs b/programs/bpf/tests/programs.rs index 4854345b4c..87f1dabfae 100644 --- a/programs/bpf/tests/programs.rs +++ b/programs/bpf/tests/programs.rs @@ -438,7 +438,7 @@ fn test_program_bpf_sanity() { ("solana_bpf_rust_ristretto", true), ("solana_bpf_rust_sanity", true), ("solana_bpf_rust_sha256", true), - ("solana_bpf_rust_sysval", true), + ("solana_bpf_rust_sysvar", true), ]); } diff --git a/programs/bpf_loader/src/syscalls.rs b/programs/bpf_loader/src/syscalls.rs index 42722d16d6..71a071db0b 100644 --- a/programs/bpf_loader/src/syscalls.rs +++ b/programs/bpf_loader/src/syscalls.rs @@ -111,13 +111,6 @@ pub fn register_syscalls( syscall_registry.register_syscall_by_name(b"sol_log_pubkey", SyscallLogPubkey::call)?; - syscall_registry.register_syscall_by_name(b"sol_sha256", SyscallSha256::call)?; - - if invoke_context.is_feature_active(&ristretto_mul_syscall_enabled::id()) { - syscall_registry - .register_syscall_by_name(b"sol_ristretto_mul", SyscallRistrettoMul::call)?; - } - syscall_registry.register_syscall_by_name( b"sol_create_program_address", SyscallCreateProgramAddress::call, @@ -126,6 +119,14 @@ pub fn register_syscalls( b"sol_try_find_program_address", SyscallTryFindProgramAddress::call, )?; + + syscall_registry.register_syscall_by_name(b"sol_sha256", SyscallSha256::call)?; + + if invoke_context.is_feature_active(&ristretto_mul_syscall_enabled::id()) { + syscall_registry + .register_syscall_by_name(b"sol_ristretto_mul", SyscallRistrettoMul::call)?; + } + syscall_registry .register_syscall_by_name(b"sol_invoke_signed_c", SyscallInvokeSignedC::call)?; syscall_registry @@ -203,6 +204,24 @@ pub fn bind_syscall_context_objects<'a>( None, )?; + vm.bind_syscall_context_object( + Box::new(SyscallCreateProgramAddress { + cost: bpf_compute_budget.create_program_address_units, + compute_meter: invoke_context.get_compute_meter(), + loader_id, + }), + None, + )?; + + vm.bind_syscall_context_object( + Box::new(SyscallTryFindProgramAddress { + cost: bpf_compute_budget.create_program_address_units, + compute_meter: invoke_context.get_compute_meter(), + loader_id, + }), + None, + )?; + vm.bind_syscall_context_object( Box::new(SyscallSha256 { sha256_base_cost: bpf_compute_budget.sha256_base_cost, @@ -224,24 +243,6 @@ pub fn bind_syscall_context_objects<'a>( }), ); - vm.bind_syscall_context_object( - Box::new(SyscallCreateProgramAddress { - cost: bpf_compute_budget.create_program_address_units, - compute_meter: invoke_context.get_compute_meter(), - loader_id, - }), - None, - )?; - - vm.bind_syscall_context_object( - Box::new(SyscallTryFindProgramAddress { - cost: bpf_compute_budget.create_program_address_units, - compute_meter: invoke_context.get_compute_meter(), - loader_id, - }), - None, - )?; - // Cross-program invocation syscalls let invoke_context = Rc::new(RefCell::new(invoke_context)); diff --git a/sdk/program/src/instruction.rs b/sdk/program/src/instruction.rs index 8a970afb19..041889020f 100644 --- a/sdk/program/src/instruction.rs +++ b/sdk/program/src/instruction.rs @@ -176,30 +176,39 @@ pub enum InstructionError { #[error("Cross-program invocation with unauthorized signer or writable account")] PrivilegeEscalation, + /// Failed to create program execution environment #[error("Failed to create program execution environment")] ProgramEnvironmentSetupFailure, + /// Program failed to complete #[error("Program failed to complete")] ProgramFailedToComplete, + /// Program failed to compile #[error("Program failed to compile")] ProgramFailedToCompile, + /// Account is immutable #[error("Account is immutable")] Immutable, + /// Incorrect authority provided #[error("Incorrect authority provided")] IncorrectAuthority, + /// Failed to serialize or deserialize account data #[error("Failed to serialize or deserialize account data: {0}")] BorshIoError(String), + /// An account does not have enough lamports to be rent-exempt #[error("An account does not have enough lamports to be rent-exempt")] AccountNotRentExempt, + /// Invalid account owner #[error("Invalid account owner")] InvalidAccountOwner, + /// Program arithmetic overflowed #[error("Program arithmetic overflowed")] ArithmeticOverflow, }