Revert "Bump solana_rbpf to version 0.2.13 (#18068)"
This reverts commit 765fbc9a8c
.
This commit is contained in:
8
Cargo.lock
generated
8
Cargo.lock
generated
@ -1640,9 +1640,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "goblin"
|
||||
version = "0.4.2"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b1800b95efee8ad4ef04517d4d69f8e209e763b1668f1179aeeedd0e454da55"
|
||||
checksum = "c69552f48b18aa6102ce0c82dd9bc9d3f8af5fc0a5797069b1b466b90570e39c"
|
||||
dependencies = [
|
||||
"log 0.4.14",
|
||||
"plain",
|
||||
@ -5898,9 +5898,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana_rbpf"
|
||||
version = "0.2.13"
|
||||
version = "0.2.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc1dced9892c2b0273318ef4d8486112ea7c7a7b8eb563a20e7858ad921b4719"
|
||||
checksum = "c44596a3613a44f76a7f6e5205464a1e78d1529fa19e8eacde0b9e55a6387f50"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"combine",
|
||||
|
@ -40,7 +40,7 @@ solana-config-program = { path = "../programs/config", version = "=1.8.7" }
|
||||
solana-faucet = { path = "../faucet", version = "=1.8.7" }
|
||||
solana-logger = { path = "../logger", version = "=1.8.7" }
|
||||
solana-net-utils = { path = "../net-utils", version = "=1.8.7" }
|
||||
solana_rbpf = "=0.2.13"
|
||||
solana_rbpf = "=0.2.12"
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "=1.8.7" }
|
||||
solana-sdk = { path = "../sdk", version = "=1.8.7" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "=1.8.7" }
|
||||
|
@ -10,7 +10,7 @@ use {
|
||||
clap::{App, AppSettings, Arg, ArgMatches, SubCommand},
|
||||
log::*,
|
||||
solana_account_decoder::{UiAccountEncoding, UiDataSliceConfig},
|
||||
solana_bpf_loader_program::{syscalls::register_syscalls, BpfError, ThisInstructionMeter},
|
||||
solana_bpf_loader_program::{BpfError, ThisInstructionMeter},
|
||||
solana_clap_utils::{self, input_parsers::*, input_validators::*, keypair::*},
|
||||
solana_cli_output::{
|
||||
CliProgram, CliProgramAccountType, CliProgramAuthority, CliProgramBuffer, CliProgramId,
|
||||
@ -39,7 +39,6 @@ use {
|
||||
message::Message,
|
||||
native_token::Sol,
|
||||
packet::PACKET_DATA_SIZE,
|
||||
process_instruction::MockInvokeContext,
|
||||
pubkey::Pubkey,
|
||||
signature::{keypair_from_seed, read_keypair_file, Keypair, Signature, Signer},
|
||||
system_instruction::{self, SystemError},
|
||||
@ -1986,17 +1985,12 @@ fn read_and_verify_elf(program_location: &str) -> Result<Vec<u8>, Box<dyn std::e
|
||||
let mut program_data = Vec::new();
|
||||
file.read_to_end(&mut program_data)
|
||||
.map_err(|err| format!("Unable to read program file: {}", err))?;
|
||||
let mut invoke_context = MockInvokeContext::new(vec![]);
|
||||
|
||||
// Verify the program
|
||||
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(
|
||||
&program_data,
|
||||
Some(|x| verifier::check(x)),
|
||||
Config {
|
||||
reject_unresolved_syscalls: true,
|
||||
..Config::default()
|
||||
},
|
||||
register_syscalls(&mut invoke_context).unwrap(),
|
||||
Config::default(),
|
||||
)
|
||||
.map_err(|err| format!("ELF error: {}", err))?;
|
||||
|
||||
|
BIN
cli/tests/fixtures/noop.so
vendored
BIN
cli/tests/fixtures/noop.so
vendored
Binary file not shown.
8
programs/bpf/Cargo.lock
generated
8
programs/bpf/Cargo.lock
generated
@ -1159,9 +1159,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
||||
|
||||
[[package]]
|
||||
name = "goblin"
|
||||
version = "0.4.2"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b1800b95efee8ad4ef04517d4d69f8e209e763b1668f1179aeeedd0e454da55"
|
||||
checksum = "c69552f48b18aa6102ce0c82dd9bc9d3f8af5fc0a5797069b1b466b90570e39c"
|
||||
dependencies = [
|
||||
"log",
|
||||
"plain",
|
||||
@ -3698,9 +3698,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana_rbpf"
|
||||
version = "0.2.13"
|
||||
version = "0.2.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc1dced9892c2b0273318ef4d8486112ea7c7a7b8eb563a20e7858ad921b4719"
|
||||
checksum = "c44596a3613a44f76a7f6e5205464a1e78d1529fa19e8eacde0b9e55a6387f50"
|
||||
dependencies = [
|
||||
"byteorder 1.3.4",
|
||||
"combine",
|
||||
|
@ -30,7 +30,7 @@ solana-bpf-loader-program = { path = "../bpf_loader", version = "=1.8.7" }
|
||||
solana-cli-output = { path = "../../cli-output", version = "=1.8.7" }
|
||||
solana-logger = { path = "../../logger", version = "=1.8.7" }
|
||||
solana-measure = { path = "../../measure", version = "=1.8.7" }
|
||||
solana_rbpf = "=0.2.13"
|
||||
solana_rbpf = "=0.2.12"
|
||||
solana-runtime = { path = "../../runtime", version = "=1.8.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "=1.8.7" }
|
||||
solana-transaction-status = { path = "../../transaction-status", version = "=1.8.7" }
|
||||
|
@ -11,7 +11,7 @@ use solana_bpf_loader_program::{
|
||||
ThisInstructionMeter,
|
||||
};
|
||||
use solana_measure::measure::Measure;
|
||||
use solana_rbpf::vm::{Config, Executable, InstructionMeter, SyscallRegistry};
|
||||
use solana_rbpf::vm::{Config, Executable, InstructionMeter};
|
||||
use solana_runtime::{
|
||||
bank::Bank,
|
||||
bank_client::BankClient,
|
||||
@ -79,7 +79,6 @@ fn bench_program_create_executable(bencher: &mut Bencher) {
|
||||
&elf,
|
||||
None,
|
||||
Config::default(),
|
||||
SyscallRegistry::default(),
|
||||
)
|
||||
.unwrap();
|
||||
});
|
||||
@ -98,13 +97,10 @@ fn bench_program_alu(bencher: &mut Bencher) {
|
||||
let mut invoke_context = MockInvokeContext::new(vec![]);
|
||||
|
||||
let elf = load_elf("bench_alu").unwrap();
|
||||
let mut executable = <dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(
|
||||
&elf,
|
||||
None,
|
||||
Config::default(),
|
||||
register_syscalls(&mut invoke_context).unwrap(),
|
||||
)
|
||||
.unwrap();
|
||||
let mut executable =
|
||||
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(&elf, None, Config::default())
|
||||
.unwrap();
|
||||
executable.set_syscall_registry(register_syscalls(&mut invoke_context).unwrap());
|
||||
executable.jit_compile().unwrap();
|
||||
let compute_meter = invoke_context.get_compute_meter();
|
||||
let mut instruction_meter = ThisInstructionMeter { compute_meter };
|
||||
@ -229,13 +225,10 @@ fn bench_create_vm(bencher: &mut Bencher) {
|
||||
.unwrap();
|
||||
|
||||
let elf = load_elf("noop").unwrap();
|
||||
let executable = <dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(
|
||||
&elf,
|
||||
None,
|
||||
Config::default(),
|
||||
register_syscalls(&mut invoke_context).unwrap(),
|
||||
)
|
||||
.unwrap();
|
||||
let mut executable =
|
||||
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(&elf, None, Config::default())
|
||||
.unwrap();
|
||||
executable.set_syscall_registry(register_syscalls(&mut invoke_context).unwrap());
|
||||
|
||||
bencher.iter(|| {
|
||||
let _ = create_vm(
|
||||
@ -280,13 +273,10 @@ fn bench_instruction_count_tuner(_bencher: &mut Bencher) {
|
||||
.unwrap();
|
||||
|
||||
let elf = load_elf("tuner").unwrap();
|
||||
let executable = <dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(
|
||||
&elf,
|
||||
None,
|
||||
Config::default(),
|
||||
register_syscalls(&mut invoke_context).unwrap(),
|
||||
)
|
||||
.unwrap();
|
||||
let mut executable =
|
||||
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(&elf, None, Config::default())
|
||||
.unwrap();
|
||||
executable.set_syscall_registry(register_syscalls(&mut invoke_context).unwrap());
|
||||
let compute_meter = invoke_context.get_compute_meter();
|
||||
let mut instruction_meter = ThisInstructionMeter { compute_meter };
|
||||
let mut vm = create_vm(
|
||||
|
@ -211,16 +211,14 @@ fn run_program(
|
||||
let mut instruction_meter = ThisInstructionMeter { compute_meter };
|
||||
|
||||
let config = Config {
|
||||
max_call_depth: 20,
|
||||
stack_frame_size: 4096,
|
||||
enable_instruction_meter: true,
|
||||
enable_instruction_tracing: true,
|
||||
..Config::default()
|
||||
};
|
||||
let mut executable = <dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(
|
||||
&data,
|
||||
None,
|
||||
config,
|
||||
register_syscalls(&mut invoke_context).unwrap(),
|
||||
)
|
||||
.unwrap();
|
||||
let mut executable =
|
||||
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(&data, None, config).unwrap();
|
||||
executable.set_syscall_registry(register_syscalls(&mut invoke_context).unwrap());
|
||||
executable.jit_compile().unwrap();
|
||||
|
||||
let mut instruction_count = 0;
|
||||
|
@ -21,7 +21,7 @@ sha3 = "0.9.1"
|
||||
solana-measure = { path = "../../measure", version = "=1.8.7" }
|
||||
solana-runtime = { path = "../../runtime", version = "=1.8.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "=1.8.7" }
|
||||
solana_rbpf = "=0.2.13"
|
||||
solana_rbpf = "=0.2.12"
|
||||
thiserror = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
|
@ -88,20 +88,15 @@ pub fn create_executor(
|
||||
let config = Config {
|
||||
max_call_depth: bpf_compute_budget.max_call_depth,
|
||||
stack_frame_size: bpf_compute_budget.stack_frame_size,
|
||||
enable_instruction_meter: true,
|
||||
enable_instruction_tracing: log_enabled!(Trace),
|
||||
..Config::default()
|
||||
};
|
||||
let mut executable = {
|
||||
let keyed_accounts = invoke_context.get_keyed_accounts()?;
|
||||
let program = keyed_account_at_index(keyed_accounts, program_account_index)?;
|
||||
let account = program.try_account_ref()?;
|
||||
let data = &account.data()[program_data_offset..];
|
||||
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(
|
||||
data,
|
||||
None,
|
||||
config,
|
||||
syscall_registry,
|
||||
)
|
||||
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(data, None, config)
|
||||
}
|
||||
.map_err(|e| map_ebpf_error(invoke_context, e))?;
|
||||
let (_, elf_bytes) = executable
|
||||
@ -109,6 +104,7 @@ pub fn create_executor(
|
||||
.map_err(|e| map_ebpf_error(invoke_context, e))?;
|
||||
verifier::check(elf_bytes)
|
||||
.map_err(|e| map_ebpf_error(invoke_context, EbpfError::UserError(e.into())))?;
|
||||
executable.set_syscall_registry(syscall_registry);
|
||||
if use_jit {
|
||||
if let Err(err) = executable.jit_compile() {
|
||||
ic_msg!(invoke_context, "Failed to compile program {:?}", err);
|
||||
@ -1008,7 +1004,6 @@ mod tests {
|
||||
use {
|
||||
super::*,
|
||||
rand::Rng,
|
||||
solana_rbpf::vm::SyscallRegistry,
|
||||
solana_runtime::{bank::Bank, bank_client::BankClient},
|
||||
solana_sdk::{
|
||||
account::{
|
||||
@ -1062,10 +1057,9 @@ mod tests {
|
||||
solana_rbpf::elf::register_bpf_function(&mut bpf_functions, 0, "entrypoint").unwrap();
|
||||
let program = <dyn Executable<BpfError, TestInstructionMeter>>::from_text_bytes(
|
||||
program,
|
||||
bpf_functions,
|
||||
None,
|
||||
Config::default(),
|
||||
SyscallRegistry::default(),
|
||||
bpf_functions,
|
||||
)
|
||||
.unwrap();
|
||||
let mut vm =
|
||||
|
@ -2778,6 +2778,13 @@ mod tests {
|
||||
std::str::FromStr,
|
||||
};
|
||||
|
||||
const DEFAULT_CONFIG: Config = Config {
|
||||
max_call_depth: 20,
|
||||
stack_frame_size: 4_096,
|
||||
enable_instruction_meter: true,
|
||||
enable_instruction_tracing: false,
|
||||
};
|
||||
|
||||
macro_rules! assert_access_violation {
|
||||
($result:expr, $va:expr, $len:expr) => {
|
||||
match $result {
|
||||
@ -2799,10 +2806,9 @@ mod tests {
|
||||
const LENGTH: u64 = 1000;
|
||||
let data = vec![0u8; LENGTH as usize];
|
||||
let addr = data.as_ptr() as u64;
|
||||
let config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion::new_from_slice(&data, START, 0, false)],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@ -2839,7 +2845,6 @@ mod tests {
|
||||
// Pubkey
|
||||
let pubkey = solana_sdk::pubkey::new_rand();
|
||||
let addr = &pubkey as *const _ as u64;
|
||||
let config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
@ -2848,7 +2853,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let translated_pubkey =
|
||||
@ -2870,7 +2875,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let translated_instruction =
|
||||
@ -2889,7 +2894,6 @@ 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 config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
@ -2898,7 +2902,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let translated_data = translate_slice::<u8>(
|
||||
@ -2923,7 +2927,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let translated_data = translate_slice::<u8>(
|
||||
@ -2966,7 +2970,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let translated_data = translate_slice::<u64>(
|
||||
@ -2996,7 +3000,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let translated_data = translate_slice::<Pubkey>(
|
||||
@ -3016,7 +3020,6 @@ mod tests {
|
||||
fn test_translate_string_and_do() {
|
||||
let string = "Gaggablaghblagh!";
|
||||
let addr = string.as_ptr() as *const _ as u64;
|
||||
let config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
@ -3025,7 +3028,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
@ -3048,9 +3051,9 @@ mod tests {
|
||||
#[test]
|
||||
#[should_panic(expected = "UserError(SyscallError(Abort))")]
|
||||
fn test_syscall_abort() {
|
||||
let config = Config::default();
|
||||
let memory_mapping =
|
||||
MemoryMapping::new::<UserError>(vec![MemoryRegion::default()], &config).unwrap();
|
||||
MemoryMapping::new::<UserError>(vec![MemoryRegion::default()], &DEFAULT_CONFIG)
|
||||
.unwrap();
|
||||
let mut result: Result<u64, EbpfError<BpfError>> = Ok(0);
|
||||
SyscallAbort::call(
|
||||
&mut SyscallAbort {},
|
||||
@ -3070,7 +3073,6 @@ mod tests {
|
||||
fn test_syscall_sol_panic() {
|
||||
let string = "Gaggablaghblagh!";
|
||||
let addr = string.as_ptr() as *const _ as u64;
|
||||
let config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
@ -3079,7 +3081,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@ -3147,7 +3149,6 @@ mod tests {
|
||||
loader_id: &bpf_loader::id(),
|
||||
enforce_aligned_host_addrs: true,
|
||||
};
|
||||
let config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
@ -3156,7 +3157,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@ -3261,8 +3262,7 @@ mod tests {
|
||||
compute_meter,
|
||||
logger,
|
||||
};
|
||||
let config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(vec![], &config).unwrap();
|
||||
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);
|
||||
@ -3289,7 +3289,6 @@ mod tests {
|
||||
loader_id: &bpf_loader::id(),
|
||||
enforce_aligned_host_addrs: true,
|
||||
};
|
||||
let config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion {
|
||||
host_addr: addr,
|
||||
@ -3298,7 +3297,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: false,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@ -3333,7 +3332,6 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_syscall_sol_alloc_free() {
|
||||
let config = Config::default();
|
||||
// large alloc
|
||||
{
|
||||
let heap = AlignedMemory::new_with_size(100, HOST_ALIGN);
|
||||
@ -3344,7 +3342,7 @@ mod tests {
|
||||
0,
|
||||
true,
|
||||
)],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let mut syscall = SyscallAllocFree {
|
||||
@ -3371,7 +3369,7 @@ mod tests {
|
||||
0,
|
||||
true,
|
||||
)],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let mut syscall = SyscallAllocFree {
|
||||
@ -3397,7 +3395,7 @@ mod tests {
|
||||
0,
|
||||
true,
|
||||
)],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let mut syscall = SyscallAllocFree {
|
||||
@ -3417,7 +3415,6 @@ mod tests {
|
||||
|
||||
fn check_alignment<T>() {
|
||||
let heap = AlignedMemory::new_with_size(100, HOST_ALIGN);
|
||||
let config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![MemoryRegion::new_from_slice(
|
||||
heap.as_slice(),
|
||||
@ -3425,7 +3422,7 @@ mod tests {
|
||||
0,
|
||||
true,
|
||||
)],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let mut syscall = SyscallAllocFree {
|
||||
@ -3471,7 +3468,6 @@ mod tests {
|
||||
let ro_len = bytes_to_hash.len() as u64;
|
||||
let ro_va = 96;
|
||||
let rw_va = 192;
|
||||
let config = Config::default();
|
||||
let memory_mapping = MemoryMapping::new::<UserError>(
|
||||
vec![
|
||||
MemoryRegion {
|
||||
@ -3503,7 +3499,7 @@ mod tests {
|
||||
is_writable: true,
|
||||
},
|
||||
],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
let compute_meter: Rc<RefCell<dyn ComputeMeter>> =
|
||||
@ -3569,7 +3565,6 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_syscall_get_sysvar() {
|
||||
let config = Config::default();
|
||||
// Test clock sysvar
|
||||
{
|
||||
let got_clock = Clock::default();
|
||||
@ -3583,7 +3578,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: true,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@ -3625,7 +3620,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: true,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@ -3675,7 +3670,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: true,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@ -3715,7 +3710,7 @@ mod tests {
|
||||
vm_gap_shift: 63,
|
||||
is_writable: true,
|
||||
}],
|
||||
&config,
|
||||
&DEFAULT_CONFIG,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
|
@ -185,21 +185,14 @@ native machine code before execting it in the virtual machine.",
|
||||
file.seek(SeekFrom::Start(0)).unwrap();
|
||||
let mut contents = Vec::new();
|
||||
file.read_to_end(&mut contents).unwrap();
|
||||
let syscall_registry = register_syscalls(&mut invoke_context).unwrap();
|
||||
let mut executable = if magic == [0x7f, 0x45, 0x4c, 0x46] {
|
||||
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(
|
||||
&contents,
|
||||
None,
|
||||
config,
|
||||
syscall_registry,
|
||||
)
|
||||
.map_err(|err| format!("Executable constructor failed: {:?}", err))
|
||||
<dyn Executable<BpfError, ThisInstructionMeter>>::from_elf(&contents, None, config)
|
||||
.map_err(|err| format!("Executable constructor failed: {:?}", err))
|
||||
} else {
|
||||
assemble::<BpfError, ThisInstructionMeter>(
|
||||
std::str::from_utf8(contents.as_slice()).unwrap(),
|
||||
None,
|
||||
config,
|
||||
syscall_registry,
|
||||
)
|
||||
}
|
||||
.unwrap();
|
||||
@ -208,6 +201,7 @@ native machine code before execting it in the virtual machine.",
|
||||
let (_, elf_bytes) = executable.get_text_bytes().unwrap();
|
||||
check(elf_bytes).unwrap();
|
||||
}
|
||||
executable.set_syscall_registry(register_syscalls(&mut invoke_context).unwrap());
|
||||
executable.jit_compile().unwrap();
|
||||
let analysis = Analysis::from_executable(executable.as_ref());
|
||||
|
||||
|
Reference in New Issue
Block a user