diff --git a/Cargo.lock b/Cargo.lock
index f639095fae759..5fe55d82767ac 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2156,6 +2156,7 @@ dependencies = [
  "rustc-workspace-hack",
  "rustc_version",
  "serde",
+ "serde_json",
  "shell-escape",
  "vergen",
 ]
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index 4cfda606c4bc8..1b9e9a889483c 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -391,7 +391,7 @@ impl Step for Miri {
             // Overwrite bootstrap's `rustc` wrapper overwriting our flags.
             cargo.env("RUSTC_DEBUG_ASSERTIONS", "true");
             // Let cargo-miri know where xargo ended up.
-            cargo.env("XARGO", builder.out.join("bin").join("xargo"));
+            cargo.env("XARGO_CHECK", builder.out.join("bin").join("xargo-check"));
 
             let mut cargo = Command::from(cargo);
             if !try_run(builder, &mut cargo) {
diff --git a/src/tools/miri b/src/tools/miri
index 3c444bf6a6cff..974c8be95ec17 160000
--- a/src/tools/miri
+++ b/src/tools/miri
@@ -1 +1 @@
-Subproject commit 3c444bf6a6cff3b9014005f21cc44995b34862ce
+Subproject commit 974c8be95ec17cd986251d7700cd432a39576939