Skip to content

Commit

Permalink
[lldb] Change SymbolContext::GetAddressRangeFromHereToEndLine to retu…
Browse files Browse the repository at this point in the history
…rn Expected (NFC) (#110718)

Signed-off-by: AbdAlRahman Gad <[email protected]>
Co-authored-by: Adrian Prantl <[email protected]>
  • Loading branch information
AbdAlRahmanGad and adrian-prantl authored Oct 8, 2024
1 parent cc5ddae commit 6f2ebc4
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 22 deletions.
4 changes: 2 additions & 2 deletions lldb/include/lldb/Symbol/SymbolContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,8 @@ class SymbolContext {
bool GetAddressRange(uint32_t scope, uint32_t range_idx,
bool use_inline_block_range, AddressRange &range) const;

bool GetAddressRangeFromHereToEndLine(uint32_t end_line, AddressRange &range,
Status &error);
llvm::Error GetAddressRangeFromHereToEndLine(uint32_t end_line,
AddressRange &range);

/// Find the best global data symbol visible from this context.
///
Expand Down
5 changes: 4 additions & 1 deletion lldb/source/API/SBThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -605,8 +605,11 @@ void SBThread::StepInto(const char *target_name, uint32_t end_line,
if (end_line == LLDB_INVALID_LINE_NUMBER)
range = sc.line_entry.range;
else {
if (!sc.GetAddressRangeFromHereToEndLine(end_line, range, error.ref()))
llvm::Error err = sc.GetAddressRangeFromHereToEndLine(end_line, range);
if (err) {
error = Status::FromErrorString(llvm::toString(std::move(err)).c_str());
return;
}
}

const LazyBool step_out_avoids_code_without_debug_info =
Expand Down
10 changes: 5 additions & 5 deletions lldb/source/Commands/CommandObjectThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -489,11 +489,11 @@ class CommandObjectThreadStepWithTypeAndScope : public CommandObjectParsed {
AddressRange range;
SymbolContext sc = frame->GetSymbolContext(eSymbolContextEverything);
if (m_options.m_end_line != LLDB_INVALID_LINE_NUMBER) {
Status error;
if (!sc.GetAddressRangeFromHereToEndLine(m_options.m_end_line, range,
error)) {
result.AppendErrorWithFormat("invalid end-line option: %s.",
error.AsCString());
llvm::Error err =
sc.GetAddressRangeFromHereToEndLine(m_options.m_end_line, range);
if (err) {
result.AppendErrorWithFormatv("invalid end-line option: {0}.",
llvm::toString(std::move(err)));
return;
}
} else if (m_options.m_end_line_is_block_end) {
Expand Down
23 changes: 9 additions & 14 deletions lldb/source/Symbol/SymbolContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -706,20 +706,18 @@ LineEntry SymbolContext::GetFunctionStartLineEntry() const {
return LineEntry();
}

bool SymbolContext::GetAddressRangeFromHereToEndLine(uint32_t end_line,
AddressRange &range,
Status &error) {
llvm::Error
SymbolContext::GetAddressRangeFromHereToEndLine(uint32_t end_line,
AddressRange &range) {
if (!line_entry.IsValid()) {
error = Status::FromErrorString("Symbol context has no line table.");
return false;
return llvm::createStringError("Symbol context has no line table.");
}

range = line_entry.range;
if (line_entry.line > end_line) {
error = Status::FromErrorStringWithFormat(
return llvm::createStringError(
"end line option %d must be after the current line: %d", end_line,
line_entry.line);
return false;
}

uint32_t line_index = 0;
Expand All @@ -740,35 +738,32 @@ bool SymbolContext::GetAddressRangeFromHereToEndLine(uint32_t end_line,
if (!found) {
// Can't find the index of the SymbolContext's line entry in the
// SymbolContext's CompUnit.
error = Status::FromErrorString(
return llvm::createStringError(
"Can't find the current line entry in the CompUnit - can't process "
"the end-line option");
return false;
}

line_index = comp_unit->FindLineEntry(line_index, end_line, nullptr, false,
&end_entry);
if (line_index == UINT32_MAX) {
error = Status::FromErrorStringWithFormat(
return llvm::createStringError(
"could not find a line table entry corresponding "
"to end line number %d",
end_line);
return false;
}

Block *func_block = GetFunctionBlock();
if (func_block && func_block->GetRangeIndexContainingAddress(
end_entry.range.GetBaseAddress()) == UINT32_MAX) {
error = Status::FromErrorStringWithFormat(
return llvm::createStringError(
"end line number %d is not contained within the current function.",
end_line);
return false;
}

lldb::addr_t range_size = end_entry.range.GetBaseAddress().GetFileAddress() -
range.GetBaseAddress().GetFileAddress();
range.SetByteSize(range_size);
return true;
return llvm::Error::success();
}

const Symbol *SymbolContext::FindBestGlobalDataSymbol(ConstString name,
Expand Down

0 comments on commit 6f2ebc4

Please sign in to comment.