diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 2435da3..cd21a69 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -21,20 +21,17 @@ path = "../wasm-ast" [dependencies.codegen-luajit] path = "../codegen-luajit" +[dependencies.codegen-luau] +path = "../codegen-luau" + [[bin]] -name = "full_transpile" -path = "fuzz_targets/full_transpile.rs" +name = "luajit_translate" +path = "fuzz_targets/luajit_translate.rs" test = false doc = false [[bin]] -name = "just_writer" -path = "fuzz_targets/just_writer.rs" -test = false -doc = false - -[[bin]] -name = "just_builder" -path = "fuzz_targets/just_builder.rs" +name = "luau_translate" +path = "fuzz_targets/luau_translate.rs" test = false doc = false diff --git a/fuzz/fuzz_targets/just_builder.rs b/fuzz/fuzz_targets/just_builder.rs deleted file mode 100644 index d1de985..0000000 --- a/fuzz/fuzz_targets/just_builder.rs +++ /dev/null @@ -1,22 +0,0 @@ -#![no_main] - -use parity_wasm::elements::Module as WasmModule; -use wasm_smith::Module as SmModule; - -use codegen_luajit::gen::Generator; -use wasm_ast::writer::Transpiler; - -fn fuzz_transformer(wasm: &WasmModule) { - let trans = Generator::new(wasm); - let _func = trans.build_func_list(); -} - -libfuzzer_sys::fuzz_target!(|module: SmModule| { - let data = module.to_bytes(); - let wasm = match parity_wasm::deserialize_buffer(&data) { - Ok(v) => v, - Err(_) => return, - }; - - fuzz_transformer(&wasm); -}); diff --git a/fuzz/fuzz_targets/just_writer.rs b/fuzz/fuzz_targets/just_writer.rs deleted file mode 100644 index 458136e..0000000 --- a/fuzz/fuzz_targets/just_writer.rs +++ /dev/null @@ -1,26 +0,0 @@ -#![no_main] - -use std::io::Result; - -use parity_wasm::elements::Module as WasmModule; -use wasm_smith::Module as SmModule; - -use codegen_luajit::gen::Generator; -use wasm_ast::writer::Transpiler; - -fn fuzz_writer(wasm: &WasmModule) -> Result<()> { - let trans = Generator::new(wasm); - let list = trans.build_func_list(); - - trans.gen_func_list(&list, &mut std::io::sink()) -} - -libfuzzer_sys::fuzz_target!(|module: SmModule| { - let data = module.to_bytes(); - let wasm = match parity_wasm::deserialize_buffer(&data) { - Ok(v) => v, - Err(_) => return, - }; - - fuzz_writer(&wasm).expect("LuaJIT should succeed"); -}); diff --git a/fuzz/fuzz_targets/full_transpile.rs b/fuzz/fuzz_targets/luajit_translate.rs similarity index 55% rename from fuzz/fuzz_targets/full_transpile.rs rename to fuzz/fuzz_targets/luajit_translate.rs index 77606d2..2d26570 100644 --- a/fuzz/fuzz_targets/full_transpile.rs +++ b/fuzz/fuzz_targets/luajit_translate.rs @@ -1,12 +1,9 @@ #![no_main] +use wasm_ast::builder::TypeInfo; use wasm_smith::Module; -use codegen_luajit::gen::Generator; -use wasm_ast::writer::Transpiler; - // We are not interested in parity_wasm errors. -// Only 1 edition should need to be tested too. libfuzzer_sys::fuzz_target!(|module: Module| { let data = module.to_bytes(); let wasm = match parity_wasm::deserialize_buffer(&data) { @@ -14,7 +11,8 @@ libfuzzer_sys::fuzz_target!(|module: Module| { Err(_) => return, }; - Generator::new(&wasm) - .transpile(&mut std::io::sink()) - .expect("LuaJIT should succeed"); + let type_info = TypeInfo::from_module(&wasm); + let sink = &mut std::io::sink(); + + codegen_luajit::translate(&wasm, &type_info, sink).expect("LuaJIT should succeed"); }); diff --git a/fuzz/fuzz_targets/luau_translate.rs b/fuzz/fuzz_targets/luau_translate.rs new file mode 100644 index 0000000..17c36f0 --- /dev/null +++ b/fuzz/fuzz_targets/luau_translate.rs @@ -0,0 +1,18 @@ +#![no_main] + +use wasm_ast::builder::TypeInfo; +use wasm_smith::Module; + +// We are not interested in parity_wasm errors. +libfuzzer_sys::fuzz_target!(|module: Module| { + let data = module.to_bytes(); + let wasm = match parity_wasm::deserialize_buffer(&data) { + Ok(v) => v, + Err(_) => return, + }; + + let type_info = TypeInfo::from_module(&wasm); + let sink = &mut std::io::sink(); + + codegen_luau::translate(&wasm, &type_info, sink).expect("Luau should succeed"); +});