From 3e1ae6bf3a36331e41f92fd6b5bcba34a0d3c017 Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Thu, 6 Feb 2014 15:40:23 +0100
Subject: [PATCH] Debugger: Make 'Jump to Address' work with LLDB

Change-Id: Iba288df0db85063146ed9dc09351844924e22bdc
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
---
 share/qtcreator/debugger/lldbbridge.py   | 11 +++++++----
 src/plugins/debugger/lldb/lldbengine.cpp |  7 +++++--
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index bcf70338f5b..22923700432 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -1488,16 +1488,19 @@ class Dumper(DumperBase):
         else:
             self.reportData()
 
-    def executeJumpToLine(self, args):
+    def executeJumpToLocation(self, args):
         frame = self.currentFrame()
         self.report('state="stopped"')
         if not frame:
             self.reportStatus("No frame available.")
             self.reportLocation()
             return
-        bp = self.target.BreakpointCreateByLocation(
-                    str(args["file"]), int(args["line"]))
-        isWatch = isinstance(bp, lldb.SBWatchpoint)
+        addr = args.get('address', 0)
+        if addr:
+            bp = self.target.BreakpointCreateByAddress(addr)
+        else:
+            bp = self.target.BreakpointCreateByLocation(
+                        str(args['file']), int(args['line']))
         if bp.GetNumLocations() == 0:
             self.target.BreakpointDelete(bp.GetID())
             self.reportStatus("No target location found.")
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index a1a60a2b1ed..54ac32b28e4 100644
--- a/src/plugins/debugger/lldb/lldbengine.cpp
+++ b/src/plugins/debugger/lldb/lldbengine.cpp
@@ -378,8 +378,11 @@ void LldbEngine::executeJumpToLine(const ContextData &data)
 {
     resetLocation();
     notifyInferiorRunRequested();
-    runCommand(Command("executeJumpToLine")
-        .arg("file", data.fileName).arg("line", data.lineNumber));
+    Command cmd("executeJumpToLocation");
+    cmd.arg("file", data.fileName);
+    cmd.arg("line", data.lineNumber);
+    cmd.arg("address", data.address);
+    runCommand(cmd);
 }
 
 void LldbEngine::activateFrame(int frameIndex)
-- 
GitLab