Skip to content

Commit 9ce777e

Browse files
committed
test: update fuzzing targets
1 parent eed5eb1 commit 9ce777e

File tree

7 files changed

+43
-25
lines changed

7 files changed

+43
-25
lines changed

fuzz/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ cargo-fuzz = true
1010

1111
[dependencies]
1212
libfuzzer-sys = "0.4"
13-
spike-sys = "0.1.2"
13+
spike-sys = { version = "0.1.2", optional = true }
1414
ckb-vm = { path = "..", features = ["asm"] }
1515
ckb-vm-definitions = { path = "../definitions" }
1616

@@ -41,12 +41,14 @@ name = "isa_a"
4141
path = "fuzz_targets/isa_a.rs"
4242
test = false
4343
doc = false
44+
required-features = ["spike-sys"]
4445

4546
[[bin]]
4647
name = "isa_b"
4748
path = "fuzz_targets/isa_b.rs"
4849
test = false
4950
doc = false
51+
required-features = ["spike-sys"]
5052

5153
[[bin]]
5254
name = "snapshot"

fuzz/fuzz_targets/asm.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@ use ckb_vm::cost_model::constant_cycles;
33
use ckb_vm::machine::asm::{AsmCoreMachine, AsmDefaultMachineBuilder, AsmMachine};
44
use ckb_vm::machine::trace::TraceMachine;
55
use ckb_vm::machine::{
6-
DefaultCoreMachine, DefaultMachineRunner, RustDefaultMachineBuilder, SupportMachine, VERSION2,
6+
DefaultCoreMachine, DefaultMachineRunner, RustDefaultMachineBuilder, SupportMachine, VERSION3,
77
};
88
use ckb_vm::memory::sparse::SparseMemory;
99
use ckb_vm::memory::wxorx::WXorXMemory;
10-
use ckb_vm::{Bytes, Error, ISA_A, ISA_B, ISA_IMC, ISA_MOP};
10+
use ckb_vm::{Bytes, Error, ISA_A, ISA_B, ISA_CFI, ISA_IMC, ISA_MOP};
1111
use libfuzzer_sys::fuzz_target;
1212

