aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/lldb/source/Commands
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2024-01-24 19:17:23 +0000
committerDimitry Andric <dim@FreeBSD.org>2024-04-06 20:13:49 +0000
commit7a6dacaca14b62ca4b74406814becb87a3fefac0 (patch)
tree273a870ac27484bb1f5ee55e7ef0dc0d061f63e7 /contrib/llvm-project/lldb/source/Commands
parent46c59ea9b61755455ff6bf9f3e7b834e1af634ea (diff)
parent4df029cc74e5ec124f14a5682e44999ce4f086df (diff)
Diffstat (limited to 'contrib/llvm-project/lldb/source/Commands')
-rw-r--r--contrib/llvm-project/lldb/source/Commands/CommandObjectBreakpoint.cpp54
-rw-r--r--contrib/llvm-project/lldb/source/Commands/CommandObjectFrame.cpp1
-rw-r--r--contrib/llvm-project/lldb/source/Commands/CommandObjectSource.cpp4
-rw-r--r--contrib/llvm-project/lldb/source/Commands/CommandObjectTarget.cpp38
4 files changed, 53 insertions, 44 deletions
diff --git a/contrib/llvm-project/lldb/source/Commands/CommandObjectBreakpoint.cpp b/contrib/llvm-project/lldb/source/Commands/CommandObjectBreakpoint.cpp
index f9ba68eda3ff..1661d5d9b743 100644
--- a/contrib/llvm-project/lldb/source/Commands/CommandObjectBreakpoint.cpp
+++ b/contrib/llvm-project/lldb/source/Commands/CommandObjectBreakpoint.cpp
@@ -2488,8 +2488,12 @@ void CommandObjectMultiwordBreakpoint::VerifyIDs(
// breakpoint ids in the range, and shove all of those breakpoint id strings
// into TEMP_ARGS.
- BreakpointIDList::FindAndReplaceIDRanges(args, target, allow_locations,
- purpose, result, temp_args);
+ if (llvm::Error err = BreakpointIDList::FindAndReplaceIDRanges(
+ args, target, allow_locations, purpose, temp_args)) {
+ result.SetError(std::move(err));
+ return;
+ }
+ result.SetStatus(eReturnStatusSuccessFinishNoResult);
// NOW, convert the list of breakpoint id strings in TEMP_ARGS into an actual
// BreakpointIDList:
@@ -2501,33 +2505,31 @@ void CommandObjectMultiwordBreakpoint::VerifyIDs(
// At this point, all of the breakpoint ids that the user passed in have
// been converted to breakpoint IDs and put into valid_ids.
- if (result.Succeeded()) {
- // Now that we've converted everything from args into a list of breakpoint
- // ids, go through our tentative list of breakpoint id's and verify that
- // they correspond to valid/currently set breakpoints.
-
- const size_t count = valid_ids->GetSize();
- for (size_t i = 0; i < count; ++i) {
- BreakpointID cur_bp_id = valid_ids->GetBreakpointIDAtIndex(i);
- Breakpoint *breakpoint =
- target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get();
- if (breakpoint != nullptr) {
- const size_t num_locations = breakpoint->GetNumLocations();
- if (static_cast<size_t>(cur_bp_id.GetLocationID()) > num_locations) {
- StreamString id_str;
- BreakpointID::GetCanonicalReference(
- &id_str, cur_bp_id.GetBreakpointID(), cur_bp_id.GetLocationID());
- i = valid_ids->GetSize() + 1;
- result.AppendErrorWithFormat(
- "'%s' is not a currently valid breakpoint/location id.\n",
- id_str.GetData());
- }
- } else {
+ // Now that we've converted everything from args into a list of breakpoint
+ // ids, go through our tentative list of breakpoint id's and verify that
+ // they correspond to valid/currently set breakpoints.
+
+ const size_t count = valid_ids->GetSize();
+ for (size_t i = 0; i < count; ++i) {
+ BreakpointID cur_bp_id = valid_ids->GetBreakpointIDAtIndex(i);
+ Breakpoint *breakpoint =
+ target->GetBreakpointByID(cur_bp_id.GetBreakpointID()).get();
+ if (breakpoint != nullptr) {
+ const size_t num_locations = breakpoint->GetNumLocations();
+ if (static_cast<size_t>(cur_bp_id.GetLocationID()) > num_locations) {
+ StreamString id_str;
+ BreakpointID::GetCanonicalReference(
+ &id_str, cur_bp_id.GetBreakpointID(), cur_bp_id.GetLocationID());
i = valid_ids->GetSize() + 1;
result.AppendErrorWithFormat(
- "'%d' is not a currently valid breakpoint ID.\n",
- cur_bp_id.GetBreakpointID());
+ "'%s' is not a currently valid breakpoint/location id.\n",
+ id_str.GetData());
}
+ } else {
+ i = valid_ids->GetSize() + 1;
+ result.AppendErrorWithFormat(
+ "'%d' is not a currently valid breakpoint ID.\n",
+ cur_bp_id.GetBreakpointID());
}
}
}
diff --git a/contrib/llvm-project/lldb/source/Commands/CommandObjectFrame.cpp b/contrib/llvm-project/lldb/source/Commands/CommandObjectFrame.cpp
index e7cb861c2b01..17a7e858b24e 100644
--- a/contrib/llvm-project/lldb/source/Commands/CommandObjectFrame.cpp
+++ b/contrib/llvm-project/lldb/source/Commands/CommandObjectFrame.cpp
@@ -494,6 +494,7 @@ protected:
case eValueTypeVTableEntry:
return false;
}
+ llvm_unreachable("Unexpected scope value");
}
/// Finds all the variables in `all_variables` whose name matches `regex`,
diff --git a/contrib/llvm-project/lldb/source/Commands/CommandObjectSource.cpp b/contrib/llvm-project/lldb/source/Commands/CommandObjectSource.cpp
index cabf6f0436f1..fde74f02aea6 100644
--- a/contrib/llvm-project/lldb/source/Commands/CommandObjectSource.cpp
+++ b/contrib/llvm-project/lldb/source/Commands/CommandObjectSource.cpp
@@ -747,13 +747,13 @@ protected:
bool operator==(const SourceInfo &rhs) const {
return function == rhs.function &&
- line_entry.original_file == rhs.line_entry.original_file &&
+ *line_entry.original_file_sp == *rhs.line_entry.original_file_sp &&
line_entry.line == rhs.line_entry.line;
}
bool operator!=(const SourceInfo &rhs) const {
return function != rhs.function ||
- line_entry.original_file != rhs.line_entry.original_file ||
+ *line_entry.original_file_sp != *rhs.line_entry.original_file_sp ||
line_entry.line != rhs.line_entry.line;
}
diff --git a/contrib/llvm-project/lldb/source/Commands/CommandObjectTarget.cpp b/contrib/llvm-project/lldb/source/Commands/CommandObjectTarget.cpp
index bc8bc51356c8..c3ecdb7700c2 100644
--- a/contrib/llvm-project/lldb/source/Commands/CommandObjectTarget.cpp
+++ b/contrib/llvm-project/lldb/source/Commands/CommandObjectTarget.cpp
@@ -53,6 +53,7 @@
#include "lldb/Utility/FileSpec.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/State.h"
+#include "lldb/Utility/Stream.h"
#include "lldb/Utility/StructuredData.h"
#include "lldb/Utility/Timer.h"
#include "lldb/lldb-enumerations.h"
@@ -1531,9 +1532,10 @@ static void DumpOsoFilesTable(Stream &strm,
});
}
-static void DumpAddress(ExecutionContextScope *exe_scope,
- const Address &so_addr, bool verbose, bool all_ranges,
- Stream &strm, llvm::StringRef pattern = "") {
+static void
+DumpAddress(ExecutionContextScope *exe_scope, const Address &so_addr,
+ bool verbose, bool all_ranges, Stream &strm,
+ std::optional<Stream::HighlightSettings> settings = std::nullopt) {
strm.IndentMore();
strm.Indent(" Address: ");
so_addr.Dump(&strm, exe_scope, Address::DumpStyleModuleWithFileAddress);
@@ -1544,13 +1546,13 @@ static void DumpAddress(ExecutionContextScope *exe_scope,
const uint32_t save_indent = strm.GetIndentLevel();
strm.SetIndentLevel(save_indent + 13);
so_addr.Dump(&strm, exe_scope, Address::DumpStyleResolvedDescription,
- Address::DumpStyleInvalid, UINT32_MAX, false, pattern);
+ Address::DumpStyleInvalid, UINT32_MAX, false, settings);
strm.SetIndentLevel(save_indent);
// Print out detailed address information when verbose is enabled
if (verbose) {
strm.EOL();
so_addr.Dump(&strm, exe_scope, Address::DumpStyleDetailedSymbolContext,
- Address::DumpStyleInvalid, UINT32_MAX, all_ranges, pattern);
+ Address::DumpStyleInvalid, UINT32_MAX, all_ranges, settings);
}
strm.IndentLess();
}
@@ -1615,6 +1617,9 @@ static uint32_t LookupSymbolInModule(CommandInterpreter &interpreter,
DumpFullpath(strm, &module->GetFileSpec(), 0);
strm.PutCString(":\n");
strm.IndentMore();
+ Stream::HighlightSettings settings(
+ name, interpreter.GetDebugger().GetRegexMatchAnsiPrefix(),
+ interpreter.GetDebugger().GetRegexMatchAnsiSuffix());
for (uint32_t i = 0; i < num_matches; ++i) {
Symbol *symbol = symtab->SymbolAtIndex(match_indexes[i]);
if (symbol) {
@@ -1622,18 +1627,18 @@ static uint32_t LookupSymbolInModule(CommandInterpreter &interpreter,
DumpAddress(
interpreter.GetExecutionContext().GetBestExecutionContextScope(),
symbol->GetAddressRef(), verbose, all_ranges, strm,
- use_color && name_is_regex ? name : nullptr);
+ use_color && name_is_regex
+ ? std::optional<Stream::HighlightSettings>{settings}
+ : std::nullopt);
strm.EOL();
} else {
strm.IndentMore();
strm.Indent(" Name: ");
- llvm::StringRef ansi_prefix =
- interpreter.GetDebugger().GetRegexMatchAnsiPrefix();
- llvm::StringRef ansi_suffix =
- interpreter.GetDebugger().GetRegexMatchAnsiSuffix();
strm.PutCStringColorHighlighted(
symbol->GetDisplayName().GetStringRef(),
- use_color ? name : nullptr, ansi_prefix, ansi_suffix);
+ use_color && name_is_regex
+ ? std::optional<Stream::HighlightSettings>{settings}
+ : std::nullopt);
strm.EOL();
strm.Indent(" Value: ");
strm.Printf("0x%16.16" PRIx64 "\n", symbol->GetRawValue());
@@ -1650,10 +1655,10 @@ static uint32_t LookupSymbolInModule(CommandInterpreter &interpreter,
return num_matches;
}
-static void DumpSymbolContextList(ExecutionContextScope *exe_scope,
- Stream &strm,
- const SymbolContextList &sc_list,
- bool verbose, bool all_ranges) {
+static void DumpSymbolContextList(
+ ExecutionContextScope *exe_scope, Stream &strm,
+ const SymbolContextList &sc_list, bool verbose, bool all_ranges,
+ std::optional<Stream::HighlightSettings> settings = std::nullopt) {
strm.IndentMore();
bool first_module = true;
for (const SymbolContext &sc : sc_list) {
@@ -1664,7 +1669,8 @@ static void DumpSymbolContextList(ExecutionContextScope *exe_scope,
sc.GetAddressRange(eSymbolContextEverything, 0, true, range);
- DumpAddress(exe_scope, range.GetBaseAddress(), verbose, all_ranges, strm);
+ DumpAddress(exe_scope, range.GetBaseAddress(), verbose, all_ranges, strm,
+ settings);
first_module = false;
}
strm.IndentLess();