diff --git a/mpact/sim/decoder/instruction.h b/mpact/sim/decoder/instruction.h
index 9f89586..a7a4520 100644
--- a/mpact/sim/decoder/instruction.h
+++ b/mpact/sim/decoder/instruction.h
@@ -18,7 +18,7 @@
 #include <string>
 #include <vector>
 
-#include "absl/container/flat_hash_map.h"
+#include "absl/container/btree_map.h"
 #include "absl/status/statusor.h"
 #include "absl/strings/string_view.h"
 #include "mpact/sim/decoder/opcode.h"
@@ -97,7 +97,7 @@
     return disasm_format_vec_;
   }
 
-  const absl::flat_hash_map<std::string, TemplateExpression*>& attribute_map()
+  const absl::btree_map<std::string, TemplateExpression*>& attribute_map()
       const {
     return attribute_map_;
   }
@@ -112,7 +112,7 @@
   std::vector<const ResourceReference*> resource_acquire_vec_;
   std::string semfunc_code_string_;
   std::vector<DisasmFormat*> disasm_format_vec_;
-  absl::flat_hash_map<std::string, TemplateExpression*> attribute_map_;
+  absl::btree_map<std::string, TemplateExpression*> attribute_map_;
 };
 
 }  // namespace instruction_set
diff --git a/mpact/sim/decoder/slot.cc b/mpact/sim/decoder/slot.cc
index 0a8bd0e..85756e4 100644
--- a/mpact/sim/decoder/slot.cc
+++ b/mpact/sim/decoder/slot.cc
@@ -230,7 +230,9 @@
 // instructions can share attribute setter functions.
 std::string Slot::CreateAttributeLookupKey(const Instruction* inst) const {
   std::string key;
+  int count = attribute_names_.size();
   for (auto const& [name, expr] : inst->attribute_map()) {
+    count--;
     std::string value;
     auto result = expr->GetValue();
     if (!result.ok()) {
@@ -244,6 +246,9 @@
     }
     absl::StrAppend(&key, name, "[", *value_ptr, "]:");
   }
+  for (int i = 0; i < count; ++i) {
+    absl::StrAppend(&key, "[]:");
+  }
   return key;
 }
 
diff --git a/mpact/sim/util/gdbserver/gdbserver.cc b/mpact/sim/util/gdbserver/gdbserver.cc
index 378f4e5..97a895e 100644
--- a/mpact/sim/util/gdbserver/gdbserver.cc
+++ b/mpact/sim/util/gdbserver/gdbserver.cc
@@ -575,6 +575,7 @@
       halt_reason_str = "T03thread:1;";
       break;
     case *HaltReason::kProgramDone:
+    case *HaltReason::kSemihostHaltRequest:
       halt_reason_str = "W00thread:1;";
       break;
   }
@@ -721,7 +722,8 @@
   // done.
   bool all_done = true;
   for (int tid = 1; tid <= core_debug_interfaces_.size(); ++tid) {
-    all_done &= (halt_reasons_[tid - 1] == *HaltReason::kProgramDone);
+    all_done &= ((halt_reasons_[tid - 1] == *HaltReason::kProgramDone) ||
+                 (halt_reasons_[tid - 1] == *HaltReason::kSemihostHaltRequest));
   }
   if (all_done) {
     return Respond("W00");
@@ -777,6 +779,7 @@
     case *HaltReason::kUserRequest:
       return Respond(absl::StrCat("T03thread:1;", encoded_pc));
     case *HaltReason::kProgramDone:
+    case *HaltReason::kSemihostHaltRequest:
       return Respond("W00");
   }
 }