1313
fn run_asm(data: &[u8]) -> Result<(i8, u64), Error> {
14-
let asm_core = AsmCoreMachine::new(ISA_IMC | ISA_A | ISA_B | ISA_MOP, VERSION2, 200_000);
14+
let asm_core = AsmCoreMachine::new(
15+
ISA_IMC | ISA_A | ISA_B | ISA_MOP | ISA_CFI,
16+
VERSION3,
17+
200_000,
18+
);
1519
let core = AsmDefaultMachineBuilder::new(asm_core)
1620
.instruction_cycle_func(Box::new(constant_cycles))
1721
.build();
@@ -25,8 +29,8 @@ fn run_asm(data: &[u8]) -> Result<(i8, u64), Error> {
2529

2630
fn run_int(data: &[u8]) -> Result<(i8, u64), Error> {
2731
let machine_core = DefaultCoreMachine::<u64, WXorXMemory<SparseMemory<u64>>>::new(
28-
ISA_IMC | ISA_A | ISA_B | ISA_MOP,
29-
VERSION2,
32+
ISA_IMC | ISA_A | ISA_B | ISA_MOP | ISA_CFI,
33+
VERSION3,
3034
200_000,
3135
);
3236
let mut machine = TraceMachine::new(

fuzz/fuzz_targets/interpreter.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
#![no_main]
22
use ckb_vm::cost_model::constant_cycles;
33
use ckb_vm::machine::trace::TraceMachine;
4-
use ckb_vm::machine::{DefaultCoreMachine, RustDefaultMachineBuilder, SupportMachine, VERSION2};
4+
use ckb_vm::machine::{DefaultCoreMachine, RustDefaultMachineBuilder, SupportMachine, VERSION3};
55
use ckb_vm::memory::sparse::SparseMemory;
66
use ckb_vm::memory::wxorx::WXorXMemory;
7-
use ckb_vm::{Bytes, DefaultMachineRunner, Error, ISA_A, ISA_B, ISA_IMC, ISA_MOP};
7+
use ckb_vm::{Bytes, DefaultMachineRunner, Error, ISA_A, ISA_B, ISA_IMC, ISA_MOP, ISA_CFI};
88
use libfuzzer_sys::fuzz_target;
99

1010
fn run(data: &[u8]) -> Result<(i8, u64), Error> {
1111
let machine_core = DefaultCoreMachine::<u64, WXorXMemory<SparseMemory<u64>>>::new(
12-
ISA_IMC | ISA_A | ISA_B | ISA_MOP,
13-
VERSION2,
12+
ISA_IMC | ISA_A | ISA_B | ISA_MOP | ISA_CFI,
13+
VERSION3,
1414
200_000,
1515
);
1616
let mut machine = TraceMachine::new(

fuzz/fuzz_targets/isa_a.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ impl Deque {
3131
fuzz_target!(|data: [u8; 512]| {
3232
let mut deque = Deque::new(data);
3333
let spike = Spike::new(4 * 1024 * 1024 - 4096);
34-
let ckb_vm_isa = ckb_vm::ISA_IMC | ckb_vm::ISA_A | ckb_vm::ISA_B;
35-
let ckb_vm_version = ckb_vm::machine::VERSION2;
34+
let ckb_vm_isa = ckb_vm::ISA_IMC | ckb_vm::ISA_A | ckb_vm::ISA_B | ckb_vm::ISA_CFI;
35+
let ckb_vm_version = ckb_vm::machine::VERSION3;
3636
let mut ckb_vm_int =
3737
ckb_vm::RustDefaultMachineBuilder::new(ckb_vm::DefaultCoreMachine::<
3838
u64,

fuzz/fuzz_targets/isa_b.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ impl Deque {
3737
fuzz_target!(|data: [u8; 512]| {
3838
let mut deque = Deque::new(data);
3939
let spike = Spike::new(4 * 1024 * 1024 - 4096);
40-
let ckb_vm_isa = ckb_vm::ISA_IMC | ckb_vm::ISA_A | ckb_vm::ISA_B;
41-
let ckb_vm_version = ckb_vm::machine::VERSION2;
40+
let ckb_vm_isa = ckb_vm::ISA_IMC | ckb_vm::ISA_A | ckb_vm::ISA_B | ckb_vm::ISA_CFI;
41+
let ckb_vm_version = ckb_vm::machine::VERSION3;
4242
let mut ckb_vm_int =
4343
ckb_vm::RustDefaultMachineBuilder::new(ckb_vm::DefaultCoreMachine::<
4444
u64,

fuzz/fuzz_targets/snapshot.rs

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
#![no_main]
22
use ckb_vm::cost_model::constant_cycles;
3-
use ckb_vm::machine::VERSION2;
3+
use ckb_vm::machine::VERSION3;
44
use ckb_vm::machine::asm::{AsmCoreMachine, AsmDefaultMachineBuilder, AsmMachine};
55
use ckb_vm::snapshot;
6-
use ckb_vm::{Bytes, DefaultMachineRunner, Error, ISA_A, ISA_B, ISA_IMC, ISA_MOP, SupportMachine};
6+
use ckb_vm::{
7+
Bytes, DefaultMachineRunner, Error, ISA_A, ISA_B, ISA_CFI, ISA_IMC, ISA_MOP, SupportMachine,
8+
};
79
use libfuzzer_sys::fuzz_target;
810

911
fuzz_target!(|data: &[u8]| {
1012
let mut machine1 = {
11-
let asm_core = AsmCoreMachine::new(ISA_IMC | ISA_A | ISA_B | ISA_MOP, VERSION2, 200_000);
13+
let asm_core = AsmCoreMachine::new(
14+
ISA_IMC | ISA_A | ISA_B | ISA_MOP | ISA_CFI,
15+
VERSION3,
16+
200_000,
17+
);
1218
let machine = AsmDefaultMachineBuilder::new(asm_core)
1319
.instruction_cycle_func(Box::new(constant_cycles))
1420
.build();
@@ -25,8 +31,11 @@ fuzz_target!(|data: &[u8]| {
2531

2632
let half_cycles = machine1.machine.cycles() / 2;
2733
let mut machine2 = {
28-
let asm_core =
29-
AsmCoreMachine::new(ISA_IMC | ISA_A | ISA_B | ISA_MOP, VERSION2, half_cycles);
34+
let asm_core = AsmCoreMachine::new(
35+
ISA_IMC | ISA_A | ISA_B | ISA_MOP | ISA_CFI,
36+
VERSION3,
37+
half_cycles,
38+
);
3039
let machine = AsmDefaultMachineBuilder::new(asm_core)
3140
.instruction_cycle_func(Box::new(constant_cycles))
3241
.build();
@@ -38,8 +47,11 @@ fuzz_target!(|data: &[u8]| {
3847
let snap = snapshot::make_snapshot(&mut machine2.machine).unwrap();
3948

4049
let mut machine3 = {
41-
let asm_core =
42-
AsmCoreMachine::new(ISA_IMC | ISA_A | ISA_B | ISA_MOP, VERSION2, half_cycles);
50+
let asm_core = AsmCoreMachine::new(
51+
ISA_IMC | ISA_A | ISA_B | ISA_MOP | ISA_CFI,
52+
VERSION3,
53+
half_cycles,
54+
);
4355
let machine = AsmDefaultMachineBuilder::new(asm_core)
4456
.instruction_cycle_func(Box::new(constant_cycles))
4557
.build();

fuzz/fuzz_targets/snapshot2.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#![no_main]
22
use ckb_vm::{
3-
Bytes, CoreMachine, DEFAULT_MEMORY_SIZE, ISA_A, ISA_B, ISA_IMC, ISA_MOP, Memory,
3+
Bytes, CoreMachine, DEFAULT_MEMORY_SIZE, ISA_A, ISA_B, ISA_CFI, ISA_IMC, ISA_MOP, Memory,
44
RISCV_PAGESIZE, SupportMachine,
55
elf::{LoadingAction, ProgramMetadata},
6-
machine::VERSION2,
6+
machine::VERSION3,
77
machine::asm::{AsmDefaultMachine, AsmDefaultMachineBuilder},
88
memory::{FLAG_EXECUTABLE, FLAG_FREEZED, round_page_down, round_page_up},
99
snapshot2::{DataSource, Snapshot2Context},
@@ -65,8 +65,8 @@ impl DataSource<u32> for DummyData {
6565
}
6666

6767
fn build_machine() -> AsmDefaultMachine {
68-
let isa = ISA_IMC | ISA_A | ISA_B | ISA_MOP;
69-
let core_machine = <AsmCoreMachine as SupportMachine>::new(isa.into(), VERSION2, u64::MAX);
68+
let isa = ISA_IMC | ISA_A | ISA_B | ISA_MOP | ISA_CFI;
69+
let core_machine = <AsmCoreMachine as SupportMachine>::new(isa.into(), VERSION3, u64::MAX);
7070
AsmDefaultMachineBuilder::new(core_machine).build()
7171
}
7272

0 commit comments

Comments
 (0)