https://github.com/da-viper updated https://github.com/llvm/llvm-project/pull/134722
>From ababee38bf0dae6c12e09225bf84ec2bf03e7982 Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <yerimy...@gmail.com> Date: Mon, 7 Apr 2025 20:43:30 +0100 Subject: [PATCH 1/2] [lldb][lldb-dap] Respect x86 disassembly flavor setting Ensure the disassembly respects the "target.x86-disassembly-flavor" setting for x86 and x86_64 targets. Depends on #134626 --- .../Handler/DisassembleRequestHandler.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp index f0cb7be70210d..0fd9390623046 100644 --- a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp @@ -116,7 +116,22 @@ 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()); + if (target_triple.starts_with("x86_64") || 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; >From c69872d867a6e0dc50784c8c69c75c9d5535b67b Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <yerimy...@gmail.com> Date: Wed, 16 Apr 2025 20:50:11 +0100 Subject: [PATCH 2/2] [lldb][lldb-dap] add review changes Signed-off-by: Ebuka Ezike <yerimy...@gmail.com> --- lldb/source/Commands/CommandObjectDisassemble.cpp | 1 + lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lldb/source/Commands/CommandObjectDisassemble.cpp b/lldb/source/Commands/CommandObjectDisassemble.cpp index 70e687e19ac6d..fa9311ad9624e 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 also 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 0fd9390623046..7489c63a61afe 100644 --- a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp @@ -119,7 +119,10 @@ void DisassembleRequestHandler::operator()( std::string flavor_string{}; const auto target_triple = llvm::StringRef(dap.target.GetTriple()); - if (target_triple.starts_with("x86_64") || target_triple.starts_with("x86")) { + // this handles both 32 and 64bit x86 architecture. + // this logic is also duplicated in + // `CommandObjectDisassemble::CommandOptions::OptionParsingStarting` + if (target_triple.starts_with("x86")) { const lldb::SBStructuredData flavor = dap.debugger.GetSetting("target.x86-disassembly-flavor"); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits