From 81c44033d6d82b50969702d3dcde07cb71e066f6 Mon Sep 17 00:00:00 2001
From: Alex Crichton <alex@alexcrichton.com>
Date: Thu, 25 Mar 2021 13:56:34 -0500
Subject: [PATCH] Disable module-linking in differential fuzzing (#2769)

Currently this exposes a bug where modules broken by module linking
cause failures in the fuzzer, but we want to fuzz those modules since
module linking isn't enabled when generating these modules.
---
 crates/fuzzing/src/oracles.rs | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/crates/fuzzing/src/oracles.rs b/crates/fuzzing/src/oracles.rs
index b30bb71a2c8b..3098005e062a 100644
--- a/crates/fuzzing/src/oracles.rs
+++ b/crates/fuzzing/src/oracles.rs
@@ -179,8 +179,14 @@ pub fn differential_execution(
     let wasm = module.to_bytes();
     log_wasm(&wasm);
 
-    for config in &configs {
-        let engine = Engine::new(config).unwrap();
+    for mut config in configs {
+        // Disable module linking since it isn't enabled by default for
+        // `wasm_smith::Module` but is enabled by default for our fuzz config.
+        // Since module linking is currently a breaking change this is required
+        // to accept modules that would otherwise be broken by module linking.
+        config.wasm_module_linking(false);
+
+        let engine = Engine::new(&config).unwrap();
         let store = Store::new(&engine);
 
         let module = Module::new(&engine, &wasm).unwrap();