From bee04cf1f5829f43eeb6d71c1d1f1914ff387a8d Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Mon, 13 Dec 2010 17:19:21 +0100
Subject: [PATCH] Debugger[CDBs 32bit]: Fix 'Jump to Line'.

PC register is 'rip' for 64bit and 'eip' for 32bit.

Task-number: QTCREATORBUG-3361
---
 src/plugins/debugger/cdb/cdbengine.cpp   | 8 +++++++-
 src/plugins/debugger/cdb2/cdbengine2.cpp | 3 ++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index c4c7e6b375d..272f19b5618 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -1035,12 +1035,18 @@ void CdbEngine::executeJumpToLine(const QString &fileName, int lineNumber)
 
         if (!setRegisterValueU64(m_d->interfaces().debugControl,
                                  m_d->interfaces().debugRegisters,
-                                 QLatin1String("rip"), address, &errorMessage))
+#ifdef Q_OS_WIN64
+                                 QLatin1String("rip"),
+#else
+                                 QLatin1String("eip"),
+#endif
+                                 address, &errorMessage))
             break;
         showMessage(QString::fromLatin1("Jumping to %1:%2 (0x%3)...").
                     arg(QDir::toNativeSeparators(fileName)).arg(lineNumber).arg(address, 0, 16));
 
         StackFrame frame;
+        frame.usable = true;
         frame.file = fileName;
         frame.line = lineNumber;
         gotoLocation(frame, true);
diff --git a/src/plugins/debugger/cdb2/cdbengine2.cpp b/src/plugins/debugger/cdb2/cdbengine2.cpp
index f62879d2092..fe56f3f2aa9 100644
--- a/src/plugins/debugger/cdb2/cdbengine2.cpp
+++ b/src/plugins/debugger/cdb2/cdbengine2.cpp
@@ -815,7 +815,8 @@ void CdbEngine::handleJumpToLineAddressResolution(const CdbBuiltinCommandPtr &cm
 
     QByteArray registerCmd;
     ByteArrayInputStream str(registerCmd);
-    str << "r rip=0x" << answer;
+    // PC-register depending on 64/32bit.
+    str << "r " << (m_options->is64bit ? "rip" : "eip") << "=0x" << answer;
     postCommand(registerCmd, 0);
     gotoLocation(cookie.fileName, cookie.lineNumber, true);
 }
-- 
GitLab