* bump solana_rbpf from 0.2.5 to 0.2.7 (#16515)
(cherry picked from commit f7eadd9d70
)
# Conflicts:
# cli/Cargo.toml
# programs/bpf/Cargo.toml
# programs/bpf_loader/Cargo.toml
# programs/bpf_loader/src/syscalls.rs
* Fix conflicts
Co-authored-by: Michael Vines <mvines@gmail.com>
Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@ -5535,9 +5535,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana_rbpf"
|
||||
version = "0.2.5"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6e3089d0175f975358b602072a02bd327a154399d2b54a8cf0f8f21108a4de4c"
|
||||
checksum = "14e36c51d5aa290416c5dea3c43ac467cb57c0b643184af23e6bdab7434710fb"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"combine",
|
||||
|
@ -38,7 +38,7 @@ solana-config-program = { path = "../programs/config", version = "=1.6.5" }
|
||||
solana-faucet = { path = "../faucet", version = "=1.6.5" }
|
||||
solana-logger = { path = "../logger", version = "=1.6.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "=1.6.5" }
|
||||
solana_rbpf = "=0.2.5"
|
||||
solana_rbpf = "=0.2.7"
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "=1.6.5" }
|
||||
solana-sdk = { path = "../sdk", version = "=1.6.5" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "=1.6.5" }
|
||||
|
4
programs/bpf/Cargo.lock
generated
4
programs/bpf/Cargo.lock
generated
@ -3494,9 +3494,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana_rbpf"
|
||||
version = "0.2.5"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6e3089d0175f975358b602072a02bd327a154399d2b54a8cf0f8f21108a4de4c"
|
||||
checksum = "14e36c51d5aa290416c5dea3c43ac467cb57c0b643184af23e6bdab7434710fb"
|
||||
dependencies = [
|
||||
"byteorder 1.3.4",
|
||||
"combine",
|
||||
|
@ -29,7 +29,7 @@ solana-bpf-loader-program = { path = "../bpf_loader", version = "=1.6.5" }
|
||||
solana-cli-output = { path = "../../cli-output", version = "=1.6.5" }
|
||||
solana-logger = { path = "../../logger", version = "=1.6.5" }
|
||||
solana-measure = { path = "../../measure", version = "=1.6.5" }
|
||||
solana_rbpf = "=0.2.5"
|
||||
solana_rbpf = "=0.2.7"
|
||||
solana-runtime = { path = "../../runtime", version = "=1.6.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "=1.6.5" }
|
||||
solana-transaction-status = { path = "../../transaction-status", version = "=1.6.5" }
|
||||
|
@ -20,7 +20,7 @@ rand_core = "0.6.2"
|
||||
solana-measure = { path = "../../measure", version = "=1.6.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "=1.6.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "=1.6.5" }
|
||||
solana_rbpf = "=0.2.5"
|
||||
solana_rbpf = "=0.2.7"
|
||||
thiserror = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
|
@ -1736,7 +1736,7 @@ fn call<'a>(
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use solana_rbpf::{memory_region::MemoryRegion, vm::Config};
|
||||
use solana_rbpf::{memory_region::MemoryRegion, user_error::UserError, vm::Config};
|
||||
use solana_sdk::{
|
||||
bpf_loader,
|
||||
hash::hashv,
|
||||
@ -1766,10 +1766,11 @@ mod tests {
|
||||
const LENGTH: u64 = 1000;
|
||||
let data = vec![0u8; LENGTH as usize];
|
||||
let addr = data.as_ptr() as u64;
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion::new_from_slice(&data, START, 0, false)],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let cases = vec![
|
||||
(true, START, 0, addr),
|
||||
@ -1804,7 +1805,7 @@ mod tests {
|
||||
// Pubkey
|
||||
let pubkey = solana_sdk::pubkey::new_rand();
|
||||
let addr = &pubkey as *const _ as u64;
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 100,
|
||||
@ -1813,7 +1814,8 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let translated_pubkey =
|
||||
translate_type::<Pubkey>(&memory_mapping, 100, &bpf_loader::id()).unwrap();
|
||||
assert_eq!(pubkey, *translated_pubkey);
|
||||
@ -1825,7 +1827,7 @@ mod tests {
|
||||
vec![AccountMeta::new(solana_sdk::pubkey::new_rand(), false)],
|
||||
);
|
||||
let addr = &instruction as *const _ as u64;
|
||||
let mut memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 96,
|
||||
@ -1834,12 +1836,15 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let translated_instruction =
|
||||
translate_type::<Instruction>(&memory_mapping, 96, &bpf_loader::id()).unwrap();
|
||||
assert_eq!(instruction, *translated_instruction);
|
||||
memory_mapping.resize_region::<BpfError>(0, 1).unwrap();
|
||||
assert!(translate_type::<Instruction>(&memory_mapping, 100, &bpf_loader::id()).is_err());
|
||||
// TODO: Reenable when solana_rbpf is bumped to "0.2.8" or higher
|
||||
// Text search anchor so that it is easier to find: solana_rbpf = "=0.2.7"
|
||||
// memory_mapping.resize_region::<BpfError>(0, 1).unwrap();
|
||||
// assert!(translate_type::<Instruction>(&memory_mapping, 100, &bpf_loader::id()).is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -1849,7 +1854,7 @@ mod tests {
|
||||
let data: Vec<u8> = vec![];
|
||||
assert_eq!(0x1 as *const u8, data.as_ptr());
|
||||
let addr = good_data.as_ptr() as *const _ as u64;
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 100,
|
||||
@ -1858,7 +1863,8 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let translated_data =
|
||||
translate_slice::<u8>(&memory_mapping, data.as_ptr() as u64, 0, &bpf_loader::id())
|
||||
.unwrap();
|
||||
@ -1868,7 +1874,7 @@ mod tests {
|
||||
// u8
|
||||
let mut data = vec![1u8, 2, 3, 4, 5];
|
||||
let addr = data.as_ptr() as *const _ as u64;
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 100,
|
||||
@ -1877,7 +1883,8 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let translated_data =
|
||||
translate_slice::<u8>(&memory_mapping, 100, data.len() as u64, &bpf_loader::id())
|
||||
.unwrap();
|
||||
@ -1903,7 +1910,7 @@ mod tests {
|
||||
// u64
|
||||
let mut data = vec![1u64, 2, 3, 4, 5];
|
||||
let addr = data.as_ptr() as *const _ as u64;
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 96,
|
||||
@ -1912,7 +1919,8 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let translated_data =
|
||||
translate_slice::<u64>(&memory_mapping, 96, data.len() as u64, &bpf_loader::id())
|
||||
.unwrap();
|
||||
@ -1924,7 +1932,7 @@ mod tests {
|
||||
// Pubkeys
|
||||
let mut data = vec![solana_sdk::pubkey::new_rand(); 5];
|
||||
let addr = data.as_ptr() as *const _ as u64;
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 100,
|
||||
@ -1933,7 +1941,8 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let translated_data =
|
||||
translate_slice::<Pubkey>(&memory_mapping, 100, data.len() as u64, &bpf_loader::id())
|
||||
.unwrap();
|
||||
@ -1946,7 +1955,7 @@ mod tests {
|
||||
fn test_translate_string_and_do() {
|
||||
let string = "Gaggablaghblagh!";
|
||||
let addr = string.as_ptr() as *const _ as u64;
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 100,
|
||||
@ -1955,7 +1964,8 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
42,
|
||||
translate_string_and_do(
|
||||
@ -1975,7 +1985,9 @@ mod tests {
|
||||
#[test]
|
||||
#[should_panic(expected = "UserError(SyscallError(Abort))")]
|
||||
fn test_syscall_abort() {
|
||||
let memory_mapping = MemoryMapping::new(vec![MemoryRegion::default()], &DEFAULT_CONFIG);
|
||||
let memory_mapping =
|
||||
MemoryMapping::new::<UserError>(vec![MemoryRegion::default()], &DEFAULT_CONFIG)
|
||||
.unwrap();
|
||||
let mut result: Result<u64, EbpfError<BpfError>> = Ok(0);
|
||||
SyscallAbort::call(
|
||||
&mut SyscallAbort {},
|
||||
@ -1995,7 +2007,7 @@ mod tests {
|
||||
fn test_syscall_sol_panic() {
|
||||
let string = "Gaggablaghblagh!";
|
||||
let addr = string.as_ptr() as *const _ as u64;
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 100,
|
||||
@ -2004,7 +2016,8 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let compute_meter: Rc<RefCell<dyn ComputeMeter>> =
|
||||
Rc::new(RefCell::new(MockComputeMeter {
|
||||
@ -2067,7 +2080,7 @@ mod tests {
|
||||
logger,
|
||||
loader_id: &bpf_loader::id(),
|
||||
};
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 100,
|
||||
@ -2076,7 +2089,8 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let mut result: Result<u64, EbpfError<BpfError>> = Ok(0);
|
||||
syscall_sol_log.call(
|
||||
@ -2178,7 +2192,7 @@ mod tests {
|
||||
compute_meter,
|
||||
logger,
|
||||
};
|
||||
let memory_mapping = MemoryMapping::new(vec![], &DEFAULT_CONFIG);
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(vec![], &DEFAULT_CONFIG).unwrap();
|
||||
|
||||
let mut result: Result<u64, EbpfError<BpfError>> = Ok(0);
|
||||
syscall_sol_log_u64.call(1, 2, 3, 4, 5, &memory_mapping, &mut result);
|
||||
@ -2204,7 +2218,7 @@ mod tests {
|
||||
logger,
|
||||
loader_id: &bpf_loader::id(),
|
||||
};
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
vm_addr: 100,
|
||||
@ -2213,7 +2227,8 @@ mod tests {
|
||||
is_writable: false,
|
||||
}],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let mut result: Result<u64, EbpfError<BpfError>> = Ok(0);
|
||||
syscall_sol_pubkey.call(100, 0, 0, 0, 0, &memory_mapping, &mut result);
|
||||
@ -2249,10 +2264,11 @@ mod tests {
|
||||
// large alloc
|
||||
{
|
||||
let heap = vec![0_u8; 100];
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion::new_from_slice(&heap, MM_HEAP_START, 0, true)],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let mut syscall = SyscallAllocFree {
|
||||
aligned: true,
|
||||
allocator: BpfAllocator::new(heap, MM_HEAP_START),
|
||||
@ -2270,10 +2286,11 @@ mod tests {
|
||||
// many small unaligned allocs
|
||||
{
|
||||
let heap = vec![0_u8; 100];
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion::new_from_slice(&heap, MM_HEAP_START, 0, true)],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let mut syscall = SyscallAllocFree {
|
||||
aligned: false,
|
||||
allocator: BpfAllocator::new(heap, MM_HEAP_START),
|
||||
@ -2290,10 +2307,11 @@ mod tests {
|
||||
// many small aligned allocs
|
||||
{
|
||||
let heap = vec![0_u8; 100];
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion::new_from_slice(&heap, MM_HEAP_START, 0, true)],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let mut syscall = SyscallAllocFree {
|
||||
aligned: true,
|
||||
allocator: BpfAllocator::new(heap, MM_HEAP_START),
|
||||
@ -2311,10 +2329,11 @@ mod tests {
|
||||
|
||||
fn check_alignment<T>() {
|
||||
let heap = vec![0_u8; 100];
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion::new_from_slice(&heap, MM_HEAP_START, 0, true)],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let mut syscall = SyscallAllocFree {
|
||||
aligned: true,
|
||||
allocator: BpfAllocator::new(heap, MM_HEAP_START),
|
||||
@ -2362,7 +2381,7 @@ mod tests {
|
||||
let ro_len = bytes_to_hash.len() as u64;
|
||||
let ro_va = 96;
|
||||
let rw_va = 192;
|
||||
let memory_mapping = MemoryMapping::new(
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![
|
||||
MemoryRegion {
|
||||
host_addr: bytes1.as_ptr() as *const _ as u64,
|
||||
@ -2394,7 +2413,8 @@ mod tests {
|
||||
},
|
||||
],
|
||||
&DEFAULT_CONFIG,
|
||||
);
|
||||
)
|
||||
.unwrap();
|
||||
let compute_meter: Rc<RefCell<dyn ComputeMeter>> =
|
||||
Rc::new(RefCell::new(MockComputeMeter {
|
||||
remaining: (bytes1.len() + bytes2.len()) as u64,
|
||||
|
Reference in New Issue
Block a user