From 4118d70182e6260e9bc5b2e69c419f5a72cad12b Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Tue, 14 Sep 2010 16:39:44 +0200
Subject: [PATCH] Debugger[TRK]: Handle trace point requests of gdb 7.2+

Task-number: QTCREATORBUG-2315
---
 src/plugins/debugger/gdb/symbian.cpp          |  3 ++-
 src/plugins/debugger/gdb/tcftrkgdbadapter.cpp | 11 +++++++++++
 src/plugins/debugger/gdb/trkgdbadapter.cpp    | 11 +++++++++++
 3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/src/plugins/debugger/gdb/symbian.cpp b/src/plugins/debugger/gdb/symbian.cpp
index df7b56b45da..f7d6b62f282 100644
--- a/src/plugins/debugger/gdb/symbian.cpp
+++ b/src/plugins/debugger/gdb/symbian.cpp
@@ -520,7 +520,8 @@ const char *gdbQSupported =
     "QStartNoAckMode+;"
     "qXfer:libraries:read+;"
     // "qXfer:auxv:read+;"
-    "qXfer:features:read+";
+    "qXfer:features:read+;"
+    "qRelocInsn-"; // Relocate instructions for trace (gdb 7.2+): Not supported.
 
 // Answer to gdb "qXfer:features:read:target.xml:" request
 // "l<target><architecture>symbianelf</architecture></target>"
diff --git a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp
index 56ce9c69f88..cad69ff297e 100644
--- a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp
@@ -734,6 +734,17 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd)
         sendGdbServerMessage(Symbian::gdbQSupported);
     }
 
+    // Tracepoint handling as of gdb 7.2 onwards
+    else if (cmd == "qTStatus") { // Tracepoints
+        sendGdbServerAck();
+        sendGdbServerMessage("T0;tnotrun:0", QByteArray("No trace experiment running"));
+    }
+    // Trace variables  as of gdb 7.2 onwards
+    else if (cmd == "qTfV" || cmd == "qTsP" || cmd == "qTfP") {
+        sendGdbServerAck();
+        sendGdbServerMessage("l", QByteArray("No trace points"));
+    }
+
     else if (cmd.startsWith("qThreadExtraInfo")) {
         // $qThreadExtraInfo,1f9#55
         sendGdbServerAck();
diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp
index e5169d77019..1961ab61cf4 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp
@@ -630,6 +630,17 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd)
         sendGdbServerMessage(Symbian::gdbQSupported);
     }
 
+    // Tracepoint handling as of gdb 7.2 onwards
+    else if (cmd == "qTStatus") { // Tracepoints
+        sendGdbServerAck();
+        sendGdbServerMessage("T0;tnotrun:0", QByteArray("No trace experiment running"));
+    }
+    // Trace variables  as of gdb 7.2 onwards
+    else if (cmd == "qTfV" || cmd == "qTsP" || cmd == "qTfP") {
+        sendGdbServerAck();
+        sendGdbServerMessage("l", QByteArray("No trace points"));
+    }
+
     else if (cmd.startsWith("qThreadExtraInfo")) {
         // $qThreadExtraInfo,1f9#55
         sendGdbServerAck();
-- 
GitLab