[Lldb-commits] [lldb] [lldb][lldb-dap] Respect x86 disassembly flavor setting (PR #134722)
Ebuka Ezike via lldb-commits
lldb-commits at lists.llvm.org
Fri Apr 25 09:38:49 PDT 2025
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 <yerimyah1 at gmail.com>
Date: Mon, 7 Apr 2025 20:43:30 +0100
Subject: [PATCH 1/4] [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 <yerimyah1 at gmail.com>
Date: Wed, 16 Apr 2025 20:50:11 +0100
Subject: [PATCH 2/4] [lldb][lldb-dap] add review changes
Signed-off-by: Ebuka Ezike <yerimyah1 at 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");
>From d8ea6305ccfa6adaf5b55bc4e48edcd4031678a4 Mon Sep 17 00:00:00 2001
From: Ebuka Ezike <yerimyah1 at gmail.com>
Date: Fri, 25 Apr 2025 17:38:01 +0100
Subject: [PATCH 3/4] Update
lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
Co-authored-by: Jonas Devlieghere <jonas at devlieghere.com>
---
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 7489c63a61afe..3a292728e42f1 100644
--- a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
+++ b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
@@ -117,7 +117,7 @@ void DisassembleRequestHandler::operator()(
const auto inst_count =
GetInteger<int64_t>(arguments, "instructionCount").value_or(0);
- std::string flavor_string{};
+ std::string flavor_string;
const auto target_triple = llvm::StringRef(dap.target.GetTriple());
// this handles both 32 and 64bit x86 architecture.
// this logic is also duplicated in
>From ebbf286ad020911a2e7d2ada645f328d6e10f06a Mon Sep 17 00:00:00 2001
From: Ebuka Ezike <yerimyah1 at gmail.com>
Date: Fri, 25 Apr 2025 17:38:40 +0100
Subject: [PATCH 4/4] Update
lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
Co-authored-by: Jonas Devlieghere <jonas at devlieghere.com>
---
lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
index 3a292728e42f1..d738f54ff1a9f 100644
--- a/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
+++ b/lldb/tools/lldb-dap/Handler/DisassembleRequestHandler.cpp
@@ -119,8 +119,7 @@ void DisassembleRequestHandler::operator()(
std::string flavor_string;
const auto target_triple = llvm::StringRef(dap.target.GetTriple());
- // this handles both 32 and 64bit x86 architecture.
- // this logic is also duplicated in
+ // 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 =
More information about the lldb-commits
mailing list