From 01deb7e24fd222770cc41c539f56d545011143e4 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Tue, 25 Aug 2009 13:45:28 +0200
Subject: [PATCH] Trk: Answer NAK to xfer request

---
 tests/manual/trk/adapter.cpp | 27 +++++++++++++++++++++++++--
 tests/manual/trk/run.pl      |  6 +++++-
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/tests/manual/trk/adapter.cpp b/tests/manual/trk/adapter.cpp
index 8e2b447e8a9..da11abedba7 100644
--- a/tests/manual/trk/adapter.cpp
+++ b/tests/manual/trk/adapter.cpp
@@ -776,8 +776,31 @@ void Adapter::handleGdbResponse(const QByteArray &response)
         //  Command: 0x80 Acknowledge
         //    Error: 0x00
         // [80 09 00 00 00 00 0A]
-    }
-
+    } else if (response.startsWith("qPart:") || response.startsWith("qXfer:"))  {
+        QByteArray data  = response.mid(1 + response.indexOf(':'));
+        // "qPart:auxv:read::0,147": Read OS auxiliary data (see info aux)
+        bool handled = false;
+        if (data.startsWith("auxv:read::")) {
+            const int offsetPos = data.lastIndexOf(':') + 1;
+            const int commaPos = data.lastIndexOf(',');
+            if (commaPos != -1) {                
+                bool ok1 = false, ok2 = false;
+                const int offset = data.mid(offsetPos,  commaPos - offsetPos).toInt(&ok1, 16);
+                const int length = data.mid(commaPos + 1).toInt(&ok2, 16);
+                if (ok1 && ok2) {
+                    const QString msg = QString::fromLatin1("Read of OS auxilary vector (%1, %2) not implemented.").arg(offset).arg(length);
+                    logMessage(msgGdbPacket(msg), true);
+                    sendGdbMessage("E20", msg.toLatin1());
+                    handled = true;
+                }
+            }
+        } // auxv read
+        if (!handled) {
+            const QString msg = QLatin1String("FIXME unknown 'XFER'-request: ") + QString::fromAscii(response);
+            logMessage(msgGdbPacket(msg), true);
+            sendGdbMessage("E20", msg.toLatin1());
+        }
+    } // qPart/qXfer
     else {
         logMessage(msgGdbPacket(QLatin1String("FIXME unknown: ") + QString::fromAscii(response)));
     }
diff --git a/tests/manual/trk/run.pl b/tests/manual/trk/run.pl
index 3e62c99111c..2d5a0700242 100755
--- a/tests/manual/trk/run.pl
+++ b/tests/manual/trk/run.pl
@@ -130,7 +130,11 @@ if ($adapterpid == 0) {
     exit(0);
 }
 die ('Unable to launch adapter') if $adapterpid == -1;
-waitpid($adapterpid, 0) if ($waitAdapter > 0);
+
+if ($waitAdapter > 0) {
+    print '### kill -USR1 ',$adapterpid,"\n";    
+    waitpid($adapterpid, 0);
+}    
 # ------- Write out .gdbinit
 my $gdbInit = <<EOF;
 # This is generated. Changes will be lost.
-- 
GitLab