Author: Ebuka Ezike
Date: 2025-04-27T12:13:38+01:00
New Revision: 7670af5a274b801adf83fcc0c7c4011e0be0bc91

URL: 
https://github.com/llvm/llvm-project/commit/7670af5a274b801adf83fcc0c7c4011e0be0bc91
DIFF: 
https://github.com/llvm/llvm-project/commit/7670af5a274b801adf83fcc0c7c4011e0be0bc91.diff

LOG: [lldb][lldb-dap] Respect x86 disassembly flavor setting (#134722)

Ensure the disassembly respects the "target.x86-disassembly-flavor"
setting for x86 and x86_64 targets.

Depends on #134626

---------

Signed-off-by: Ebuka Ezike <yerimy...@gmail.com>
Co-authored-by: Jonas Devlieghere <jo...@devlieghere.com>

Added: 
    

Modified: 
    lldb/source/Commands/CommandObjectDisassemble.cpp
    lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Commands/CommandObjectDisassemble.cpp 
b/lldb/source/Commands/CommandObjectDisassemble.cpp
index 70e687e19ac6d..5774effb9e9ba 100644
--- a/lldb/source/Commands/CommandObjectDisassemble.cpp
+++ b/lldb/source/Commands/CommandObjectDisassemble.cpp
@@ -190,6 +190,7 @@ void 
CommandObjectDisassemble::CommandOptions::OptionParsingStarting(
     // architecture.  For now GetDisassemblyFlavor is really only valid for x86
     // (and for the llvm assembler plugin, but I'm papering over that since 
that
     // is the only disassembler plugin we have...
+    // This logic is duplicated in `Handler/DisassembleRequestHandler`.
     if (target->GetArchitecture().GetTriple().getArch() == llvm::Triple::x86 ||
         target->GetArchitecture().GetTriple().getArch() ==
             llvm::Triple::x86_64) {

diff  --git a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp 
b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
index f0cb7be70210d..d738f54ff1a9f 100644
--- a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
+++ b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
@@ -116,7 +116,24 @@ void DisassembleRequestHandler::operator()(
 
   const auto inst_count =
       GetInteger<int64_t>(arguments, "instructionCount").value_or(0);
-  lldb::SBInstructionList insts = dap.target.ReadInstructions(addr, 
inst_count);
+
+  std::string flavor_string;
+  const auto target_triple = llvm::StringRef(dap.target.GetTriple());
+  // This handles both 32 and 64bit x86 architecture. The logic is duplicated 
in
+  // `CommandObjectDisassemble::CommandOptions::OptionParsingStarting`
+  if (target_triple.starts_with("x86")) {
+    const lldb::SBStructuredData flavor =
+        dap.debugger.GetSetting("target.x86-disassembly-flavor");
+
+    const size_t str_length = flavor.GetStringValue(nullptr, 0);
+    if (str_length != 0) {
+      flavor_string.resize(str_length + 1);
+      flavor.GetStringValue(flavor_string.data(), flavor_string.length());
+    }
+  }
+
+  lldb::SBInstructionList insts =
+      dap.target.ReadInstructions(addr, inst_count, flavor_string.c_str());
 
   if (!insts.IsValid()) {
     response["success"] = false;


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to