diff --git a/cheriot/BUILD b/cheriot/BUILD
index 15fce63..8feb88d 100644
--- a/cheriot/BUILD
+++ b/cheriot/BUILD
@@ -543,6 +543,7 @@
         "@com_google_absl//absl/container:btree",
         "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/functional:any_invocable",
+        "@com_google_absl//absl/functional:bind_front",
         "@com_google_absl//absl/log",
         "@com_google_absl//absl/status",
         "@com_google_absl//absl/status:statusor",
diff --git a/cheriot/cheriot_rvv_getters.h b/cheriot/cheriot_rvv_getters.h
index 190d897..2b34d93 100644
--- a/cheriot/cheriot_rvv_getters.h
+++ b/cheriot/cheriot_rvv_getters.h
@@ -49,16 +49,16 @@
 template <typename Enum, typename Extractors>
 void AddCheriotRVVSourceGetters(SourceOpGetterMap &getter_map,
                                 RiscVCheriotEncodingCommon *common) {
-  Insert(getter_map, *Enum::kConst1, [common]() -> SourceOperandInterface * {
+  Insert(getter_map, *Enum::kConst1, []() -> SourceOperandInterface * {
     return new IntLiteralOperand<1>();
   });
-  Insert(getter_map, *Enum::kConst2, [common]() -> SourceOperandInterface * {
+  Insert(getter_map, *Enum::kConst2, []() -> SourceOperandInterface * {
     return new IntLiteralOperand<2>();
   });
-  Insert(getter_map, *Enum::kConst4, [common]() -> SourceOperandInterface * {
+  Insert(getter_map, *Enum::kConst4, []() -> SourceOperandInterface * {
     return new IntLiteralOperand<4>();
   });
-  Insert(getter_map, *Enum::kConst8, [common]() -> SourceOperandInterface * {
+  Insert(getter_map, *Enum::kConst8, []() -> SourceOperandInterface * {
     return new IntLiteralOperand<8>();
   });
   Insert(getter_map, *Enum::kNf, [common]() -> SourceOperandInterface * {
diff --git a/cheriot/debug_command_shell.cc b/cheriot/debug_command_shell.cc
index f174d56..e1ea869 100644
--- a/cheriot/debug_command_shell.cc
+++ b/cheriot/debug_command_shell.cc
@@ -25,6 +25,7 @@
 #include <vector>
 
 #include "absl/functional/any_invocable.h"
+#include "absl/functional/bind_front.h"
 #include "absl/log/log.h"
 #include "absl/status/status.h"
 #include "absl/status/statusor.h"
@@ -56,9 +57,10 @@
 DebugCommandShell::InterruptListener::InterruptListener(CoreAccess *core_access)
     : core_access_(core_access),
       top_(static_cast<CheriotTop *>(core_access->debug_interface)),
-      taken_listener_(std::bind_front(&InterruptListener::SetTakenValue, this)),
+      taken_listener_(
+          absl::bind_front(&InterruptListener::SetTakenValue, this)),
       return_listener_(
-          std::bind_front(&InterruptListener::SetReturnValue, this)) {
+          absl::bind_front(&InterruptListener::SetReturnValue, this)) {
   top_->state()->counter_interrupts_taken()->AddListener(&taken_listener_);
   top_->state()->counter_interrupt_returns()->AddListener(&return_listener_);
 }
diff --git a/cheriot/test/BUILD b/cheriot/test/BUILD
index ebaa5e5..6973ddb 100644
--- a/cheriot/test/BUILD
+++ b/cheriot/test/BUILD
@@ -256,7 +256,7 @@
 )
 
 cc_library(
-    name = "riscv_vector_fp_test_utilities",
+    name = "riscv_cheriot_vector_fp_test_utilities",
     testonly = True,
     hdrs = ["riscv_cheriot_vector_fp_test_utilities.h"],
     deps = [
@@ -265,7 +265,6 @@
         "@com_google_absl//absl/random",
         "@com_google_absl//absl/strings",
         "@com_google_absl//absl/types:span",
-        "@com_google_googletest//:gtest_for_library_testonly",
         "@com_google_mpact-riscv//riscv:riscv_fp_state",
         "@com_google_mpact-riscv//riscv:riscv_state",
         "@com_google_mpact-sim//mpact/sim/generic:type_helpers",
@@ -403,8 +402,8 @@
         "//conditions:default": ["-fprotect-parens"],
     }),
     deps = [
+        ":riscv_cheriot_vector_fp_test_utilities",
         ":riscv_cheriot_vector_instructions_test_base",
-        ":riscv_vector_fp_test_utilities",
         "//cheriot:cheriot_state",
         "//cheriot:cheriot_vector_state",
         "//cheriot:riscv_cheriot_vector_fp",
@@ -433,8 +432,8 @@
         "//conditions:default": ["-fprotect-parens"],
     }),
     deps = [
+        ":riscv_cheriot_vector_fp_test_utilities",
         ":riscv_cheriot_vector_instructions_test_base",
-        ":riscv_vector_fp_test_utilities",
         "//cheriot:cheriot_state",
         "//cheriot:cheriot_vector_state",
         "//cheriot:riscv_cheriot_vector_fp",
@@ -463,8 +462,8 @@
         "//conditions:default": ["-fprotect-parens"],
     }),
     deps = [
+        ":riscv_cheriot_vector_fp_test_utilities",
         ":riscv_cheriot_vector_instructions_test_base",
-        ":riscv_vector_fp_test_utilities",
         "//cheriot:cheriot_state",
         "//cheriot:riscv_cheriot_vector_fp",
         "@com_google_absl//absl/random",
@@ -490,8 +489,8 @@
         "//conditions:default": ["-fprotect-parens"],
     }),
     deps = [
+        ":riscv_cheriot_vector_fp_test_utilities",
         ":riscv_cheriot_vector_instructions_test_base",
-        ":riscv_vector_fp_test_utilities",
         "//cheriot:cheriot_state",
         "//cheriot:riscv_cheriot_vector_fp",
         "@com_google_absl//absl/random",
diff --git a/repos.bzl b/repos.bzl
index 4ff7090..f8c7839 100644
--- a/repos.bzl
+++ b/repos.bzl
@@ -22,7 +22,7 @@
     if not native.existing_rule("com_google_mpact-riscv"):
         http_archive(
             name = "com_google_mpact-riscv",
-            sha256 = "cdc6c6ad021f94285d402851ee7e003f5015792299d605c0afff14ea67abe087",
-            strip_prefix = "mpact-riscv-e30593b771c95dcffe79454759f4f4aa64663110",
-            url = "https://github.com/google/mpact-riscv/archive/e30593b771c95dcffe79454759f4f4aa64663110.tar.gz",
+            sha256 = "68c7f6a7cf85fff6794a5759a2ac25a413b2d6ea355059b184e5ba87ac3252e4",
+            strip_prefix = "mpact-riscv-6e4cff65aa9a9f236c168bc292eb886cb7cf0efb",
+            url = "https://github.com/google/mpact-riscv/archive/6e4cff65aa9a9f236c168bc292eb886cb7cf0efb.tar.gz",
         )
