Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/cranelift/isle/fuzz/fuzz_targets/compile.rs
1693 views
1
#![no_main]
2
3
use std::sync::Arc;
4
5
use cranelift_isle::files::Files;
6
use libfuzzer_sys::fuzz_target;
7
8
fuzz_target!(|src: &str| {
9
let _ = env_logger::try_init();
10
11
let lexer = cranelift_isle::lexer::Lexer::new(0, src);
12
log::debug!("lexer = {lexer:?}");
13
let lexer = match lexer {
14
Ok(l) => l,
15
Err(_) => return,
16
};
17
18
let defs = cranelift_isle::parser::parse(lexer);
19
log::debug!("defs = {defs:?}");
20
let defs = match defs {
21
Ok(d) => d,
22
Err(_) => return,
23
};
24
25
let files = Arc::new(Files::from_names_and_contents([(
26
"fuzz-input.isle".to_string(),
27
src.to_string(),
28
)]));
29
30
let code = cranelift_isle::compile::compile(files, &defs, &Default::default());
31
log::debug!("code = {code:?}");
32
let code = match code {
33
Ok(c) => c,
34
Err(_) => return,
35
};
36
37
// TODO: check that the generated code is valid Rust. This will require
38
// stubbing out extern types, extractors, and constructors.
39
drop(code);
40
});
41
42