chore: update Solana docs and code comments that specify "BPF" to "SBF"

This commit is contained in:
Dmitri Makarov 2022-10-28 14:30:31 -04:00 committed by Dmitri Makarov
parent 37507a2de6
commit 34865d032c
136 changed files with 206 additions and 216 deletions

View File

@ -1398,7 +1398,7 @@ fn process_show(
.into())
}
} else {
Err(format!("{} is not a BPF program", account_pubkey).into())
Err(format!("{} is not an SBF program", account_pubkey).into())
}
} else {
Err(format!("Unable to find the account {}", account_pubkey).into())
@ -1468,7 +1468,7 @@ fn process_dump(
.into())
}
} else {
Err(format!("{} is not a BPF program", account_pubkey).into())
Err(format!("{} is not an SBF program", account_pubkey).into())
}
} else {
Err(format!("Unable to find the account {}", account_pubkey).into())

View File

@ -392,7 +392,7 @@ struct QosServiceMetricsStats {
/// accumulated estimated builtin programs Compute Units to be packed into block
estimated_builtins_execute_cu: AtomicU64,
/// accumulated estimated BPF program Compute Units to be packed into block
/// accumulated estimated SBF program Compute Units to be packed into block
estimated_bpf_execute_cu: AtomicU64,
/// accumulated actual program Compute Units that have been packed into block

View File

@ -3,7 +3,7 @@
| Solana Runtime |
| |
.----------. | .------------. .------------. |
| Program | | | BPF | | Executable | |
| Program | | | SBF | | Executable | |
| Author +------>| Bytecode +-->| Account | |
| | | | Verifier | | | |
`----------` | `------------` `------------` |
@ -12,7 +12,7 @@
| | LoadAccounts |
| V |
.----------. | .------------. .-------------. |
| | | | BPF | | BPF | |
| | | | SBF | | SBF | |
| Client +------>| Loader +-->| Interpreter | |
| | | | | | | |
`----------` | `------------` `-------------` |

View File

@ -99,7 +99,7 @@ For example
export RUST_LOG=solana=info,solana::banking_stage=debug
```
- To enable BPF program logging:
- To enable SBF program logging:
```bash
export RUST_LOG=solana_bpf_loader=trace

View File

@ -24,7 +24,7 @@ and so this document attempts to clarify and codify the process for new releases
### Release Cadence
The Solana RPC API, Rust SDK, CLI tooling, and BPF Program SDK are all updated and shipped
The Solana RPC API, Rust SDK, CLI tooling, and SBF Program SDK are all updated and shipped
along with each Solana software release and should always be compatible between `PATCH`
updates of a particular `MINOR` version release.

View File

@ -4160,7 +4160,7 @@ Example:
"signature": "5h6xBEauJ3PK6SWCZ1PGjBvj8vDdWG3KpwATGy1ARAXFSDwt8GFXM7W5Ncn16wmqokgpiKRLuS83KUxyZyv2sUYv",
"err": null,
"logs": [
"BPF program 83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri success"
"SBF program 83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri success"
]
}
},

View File

@ -11,7 +11,7 @@ Solana's Rust crates are [published to crates.io][crates.io] and can be found
Some important crates:
- [`solana-program`] — Imported by programs running on Solana, compiled
to BPF. This crate contains many fundamental data types and is re-exported from
to SBF. This crate contains many fundamental data types and is re-exported from
[`solana-sdk`], which cannot be imported from a Solana program.
- [`solana-sdk`] — The basic off-chain SDK, it re-exports

View File

