From 43ae800c73f35dfa8115217784814d6ccc61b75c Mon Sep 17 00:00:00 2001 From: Lucas Date: Tue, 8 Oct 2024 11:50:39 -0300 Subject: [PATCH] Fix tests (part 4) --- src/disassembler.rs | 4 ++-- src/interpreter.rs | 2 +- src/jit.rs | 10 +++++----- tests/execution.rs | 4 ++-- tests/exercise_instructions.rs | 14 +++++++++----- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/disassembler.rs b/src/disassembler.rs index 30e0a8841..b272625f8 100644 --- a/src/disassembler.rs +++ b/src/disassembler.rs @@ -271,8 +271,8 @@ pub fn disassemble_instruction( desc = format!("{name} {function_name}"); }, ebpf::CALL_REG => { name = "callx"; desc = format!("{} r{}", name, if sbpf_version.callx_uses_src_reg() { insn.src } else { insn.imm as u8 }); }, - ebpf::EXIT => { name = "exit"; desc = name.to_string(); } - ebpf::RETURN => { name = "return"; desc = name.to_string(); } + ebpf::EXIT => { name = "exit"; desc = name.to_string(); }, + ebpf::RETURN => { name = "return"; desc = name.to_string(); }, _ => { name = "unknown"; desc = format!("{} opcode={:#x}", name, insn.opc); }, }; diff --git a/src/interpreter.rs b/src/interpreter.rs index c65e979f0..ac7f01ac9 100644 --- a/src/interpreter.rs +++ b/src/interpreter.rs @@ -528,7 +528,7 @@ impl<'a, 'b, C: ContextObject> Interpreter<'a, 'b, C> { if self.vm.call_depth == 0 { if config.enable_instruction_meter && self.vm.due_insn_count > self.vm.previous_instruction_meter { throw_error!(self, EbpfError::ExceededMaxInstructions); - } + } self.vm.program_result = ProgramResult::Ok(self.reg[0]); return false; } diff --git a/src/jit.rs b/src/jit.rs index ad12f030f..c7bc63404 100644 --- a/src/jit.rs +++ b/src/jit.rs @@ -1706,7 +1706,7 @@ mod tests { } fn create_mockup_executable(config: Config, program: &[u8]) -> Executable { - let sbpf_version = config.enabled_sbpf_versions.end().clone(); + let sbpf_version = *config.enabled_sbpf_versions.clone().end(); let mut function_registry = FunctionRegistry::>::default(); function_registry @@ -1739,7 +1739,7 @@ mod tests { let empty_program_machine_code_length = { let config = Config { noop_instruction_rate: 0, - enabled_sbpf_versions: sbpf_version.clone()..=sbpf_version.clone(), + enabled_sbpf_versions: sbpf_version..=sbpf_version, ..Config::default() }; let mut executable = create_mockup_executable(config, &prog[0..0]); @@ -1750,7 +1750,7 @@ mod tests { .machine_code_length() }; assert!(empty_program_machine_code_length <= MAX_EMPTY_PROGRAM_MACHINE_CODE_LENGTH); - empty_program_machine_code_length_per_version[sbpf_version.clone() as usize] = + empty_program_machine_code_length_per_version[sbpf_version as usize] = empty_program_machine_code_length; } @@ -1784,7 +1784,7 @@ mod tests { for sbpf_version in [SBPFVersion::V1, SBPFVersion::V2] { let empty_program_machine_code_length = - empty_program_machine_code_length_per_version[sbpf_version.clone() as usize]; + empty_program_machine_code_length_per_version[sbpf_version as usize]; for mut opcode in 0x00..=0xFF { let (registers, immediate) = match opcode { @@ -1811,7 +1811,7 @@ mod tests { } let config = Config { noop_instruction_rate: 0, - enabled_sbpf_versions: sbpf_version.clone()..=sbpf_version.clone(), + enabled_sbpf_versions: sbpf_version..=sbpf_version, ..Config::default() }; let mut executable = create_mockup_executable(config, &prog); diff --git a/tests/execution.rs b/tests/execution.rs index 68f136119..39b34f7ea 100644 --- a/tests/execution.rs +++ b/tests/execution.rs @@ -95,8 +95,8 @@ macro_rules! test_interpreter_and_jit { None ); match compilation_result { - Err(err) => assert_eq!( - format!("{:?}", err), + Err(_) => assert_eq!( + format!("{:?}", compilation_result), expected_result, "Unexpected result for JIT compilation" ), diff --git a/tests/exercise_instructions.rs b/tests/exercise_instructions.rs index e2fc04b88..a96af5c4b 100644 --- a/tests/exercise_instructions.rs +++ b/tests/exercise_instructions.rs @@ -513,6 +513,14 @@ fn test_ins(v1: bool, ins: String, prng: &mut SmallRng, cu: u64) { prng.fill_bytes(&mut input); + let mut config = Config::default(); + let final_instr = if v1 { + config.enabled_sbpf_versions = SBPFVersion::V1..=SBPFVersion::V1; + "exit" + } else { + "return" + }; + let asm = format!( " ldxdw r9, [r1+72] @@ -535,12 +543,8 @@ fn test_ins(v1: bool, ins: String, prng: &mut SmallRng, cu: u64) { xor64 r0, r7 xor64 r0, r8 xor64 r0, r9 - exit" + {final_instr}" ); - let mut config = Config::default(); - if v1 { - config.enabled_sbpf_versions = SBPFVersion::V1..=SBPFVersion::V1; - } test_interpreter_and_jit_asm!(asm.as_str(), config, input, (), TestContextObject::new(cu)); }