[llvm-branch-commits] [lldb] [lldbremote] Implement support for MultiBreakpoint packet (PR #192919)
David Spickett via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Apr 24 08:55:49 PDT 2026
================
@@ -3123,6 +3126,65 @@ GDBRemoteCommunicationServerLLGS::Handle_z(StringExtractorGDBRemote &packet) {
ExecuteRemoveBreakpoint(packet.GetStringRef()));
}
+GDBRemoteCommunication::PacketResult
+GDBRemoteCommunicationServerLLGS::Handle_jMultiBreakpoint(
+ StringExtractorGDBRemote &packet) {
+ llvm::StringRef packet_str = packet.GetStringRef();
+ if (!packet_str.consume_front("jMultiBreakpoint:"))
+ return SendIllFormedResponse(packet,
+ "Invalid jMultiBreakpoint packet prefix");
+
+ llvm::Expected<llvm::json::Value> parsed = llvm::json::parse(packet_str);
+ if (!parsed) {
+ llvm::consumeError(parsed.takeError());
+ return SendIllFormedResponse(
+ packet, "jMultiBreakpoint did not contain valid JSON");
+ }
+ llvm::json::Object *request_dict = parsed->getAsObject();
+ if (!request_dict)
+ return SendIllFormedResponse(
+ packet, "jMultiBreakpoint did not contain a JSON dictionary");
+
+ llvm::json::Array *request_array =
+ request_dict->getArray("breakpoint_requests");
+ if (!request_array)
+ return SendIllFormedResponse(
+ packet,
+ "jMultiBreakpoint did not contain a valid 'breakpoint_requests' field");
+
+ llvm::json::Array reply_array;
+ for (const llvm::json::Value &value : *request_array) {
+ std::optional<llvm::StringRef> request = value.getAsString();
+ if (!request)
+ return SendIllFormedResponse(packet,
+ "jMultiBreakpoint had a non-string entry");
+ BreakpointResult result = request->starts_with("Z")
+ ? ExecuteSetBreakpoint(*request)
+ : ExecuteRemoveBreakpoint(*request);
----------------
DavidSpickett wrote:
Also I thought about saying you should check for `z` explicitly here but all it would do is make a more specific string error that we then throw away because we always return E03 for malformed anyway.
https://github.com/llvm/llvm-project/pull/192919
More information about the llvm-branch-commits
mailing list