Minor change to keep gdb happy.

PiperOrigin-RevId: 890605540
Change-Id: I74e107be1c97c51e802accbe03517994eca12f3c
diff --git a/mpact/sim/util/gdbserver/gdbserver.cc b/mpact/sim/util/gdbserver/gdbserver.cc
index d39b2a8..3f8467e 100644
--- a/mpact/sim/util/gdbserver/gdbserver.cc
+++ b/mpact/sim/util/gdbserver/gdbserver.cc
@@ -526,18 +526,18 @@
   halt_reasons_[0] = result.value();
   switch (result.value()) {
     default:
-      return "T05thread:1";
+      return "T05thread:1;";
     case *HaltReason::kSoftwareBreakpoint:
     case *HaltReason::kHardwareBreakpoint:
     case *HaltReason::kDataWatchPoint:
     case *HaltReason::kActionPoint:
-      return "T02thread:1";
+      return "T02thread:1;";
     case *HaltReason::kSimulatorError:
-      return "T06thread:1";
+      return "T06thread:1;";
     case *HaltReason::kUserRequest:
-      return "T03thread:1";
+      return "T03thread:1;";
     case *HaltReason::kProgramDone:
-      return "W00thread:1";
+      return "W00thread:1;";
   }
 }
 
@@ -691,20 +691,20 @@
   // 0.
   auto result = core_debug_interfaces_[0]->GetLastHaltReason();
   if (!result.ok()) {
-    return Respond("T05thread:1");
+    return Respond("T05thread:1;");
   }
   halt_reasons_[0] = result.value();
   uint64_t address = 0;
   generic::AccessType access_type = generic::AccessType::kNone;
   switch (halt_reasons_[0]) {
     default:
-      return Respond("T05thread:1");
+      return Respond("T05thread:1;");
     case *HaltReason::kSoftwareBreakpoint:
       address = core_debug_interfaces_[0]->GetSwBreakpointInfo();
-      return Respond(absl::StrCat("T05thread:1;swbreak:",
+      return Respond(absl::StrCat("T05thread:1;swbreak:;",
                                   HexEncodeNumberInTargetEndianness(address)));
     case *HaltReason::kHardwareBreakpoint:
-      return Respond("T05thread:1;hwbreak:");
+      return Respond("T05thread:1;hwbreak:;");
     case *HaltReason::kDataWatchPoint: {
       core_debug_interfaces_[0]->GetWatchpointInfo(address, access_type);
       std::string encoded_address = HexEncodeNumberInTargetEndianness(address);
@@ -712,22 +712,22 @@
       // read/write (awatch) watch points.
       switch (access_type) {
         case generic::AccessType::kLoad:
-          return Respond(absl::StrCat("T05thread:1;rwatch:", encoded_address));
+          return Respond(absl::StrCat("T05thread:1;rwatch:;", encoded_address));
         case generic::AccessType::kStore:
-          return Respond(absl::StrCat("T05thread:1;watch:", encoded_address));
+          return Respond(absl::StrCat("T05thread:1;watch:;", encoded_address));
         case generic::AccessType::kLoadStore:
-          return Respond(absl::StrCat("T05thread:1;awatch:", encoded_address));
+          return Respond(absl::StrCat("T05thread:1;awatch:;", encoded_address));
         default:
           LOG(ERROR) << "Invalid access type: "
                      << static_cast<int>(access_type);
-          return Respond("T05thread:1;");
+          return Respond("T05thread:1;;");
       }
     }
     case *HaltReason::kActionPoint:
     case *HaltReason::kSimulatorError:
       return Respond("T06thread:1;");
     case *HaltReason::kUserRequest:
-      return Respond("T03thread:1");
+      return Respond("T03thread:1;");
     case *HaltReason::kProgramDone:
       return Respond("W00");
   }
@@ -743,13 +743,14 @@
   char op = command.front();
   command.remove_prefix(1);
   if (command == "-1") {
-    thread_id = -1;
+    thread_id = 1;  // TODO(torerik): Add support for multiple threads.
   } else {
     bool success = absl::SimpleHexAtoi(command, &thread_id);
     if (!success) {
       return SendError("invalid thread id");
     }
   }
+  if (thread_id == 0) thread_id = 1;
   thread_select_[op] = thread_id;
   Respond("OK");
 }
diff --git a/mpact/sim/util/gdbserver/test/gdbserver_test.cc b/mpact/sim/util/gdbserver/test/gdbserver_test.cc
index aa9dc35..2898b2f 100644
--- a/mpact/sim/util/gdbserver/test/gdbserver_test.cc
+++ b/mpact/sim/util/gdbserver/test/gdbserver_test.cc
@@ -293,8 +293,8 @@
   client.SendCommand("?");
   // Server should ack command.
   EXPECT_TRUE(client.ExpectAck());
-  // Server should respond with T02thread:1.
-  EXPECT_EQ("T02thread:1", client.ReceiveResponse());
+  // Server should respond with T02thread:1;.
+  EXPECT_EQ("T02thread:1;", client.ReceiveResponse());
   // Client should ack response.
   client.SendAck();
 
@@ -439,7 +439,7 @@
   client.SendAck();
   client.SendCommand("c");
   EXPECT_TRUE(client.ExpectAck());
-  EXPECT_EQ("T02thread:1", client.ReceiveResponse());
+  EXPECT_EQ("T02thread:1;", client.ReceiveResponse());
   client.SendAck();
 
   client.SendCommand("D");