@ -14,7 +14,7 @@ Both types of programs run on top of the [Sealevel runtime](https://medium.com/s
- Programs can own other Accounts
- Programs can only _change the data_ or _debit_ accounts they own
- Any program can _read_ or _credit_ another account
- Programs are considered stateless since the primary data stored in a program account is the compiled BPF code
- Programs are considered stateless since the primary data stored in a program account is the compiled SBF code
- Programs can be upgraded by their owner (see more on that below)
## Types of programs

View File

@ -43,15 +43,15 @@ limited but there are many points of possible failures. The following are
possible failure points and information about what errors to expect and where to
get more information:
- The BPF loader may fail to parse the program, this should not happen since the
- The SBF loader may fail to parse the program, this should not happen since the
loader has already _finalized_ the program's account data.
- `InstructionError::InvalidAccountData` will be returned as part of the
transaction error.
- The BPF loader may fail to setup the program's execution environment
- The SBF loader may fail to setup the program's execution environment
- `InstructionError::Custom(0x0b9f_0001)` will be returned as part of the
transaction error. "0x0b9f_0001" is the hexadecimal representation of
[`VirtualMachineCreationFailed`](https://github.com/solana-labs/solana/blob/bc7133d7526a041d1aaee807b80922baa89b6f90/programs/bpf_loader/src/lib.rs#L44).
- The BPF loader may have detected a fatal error during program executions
- The SBF loader may have detected a fatal error during program executions
(things like panics, memory violations, system call errors, etc...)
- `InstructionError::Custom(0x0b9f_0002)` will be returned as part of the
transaction error. "0x0b9f_0002" is the hexadecimal representation of
@ -71,7 +71,7 @@ logs](debugging.md#logging).
For example, an access violation involving the stack will look something like
this:
`BPF program 4uQeVj5tqViQh7yWWGStvkEG1Zmhx6uasJtWCJziofM failed: out of bounds memory store (insn #615), addr 0x200001e38/8`
`SBF program 4uQeVj5tqViQh7yWWGStvkEG1Zmhx6uasJtWCJziofM failed: out of bounds memory store (insn #615), addr 0x200001e38/8`
## Monitoring Compute Budget Consumption
@ -89,7 +89,7 @@ for more information.
## ELF Dump
The BPF shared object internals can be dumped to a text file to gain more
The SBF shared object internals can be dumped to a text file to gain more
insight into a program's composition and what it may be doing at runtime.
- [Create a dump file of a Rust program](developing-rust.md#elf-dump)
@ -97,14 +97,14 @@ insight into a program's composition and what it may be doing at runtime.
## Instruction Tracing
During execution the runtime BPF interpreter can be configured to log a trace
message for each BPF instruction executed. This can be very helpful for things
During execution the runtime SBF interpreter can be configured to log a trace
message for each SBF instruction executed. This can be very helpful for things
like pin-pointing the runtime context leading up to a memory access violation.
The trace logs together with the [ELF dump](#elf-dump) can provide a lot of
insight (though the traces produce a lot of information).
To turn on BPF interpreter trace messages in a local cluster configure the
To turn on SBF interpreter trace messages in a local cluster configure the
`solana_rbpf` level in `RUST_LOG` to `trace`. For example:
`export RUST_LOG=solana_rbpf=trace`

View File

@ -5,7 +5,7 @@ title: "Deploying Programs"
![SDK tools](/img/sdk-tools.svg)
As shown in the diagram above, a program author creates a program, compiles it
to an ELF shared object containing BPF bytecode, and uploads it to the Solana
to an ELF shared object containing SBF bytecode, and uploads it to the Solana
cluster with a special _deploy_ transaction. The cluster makes it available to
clients via a _program ID_. The program ID is an _address_ specified when
deploying and is used to reference the program in subsequent transactions.

View File

@ -39,14 +39,14 @@ using the `no-entrypoint` feature.
At a minimum, Solana Rust programs must pull in the
[solana-program](https://crates.io/crates/solana-program) crate.
Solana BPF programs have some [restrictions](#restrictions) that may prevent the
Solana SBF programs have some [restrictions](#restrictions) that may prevent the
inclusion of some crates as dependencies or require special handling.
For example:
- Crates that require the architecture be a subset of the ones supported by the
official toolchain. There is no workaround for this unless that crate is
forked and BPF added to that those architecture checks.
forked and SBF added to that those architecture checks.
- Crates may depend on `rand` which is not supported in Solana's deterministic
program environment. To include a `rand` dependent crate refer to [Depending
on Rand](#depending-on-rand).
@ -68,7 +68,7 @@ machine which can be used for unit testing:
$ cargo build
```
To build a specific program, such as SPL Token, for the Solana BPF target which
To build a specific program, such as SPL Token, for the Solana SBF target which
can be deployed to the cluster:
```bash
@ -305,12 +305,12 @@ Rust's `panic!`, `assert!`, and internal panic results are printed to the
```
INFO solana_runtime::message_processor] Finalized account CGLhHSuWsp1gT4B7MY2KACqp9RUwQRhcUFfVSuxpSajZ
INFO solana_runtime::message_processor] Call BPF program CGLhHSuWsp1gT4B7MY2KACqp9RUwQRhcUFfVSuxpSajZ
INFO solana_runtime::message_processor] Call SBF program CGLhHSuWsp1gT4B7MY2KACqp9RUwQRhcUFfVSuxpSajZ
INFO solana_runtime::message_processor] Program log: Panicked at: 'assertion failed: `(left == right)`
left: `1`,
right: `2`', rust/panic/src/lib.rs:22:5
INFO solana_runtime::message_processor] BPF program consumed 5453 of 200000 units
INFO solana_runtime::message_processor] BPF program CGLhHSuWsp1gT4B7MY2KACqp9RUwQRhcUFfVSuxpSajZ failed: BPF program panicked
INFO solana_runtime::message_processor] SBF program consumed 5453 of 200000 units
INFO solana_runtime::message_processor] SBF program CGLhHSuWsp1gT4B7MY2KACqp9RUwQRhcUFfVSuxpSajZ failed: BPF program panicked
```
### Custom Panic Handler
@ -369,7 +369,7 @@ for more information.
## ELF Dump
The BPF shared object internals can be dumped to a text file to gain more
The SBF shared object internals can be dumped to a text file to gain more
insight into a program's composition and what it may be doing at runtime. The
dump will contain both the ELF information as well as a list of all the symbols
and the instructions that implement them. Some of the BPF loader's error log

View File

@ -18,7 +18,7 @@ Depth](developing/programming-model/calling-between-programs.md#call-depth)
## `CallDepthExceeded` error
This error means the BPF stack depth was exceeded.
This error means the SBF stack depth was exceeded.
See [call depth](overview.md#call-depth)

View File

@ -26,7 +26,7 @@ native instructions.
## Memory map
The virtual address memory map used by Solana BPF programs is fixed and laid out
The virtual address memory map used by Solana SBF programs is fixed and laid out
as follows
- Program code starts at 0x100000000
@ -42,7 +42,7 @@ the attempted violation.
## Stack
BPF uses stack frames instead of a variable stack pointer. Each stack frame is
SBF uses stack frames instead of a variable stack pointer. Each stack frame is
4KB in size.
If a program violates that stack frame size, the compiler will report the
@ -67,7 +67,7 @@ crates may include functionality that violates the stack frame restrictions even
if the program doesn't use that functionality. If the program violates the stack
size at runtime, an `AccessViolation` error will be reported.
BPF stack frames occupy a virtual address range starting at 0x200000000.
SBF stack frames occupy a virtual address range starting at 0x200000000.
## Call Depth
@ -126,7 +126,7 @@ added to support writable data.
## Signed division
The BPF instruction set does not support [signed
The SBF instruction set does not support [signed
division](https://www.kernel.org/doc/html/latest/bpf/bpf_design_QA.html#q-why-there-is-no-bpf-sdiv-for-signed-divide-operation).
Adding a signed division instruction is a consideration.
@ -156,19 +156,19 @@ loader see:
### Deployment
BPF program deployment is the process of uploading a BPF shared object into a
SBF program deployment is the process of uploading a BPF shared object into a
program account's data and marking the account executable. A client breaks the
BPF shared object into smaller pieces and sends them as the instruction data of
SBF shared object into smaller pieces and sends them as the instruction data of
[`Write`](https://github.com/solana-labs/solana/blob/bc7133d7526a041d1aaee807b80922baa89b6f90/sdk/program/src/loader_instruction.rs#L13)
instructions to the loader where loader writes that data into the program's
account data. Once all the pieces are received the client sends a
[`Finalize`](https://github.com/solana-labs/solana/blob/bc7133d7526a041d1aaee807b80922baa89b6f90/sdk/program/src/loader_instruction.rs#L30)
instruction to the loader, the loader then validates that the BPF data is valid
instruction to the loader, the loader then validates that the SBF data is valid
and marks the program account as _executable_. Once the program account is
marked executable, subsequent transactions may issue instructions for that
program to process.
When an instruction is directed at an executable BPF program the loader
When an instruction is directed at an executable SBF program the loader
configures the program's execution environment, serializes the program's input
parameters, calls the program's entrypoint, and reports any errors encountered.
@ -176,7 +176,7 @@ For further information see [deploying](deploying.md)
### Input Parameter Serialization
BPF loaders serialize the program input parameters into a byte array that is
SBF loaders serialize the program input parameters into a byte array that is
then passed to the program's entrypoint, where the program is responsible for
deserializing it on-chain. One of the changes between the deprecated loader and
the current loader is that the input parameters are serialized in a way that

View File

@ -45,7 +45,7 @@ If an account is marked "executable" in its metadata, then it is considered a
program which can be executed by including the account's public key in an
instruction's [program id](transactions.md#program-id). Accounts are marked as
executable during a successful program deployment process by the loader that
owns the account. When a program is deployed to the execution engine (BPF deployment),
owns the account. When a program is deployed to the execution engine (SBF deployment),
the loader determines that the bytecode in the account's data is valid.
If so, the loader permanently marks the program account as executable.

View File

@ -52,14 +52,14 @@ the transaction may perform, and operational bounds the transaction must adhere
to.
As the transaction is processed compute units are consumed by its
instruction's programs performing operations such as executing BPF instructions,
instruction's programs performing operations such as executing SBF instructions,
calling syscalls, etc... When the transaction consumes its entire budget, or
exceeds a bound such as attempting a call stack that is too deep, the runtime
halts the transaction processing and returns an error.
The following operations incur a compute cost:
- Executing BPF instructions
- Executing SBF instructions
- Passing data between programs
- Calling system calls
- logging
@ -94,9 +94,9 @@ log_pubkey_units: 100,
Then any transaction:
- Could execute 1,400,000 BPF instructions, if it did nothing else.
- Could execute 1,400,000 SBF instructions, if it did nothing else.
- Cannot exceed 4k of stack usage.
- Cannot exceed a BPF call depth of 64.
- Cannot exceed a SBF call depth of 64.
- Cannot exceed invoke stack height of 5 (4 levels of cross-program invocations).
> **NOTE:** Since the compute budget is consumed incrementally as the transaction executes,

View File

@ -133,8 +133,8 @@ program will process this instruction. The program's account's owner specifies
which loader should be used to load and execute the program, and the data
contains information about how the runtime should execute the program.
In the case of [on-chain BPF programs](developing/on-chain-programs/overview.md),
the owner is the BPF Loader and the account data holds the BPF bytecode. Program
In the case of [on-chain SBF programs](developing/on-chain-programs/overview.md),
the owner is the SBF Loader and the account data holds the BPF bytecode. Program
accounts are permanently marked as executable by the loader once they are
successfully deployed. The runtime will reject transactions that specify programs
that are not executable.

View File

@ -57,4 +57,4 @@ testnet running 150 nodes on a gigabit network and demonstrated soak tests
processing an _average_ of 200 thousand transactions per second with bursts
over 500 thousand. The project was also extended to support on-chain programs
written in the C programming language and run concurrently in a safe execution
environment called BPF.
environment called SBF.

View File

@ -25,4 +25,4 @@ for it and also write the current instruction index and then the bpf program can
necessary information from there.
Note: custom serialization of instructions is used because bincode is about 10x slower
in native code and exceeds current BPF instruction limits.
in native code and exceeds current SBF instruction limits.

View File

@ -50,7 +50,7 @@ A fee could be calculated based on:
requested amount. After processing, the actual number of units consumed
will be known, and the payer will be refunded the difference, so the payer
only pays for what they used. Builtin programs will have a fixed cost
while BPF program's cost will be measured at runtime.
while SBF program's cost will be measured at runtime.
6. Precompiled programs
- Precompiled programs are performing compute-intensive operations. The work
incurred by a precompiled program is predictable based on the instruction's

View File

@ -34,4 +34,4 @@ All data accounts owned by Move modules must set their owners to the loader, `MO
### Interacting with Solana programs
To invoke instructions in non-Move programs, Solana would need to extend the Move VM with a `process_instruction()` system call. It would work the same as `process_instruction()` Rust BPF programs.
To invoke instructions in non-Move programs, Solana would need to extend the Move VM with a `process_instruction()` system call. It would work the same as `process_instruction()` Rust SBF programs.

View File

@ -1,4 +1,4 @@
# Return data from BPF programs
# Return data from SBF programs
## Problem
@ -44,7 +44,7 @@ block, any of these would cause the transaction or rpc to fail.
## Existing solution
The existing solution that Solang uses, writes the return data to the callee account data.
The caller's account cannot be used, since the callee may not be the same BPF program, so
The caller's account cannot be used, since the callee may not be the same SBF program, so
it will not have permission to write to the callee's account data.
Another solution would be to have a single return data account which is passed
@ -136,9 +136,9 @@ strings in the [stable log](https://github.com/solana-labs/solana/blob/952928419
Solidity on Ethereum allows the contract to return an error in the return data. In this case, all
the account data changes for the account should be reverted. On Solana, any non-zero exit code
for a BPF prorgram means the entire transaction fails. We do not wish to support an error return
for a SBF prorgram means the entire transaction fails. We do not wish to support an error return
by returning success and then returning an error in the return data. This would mean we would have
to support reverting the account data changes; this too expensive both on the VM side and the BPF
to support reverting the account data changes; this too expensive both on the VM side and the SBF
contract side.
Errors will be reported via sol_log.

View File

@ -374,7 +374,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.takes_value(true)
.number_of_values(3)
.multiple(true)
.help("Install a BPF program at the given address"),
.help("Install a SBF program at the given address"),
)
.arg(
Arg::with_name("inflation")

View File

@ -8,13 +8,13 @@ macro_rules! to_builtin {
/// Builtin programs that are always available
fn genesis_builtins(bpf_jit: bool) -> Vec<Builtin> {
// Currently JIT is not supported on the BPF VM:
// Currently JIT is not supported on the SBF VM:
// !x86_64: https://github.com/qmonnet/rbpf/issues/48
// Windows: https://github.com/solana-labs/rbpf/issues/217
#[cfg(any(not(target_arch = "x86_64"), target_family = "windows"))]
let bpf_jit = {
if bpf_jit {
info!("BPF JIT is not supported on this target");
info!("SBF JIT is not supported on this target");
}
false
};

View File

@ -13,7 +13,7 @@ edition = "2021"
fast-math = "0.1"
solana-program = { path = "../sdk/program", version = "=1.15.0" }
# This can go once the BPF toolchain target Rust 1.42.0+
# This can go once the SBF toolchain target Rust 1.42.0+
[target.bpfel-unknown-unknown.dependencies]
matches = "0.1.9"

View File

@ -48,9 +48,9 @@ pub struct ComputeBudget {
pub sha256_byte_cost: u64,
/// Maximum number of slices hashed per syscall
pub sha256_max_slices: u64,
/// Maximum BPF to BPF call depth
/// Maximum SBF to BPF call depth
pub max_call_depth: usize,
/// Size of a stack frame in bytes, must match the size specified in the LLVM BPF backend
/// Size of a stack frame in bytes, must match the size specified in the LLVM SBF backend
pub stack_frame_size: usize,
/// Number of compute units consumed by logging a `Pubkey`
pub log_pubkey_units: u64,

View File

@ -1,4 +1,4 @@
//! The solana-program-test provides a BanksClient-based test framework BPF programs
//! The solana-program-test provides a BanksClient-based test framework SBF programs
#![allow(clippy::integer_arithmetic)]
// Export tokio for test clients
@ -117,7 +117,7 @@ pub fn builtin_process_instruction(
// Copy indices_in_instruction into a HashSet to ensure there are no duplicates
let deduplicated_indices: HashSet<IndexOfAccount> = instruction_account_indices.collect();
// Serialize entrypoint parameters with BPF ABI
// Serialize entrypoint parameters with SBF ABI
let (mut parameter_bytes, _regions, _account_lengths) = serialize_parameters(
invoke_context.transaction_context,
invoke_context
@ -423,7 +423,7 @@ fn default_shared_object_dirs() -> Vec<PathBuf> {
if let Ok(dir) = std::env::current_dir() {
search_path.push(dir);
}
trace!("BPF .so search path: {:?}", search_path);
trace!("SBF .so search path: {:?}", search_path);
search_path
}
@ -456,7 +456,7 @@ impl Default for ProgramTest {
/// used to override this preference at runtime. `cargo test-bpf` will set `BPF_OUT_DIR`
/// automatically.
///
/// BPF program shared objects and account data files are searched for in
/// SBF program shared objects and account data files are searched for in
/// * the value of the `BPF_OUT_DIR` environment variable
/// * the `tests/fixtures` sub-directory
/// * the current working directory
@ -501,7 +501,7 @@ impl ProgramTest {
me
}
/// Override default BPF program selection
/// Override default SBF program selection
pub fn prefer_bpf(&mut self, prefer_bpf: bool) {
self.prefer_bpf = prefer_bpf;
}
@ -516,14 +516,14 @@ impl ProgramTest {
self.transaction_account_lock_limit = Some(transaction_account_lock_limit);
}
/// Override the BPF compute budget
/// Override the SBF compute budget
#[allow(deprecated)]
#[deprecated(since = "1.8.0", note = "please use `set_compute_max_units` instead")]
pub fn set_bpf_compute_max_units(&mut self, bpf_compute_max_units: u64) {
self.compute_max_units = Some(bpf_compute_max_units);
}
/// Execute the BPF program with JIT if true, interpreted if false
/// Execute the SBF program with JIT if true, interpreted if false
pub fn use_bpf_jit(&mut self, use_bpf_jit: bool) {
self.use_bpf_jit = use_bpf_jit;
}
@ -578,13 +578,13 @@ impl ProgramTest {
);
}
/// Add a BPF program to the test environment.
/// Add a SBF program to the test environment.
///
/// `program_name` will also be used to locate the BPF shared object in the current or fixtures
/// `program_name` will also be used to locate the SBF shared object in the current or fixtures
/// directory.
///
/// If `process_instruction` is provided, the natively built-program may be used instead of the
/// BPF shared object depending on the `BPF_OUT_DIR` environment variable.
/// SBF shared object depending on the `BPF_OUT_DIR` environment variable.
pub fn add_program(
&mut self,
program_name: &str,
@ -594,7 +594,7 @@ impl ProgramTest {
let add_bpf = |this: &mut ProgramTest, program_file: PathBuf| {
let data = read_file(&program_file);
info!(
"\"{}\" BPF program from {}{}",
"\"{}\" SBF program from {}{}",
program_name,
program_file.display(),
std::fs::metadata(&program_file)
@ -654,7 +654,7 @@ impl ProgramTest {
if valid_program_names.is_empty() {
// This should be unreachable as `test-bpf` should guarantee at least one shared
// object exists somewhere.
warn!("No BPF shared objects found.");
warn!("No SBF shared objects found.");
return;
}
@ -670,17 +670,17 @@ impl ProgramTest {
let program_file = find_file(&format!("{}.so", program_name));
match (self.prefer_bpf, program_file, process_instruction) {
// If BPF is preferred (i.e., `test-bpf` is invoked) and a BPF shared object exists,
// If SBF is preferred (i.e., `test-sbf` is invoked) and a BPF shared object exists,
// use that as the program data.
(true, Some(file), _) => add_bpf(self, file),
// If BPF is not required (i.e., we were invoked with `test`), use the provided
// If SBF is not required (i.e., we were invoked with `test`), use the provided
// processor function as is.
//
// TODO: figure out why tests hang if a processor panics when running native code.
(false, _, Some(process)) => add_native(self, process),
// Invalid: `test-bpf` invocation with no matching BPF shared object.
// Invalid: `test-sbf` invocation with no matching SBF shared object.
(true, None, _) => {
warn_invalid_program_name();
panic!(

View File

@ -349,7 +349,7 @@ fn check_loader_id(id: &Pubkey) -> bool {
|| bpf_loader_upgradeable::check_id(id)
}
/// Create the BPF virtual machine
/// Create the SBF virtual machine
pub fn create_vm<'a, 'b>(
program: &'a VerifiedExecutable<RequisiteVerifier, ThisInstructionMeter>,
regions: Vec<MemoryRegion>,
@ -1395,7 +1395,7 @@ impl Executor for BpfExecutor {
) {
Ok(info) => info,
Err(e) => {
ic_logger_msg!(log_collector, "Failed to create BPF VM: {}", e);
ic_logger_msg!(log_collector, "Failed to create SBF VM: {}", e);
return Err(InstructionError::ProgramEnvironmentSetupFailure);
}
};
@ -1427,7 +1427,7 @@ impl Executor for BpfExecutor {
.write(&mut trace_buffer, &analysis)
.unwrap();
let trace_string = String::from_utf8(trace_buffer).unwrap();
trace!("BPF Program Instruction Trace:\n{}", trace_string);
trace!("SBF Program Instruction Trace:\n{}", trace_string);
}
drop(vm);
let (_returned_from_program_id, return_data) =

View File

@ -21,7 +21,7 @@ use {
};
/// Maximum number of instruction accounts that can be serialized into the
/// BPF VM.
/// SBF VM.
const MAX_INSTRUCTION_ACCOUNTS: u8 = NON_DUP_MARKER;
enum SerializeAccount<'a> {

View File

@ -78,9 +78,9 @@ pub const MAX_SIGNERS: usize = 16;
pub enum SyscallError {
#[error("{0}: {1:?}")]
InvalidString(Utf8Error, Vec<u8>),
#[error("BPF program panicked")]
#[error("SBF program panicked")]
Abort,
#[error("BPF program Panicked in {0} at {1}:{2}")]
#[error("SBF program Panicked in {0} at {1}:{2}")]
Panic(String, u64, u64),
#[error("Cannot borrow invoke context")]
InvokeContextBorrowFailed,
@ -386,7 +386,7 @@ fn translate_slice<'a, T>(
.map(|value| &*value)
}
/// Take a virtual pointer to a string (points to BPF VM memory space), translate it
/// Take a virtual pointer to a string (points to SBF VM memory space), translate it
/// pass it to a user-defined work function
fn translate_string_and_do(
memory_mapping: &MemoryMapping,
@ -435,10 +435,10 @@ macro_rules! declare_syscall {
}
declare_syscall!(
/// Abort syscall functions, called when the BPF program calls `abort()`
/// Abort syscall functions, called when the SBF program calls `abort()`
/// LLVM will insert calls to `abort()` if it detects an untenable situation,
/// `abort()` is not intended to be called explicitly by the program.
/// Causes the BPF program to be halted immediately
/// Causes the SBF program to be halted immediately
SyscallAbort,
fn inner_call(
_invoke_context: &mut InvokeContext,
@ -454,8 +454,8 @@ declare_syscall!(
);
declare_syscall!(
/// Panic syscall function, called when the BPF program calls 'sol_panic_()`
/// Causes the BPF program to be halted immediately
/// Panic syscall function, called when the SBF program calls 'sol_panic_()`
/// Causes the SBF program to be halted immediately
SyscallPanic,
fn inner_call(
invoke_context: &mut InvokeContext,
@ -480,7 +480,7 @@ declare_syscall!(
);
declare_syscall!(
/// Dynamic memory allocation syscall called when the BPF program calls
/// Dynamic memory allocation syscall called when the SBF program calls
/// `sol_alloc_free_()`. The allocator is expected to allocate/free
/// from/to a given chunk of memory and enforce size restrictions. The
/// memory chunk is given to the allocator during allocator creation and

View File

@ -1,5 +1,5 @@
/**
* @brief Example C based BPF program that prints out the parameters
* @brief Example C based SBF program that prints out the parameters
* passed to it
*/
#include <sol/deserialize.h>

View File

@ -1,5 +1,5 @@
/**
* @brief Example C based BPF program that prints out the parameters
* @brief Example C based SBF program that prints out the parameters
* passed to it
*/

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-128bit-dep"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-alloc"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that test dynamic memory allocation
//! Example Rust-based SBF program that test dynamic memory allocation
#[macro_use]
extern crate alloc;

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-call-depth"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that tests call depth and stack usage
//! Example Rust-based SBF program that tests call depth and stack usage
use solana_program::{
custom_heap_default, custom_panic_default, entrypoint::SUCCESS, log::sol_log_64, msg,

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-caller-access"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-curve25519"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-custom-heap"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF that tests out using a custom heap
//! Example Rust-based SBF that tests out using a custom heap
use {
solana_program::{

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-dep-crate"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program tests dependent crates
//! Example Rust-based SBF program tests dependent crates
extern crate solana_program;
use {

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-deprecated-loader"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that supports the deprecated loader
//! Example Rust-based SBF program that supports the deprecated loader
#![allow(unreachable_code)]

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-dup-accounts"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that tests duplicate accounts passed via accounts
//! Example Rust-based SBF program that tests duplicate accounts passed via accounts
extern crate solana_program;
use solana_program::{

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-error-handling"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that exercises error handling
//! Example Rust-based SBF program that exercises error handling
extern crate solana_program;
use {

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-external-spend"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that moves a lamport from one account to another
//! Example Rust-based SBF program that moves a lamport from one account to another
extern crate solana_program;
use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-finalize"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF sanity program that finalizes a BPF program
//! Example Rust-based SBF sanity program that finalizes a BPF program
#![allow(unreachable_code)]

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-get-minimum-delegation"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-inner_instruction_alignment_check"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF noop program
//! Example Rust-based SBF noop program
use solana_program::{
account_info::AccountInfo,

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-instruction-introspection"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that exercises instruction introspection
//! Example Rust-based SBF program that exercises instruction introspection
extern crate solana_program;
use solana_program::{

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-invoke"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that issues a cross-program-invocation
//! Example Rust-based SBF program that issues a cross-program-invocation
pub const TEST_SUCCESS: u8 = 1;
pub const TEST_PRIVILEGE_ESCALATION_SIGNER: u8 = 2;

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that issues a cross-program-invocation
//! Example Rust-based SBF program that issues a cross-program-invocation
pub mod instructions;
pub mod processor;

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that issues a cross-program-invocation
//! Example Rust-based SBF program that issues a cross-program-invocation
#![cfg(feature = "program")]
#![allow(unreachable_code)]

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-invoke-and-error"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-invoke-and-ok"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-invoke-and-return"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-invoked"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that issues a cross-program-invocation
//! Example Rust-based SBF program that issues a cross-program-invocation
use solana_program::{
instruction::{AccountMeta, Instruction},

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that issues a cross-program-invocation
//! Example Rust-based SBF program that issues a cross-program-invocation
pub mod instructions;
pub mod processor;

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that issues a cross-program-invocation
//! Example Rust-based SBF program that issues a cross-program-invocation
#![cfg(feature = "program")]

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-iter"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program tests loop iteration
//! Example Rust-based SBF program tests loop iteration
extern crate solana_program;
use solana_program::{

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-log-data"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that uses sol_log_data syscall
//! Example Rust-based SBF program that uses sol_log_data syscall
#![cfg(feature = "program")]

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-many-args"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program tests loop iteration
//! Example Rust-based SBF program tests loop iteration
extern crate solana_program;
use solana_program::log::*;

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program tests loop iteration
//! Example Rust-based SBF program tests loop iteration
mod helper;
extern crate solana_program;

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-many-args-dep"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Solana Rust-based BPF program utility functions and types
//! Solana Rust-based SBF program utility functions and types
extern crate solana_program;
use solana_program::{log::sol_log_64, msg};

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-mem"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-membuiltins"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-noop"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF noop program
//! Example Rust-based SBF noop program
extern crate solana_program;
use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-panic"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that panics
//! Example Rust-based SBF program that panics
#[cfg(all(feature = "custom-panic", target_os = "solana"))]
#[no_mangle]

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-param-passing"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program tests loop iteration
//! Example Rust-based SBF program tests loop iteration
extern crate solana_program;
use {

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-param-passing-dep"
version = "1.15.0"
description = "Solana BPF program written in Rust"
description = "Solana SBF program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program tests loop iteration
//! Example Rust-based SBF program tests loop iteration
extern crate solana_program;

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-rand"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF program that tests rand behavior
//! Example Rust-based SBF program that tests rand behavior
#![allow(unreachable_code)]

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-realloc"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF realloc test program
//! Example Rust-based SBF realloc test program
use solana_program::{
instruction::{AccountMeta, Instruction},

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF realloc test program
//! Example Rust-based SBF realloc test program
pub mod instructions;
pub mod processor;

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF realloc test program
//! Example Rust-based SBF realloc test program
#![cfg(feature = "program")]

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-realloc-invoke"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF realloc test program
//! Example Rust-based SBF realloc test program
pub const INVOKE_REALLOC_ZERO_RO: u8 = 0;
pub const INVOKE_REALLOC_ZERO: u8 = 1;

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF realloc test program
//! Example Rust-based SBF realloc test program
pub mod instructions;
pub mod processor;

View File

@ -1,4 +1,4 @@
//! Example Rust-based BPF realloc test program
//! Example Rust-based SBF realloc test program
#![cfg(feature = "program")]

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-ro-account_modify"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-ro-modify"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

View File

@ -1,7 +1,7 @@
[package]
name = "solana-sbf-rust-sanity"
version = "1.15.0"
description = "Solana BPF test program written in Rust"
description = "Solana SBF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"

Some files were not shown because too many files have changed in this diff Show More