[Lldb-commits] [lldb] [lldb-dap] Fix address comparison in DisassembleRequestHandler (PR #140975)

Ely Ronnen via lldb-commits lldb-commits at lists.llvm.org
Thu May 22 13:47:54 PDT 2025


https://github.com/eronnen updated https://github.com/llvm/llvm-project/pull/140975

>From 419aa75b4f0d3fe54a3e08c8223906224bad2822 Mon Sep 17 00:00:00 2001
From: Ely Ronnen <elyronnen at gmail.com>
Date: Thu, 22 May 2025 02:44:31 +0200
Subject: [PATCH 1/3] [lldb-dap] attempt to fix test_disassemble

---
 lldb/test/API/tools/lldb-dap/disassemble/TestDAP_disassemble.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lldb/test/API/tools/lldb-dap/disassemble/TestDAP_disassemble.py b/lldb/test/API/tools/lldb-dap/disassemble/TestDAP_disassemble.py
index a8b51864d118b..1e2a32cb693fc 100644
--- a/lldb/test/API/tools/lldb-dap/disassemble/TestDAP_disassemble.py
+++ b/lldb/test/API/tools/lldb-dap/disassemble/TestDAP_disassemble.py
@@ -20,6 +20,7 @@ def test_disassemble(self):
         program = self.getBuildArtifact("a.out")
         self.build_and_launch(program)
         source = "main.c"
+        self.source_path = os.path.join(os.getcwd(), source)
         self.set_source_breakpoints(source, [line_number(source, "// breakpoint 1")])
         self.continue_to_next_stop()
 

>From bb3903c9ee8eef76ffbb6bbe7b1d13961f149353 Mon Sep 17 00:00:00 2001
From: Ely Ronnen <elyronnen at gmail.com>
Date: Thu, 22 May 2025 22:43:43 +0200
Subject: [PATCH 2/3] DisassembleRequestHandler address comparison workaround

---
 .../API/tools/lldb-dap/disassemble/TestDAP_disassemble.py  | 1 -
 lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp  | 7 +++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/lldb/test/API/tools/lldb-dap/disassemble/TestDAP_disassemble.py b/lldb/test/API/tools/lldb-dap/disassemble/TestDAP_disassemble.py
index 1e2a32cb693fc..a8b51864d118b 100644
--- a/lldb/test/API/tools/lldb-dap/disassemble/TestDAP_disassemble.py
+++ b/lldb/test/API/tools/lldb-dap/disassemble/TestDAP_disassemble.py
@@ -20,7 +20,6 @@ def test_disassemble(self):
         program = self.getBuildArtifact("a.out")
         self.build_and_launch(program)
         source = "main.c"
-        self.source_path = os.path.join(os.getcwd(), source)
         self.set_source_breakpoints(source, [line_number(source, "// breakpoint 1")])
         self.continue_to_next_stop()
 
diff --git a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
index 9aa6995e5d668..81129fa23ecf6 100644
--- a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
+++ b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
@@ -87,6 +87,13 @@ static DisassembledInstruction ConvertSBInstructionToDisassembledInstruction(
 
   auto addr = inst.GetAddress();
   const auto inst_addr = addr.GetLoadAddress(target);
+  
+  // FIXME: This is a workaround - this address might come from
+  // disassembly that started in a different section, and thus
+  // comparisons between this object and other address objects with the
+  // same load address will return false.
+  addr = lldb::SBAddress(inst_addr, target);
+
   const char *m = inst.GetMnemonic(target);
   const char *o = inst.GetOperands(target);
   const char *c = inst.GetComment(target);

>From 5bba26fc1e6da69826c5795609e629dc30050bf7 Mon Sep 17 00:00:00 2001
From: Ely Ronnen <elyronnen at gmail.com>
Date: Thu, 22 May 2025 22:47:43 +0200
Subject: [PATCH 3/3] format

---
 lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
index 81129fa23ecf6..c9061ef19f17a 100644
--- a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
+++ b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
@@ -87,7 +87,7 @@ static DisassembledInstruction ConvertSBInstructionToDisassembledInstruction(
 
   auto addr = inst.GetAddress();
   const auto inst_addr = addr.GetLoadAddress(target);
-  
+
   // FIXME: This is a workaround - this address might come from
   // disassembly that started in a different section, and thus
   // comparisons between this object and other address objects with the



More information about the lldb-commits mailing list