mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 19:08:21 +08:00
[lldb] Store SupportFile in FileEntry (NFC) (#85468)
This is another step towards supporting DWARF5 checksums and inline source code in LLDB.
This commit is contained in:
committed by
GitHub
parent
8ebf4084f1
commit
d5a277d309
@@ -538,7 +538,7 @@ protected:
|
||||
ElideMixedSourceAndDisassemblyLine(const ExecutionContext &exe_ctx,
|
||||
const SymbolContext &sc, LineEntry &line) {
|
||||
SourceLine sl;
|
||||
sl.file = line.file;
|
||||
sl.file = line.GetFile();
|
||||
sl.line = line.line;
|
||||
sl.column = line.column;
|
||||
return ElideMixedSourceAndDisassemblyLine(exe_ctx, sc, sl);
|
||||
|
||||
@@ -130,18 +130,28 @@ struct LineEntry {
|
||||
/// Shared pointer to the target this LineEntry belongs to.
|
||||
void ApplyFileMappings(lldb::TargetSP target_sp);
|
||||
|
||||
// Member variables.
|
||||
AddressRange range; ///< The section offset address range for this line entry.
|
||||
FileSpec file; ///< The source file, possibly mapped by the target.source-map
|
||||
///setting
|
||||
lldb::SupportFileSP
|
||||
original_file_sp; ///< The original source file, from debug info.
|
||||
uint32_t line = LLDB_INVALID_LINE_NUMBER; ///< The source line number, or zero
|
||||
///< if there is no line number
|
||||
/// information.
|
||||
uint16_t column =
|
||||
0; ///< The column number of the source line, or zero if there
|
||||
/// is no column information.
|
||||
const FileSpec &GetFile() const {
|
||||
assert(file_sp);
|
||||
return file_sp->GetSpecOnly();
|
||||
}
|
||||
|
||||
/// The section offset address range for this line entry.
|
||||
AddressRange range;
|
||||
|
||||
/// The source file, possibly mapped by the target.source-map setting.
|
||||
lldb::SupportFileSP file_sp;
|
||||
|
||||
/// The original source file, from debug info.
|
||||
lldb::SupportFileSP original_file_sp;
|
||||
|
||||
/// The source line number, or LLDB_INVALID_LINE_NUMBER if there is no line
|
||||
/// number information.
|
||||
uint32_t line = LLDB_INVALID_LINE_NUMBER;
|
||||
|
||||
/// The column number of the source line, or zero if there is no column
|
||||
/// information.
|
||||
uint16_t column = 0;
|
||||
|
||||
uint16_t is_start_of_statement : 1, ///< Indicates this entry is the beginning
|
||||
///of a statement.
|
||||
is_start_of_basic_block : 1, ///< Indicates this entry is the beginning of
|
||||
|
||||
@@ -45,6 +45,9 @@ public:
|
||||
/// Materialize the file to disk and return the path to that temporary file.
|
||||
virtual const FileSpec &Materialize() { return m_file_spec; }
|
||||
|
||||
/// Change the file name.
|
||||
void Update(const FileSpec &file_spec) { m_file_spec = file_spec; }
|
||||
|
||||
protected:
|
||||
FileSpec m_file_spec;
|
||||
Checksum m_checksum;
|
||||
|
||||
@@ -81,8 +81,8 @@ SBFileSpec SBLineEntry::GetFileSpec() const {
|
||||
LLDB_INSTRUMENT_VA(this);
|
||||
|
||||
SBFileSpec sb_file_spec;
|
||||
if (m_opaque_up.get() && m_opaque_up->file)
|
||||
sb_file_spec.SetFileSpec(m_opaque_up->file);
|
||||
if (m_opaque_up.get() && m_opaque_up->GetFile())
|
||||
sb_file_spec.SetFileSpec(m_opaque_up->GetFile());
|
||||
|
||||
return sb_file_spec;
|
||||
}
|
||||
@@ -109,9 +109,9 @@ void SBLineEntry::SetFileSpec(lldb::SBFileSpec filespec) {
|
||||
LLDB_INSTRUMENT_VA(this, filespec);
|
||||
|
||||
if (filespec.IsValid())
|
||||
ref().file = filespec.ref();
|
||||
ref().file_sp->Update(filespec.ref());
|
||||
else
|
||||
ref().file.Clear();
|
||||
ref().file_sp->Update(FileSpec());
|
||||
}
|
||||
void SBLineEntry::SetLine(uint32_t line) {
|
||||
LLDB_INSTRUMENT_VA(this, line);
|
||||
@@ -168,7 +168,7 @@ bool SBLineEntry::GetDescription(SBStream &description) {
|
||||
|
||||
if (m_opaque_up) {
|
||||
char file_path[PATH_MAX * 2];
|
||||
m_opaque_up->file.GetPath(file_path, sizeof(file_path));
|
||||
m_opaque_up->GetFile().GetPath(file_path, sizeof(file_path));
|
||||
strm.Printf("%s:%u", file_path, GetLine());
|
||||
if (GetColumn() > 0)
|
||||
strm.Printf(":%u", GetColumn());
|
||||
|
||||
@@ -819,7 +819,7 @@ SBError SBThread::StepOverUntil(lldb::SBFrame &sb_frame,
|
||||
step_file_spec = sb_file_spec.ref();
|
||||
} else {
|
||||
if (frame_sc.line_entry.IsValid())
|
||||
step_file_spec = frame_sc.line_entry.file;
|
||||
step_file_spec = frame_sc.line_entry.GetFile();
|
||||
else {
|
||||
sb_error.SetErrorString("invalid file argument or no file for frame");
|
||||
return sb_error;
|
||||
|
||||
@@ -221,7 +221,7 @@ void BreakpointResolver::SetSCMatchesByLine(
|
||||
auto &match = all_scs[0];
|
||||
auto worklist_begin = std::partition(
|
||||
all_scs.begin(), all_scs.end(), [&](const SymbolContext &sc) {
|
||||
if (sc.line_entry.file == match.line_entry.file ||
|
||||
if (sc.line_entry.GetFile() == match.line_entry.GetFile() ||
|
||||
*sc.line_entry.original_file_sp ==
|
||||
*match.line_entry.original_file_sp) {
|
||||
// When a match is found, keep track of the smallest line number.
|
||||
|
||||
@@ -147,8 +147,9 @@ void BreakpointResolverFileLine::FilterContexts(SymbolContextList &sc_list) {
|
||||
else
|
||||
continue;
|
||||
|
||||
if (file != sc.line_entry.file) {
|
||||
LLDB_LOG(log, "unexpected symbol context file {0}", sc.line_entry.file);
|
||||
if (file != sc.line_entry.GetFile()) {
|
||||
LLDB_LOG(log, "unexpected symbol context file {0}",
|
||||
sc.line_entry.GetFile());
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -223,7 +224,7 @@ void BreakpointResolverFileLine::DeduceSourceMapping(
|
||||
|
||||
const bool case_sensitive = request_file.IsCaseSensitive();
|
||||
for (const SymbolContext &sc : sc_list) {
|
||||
FileSpec sc_file = sc.line_entry.file;
|
||||
FileSpec sc_file = sc.line_entry.GetFile();
|
||||
|
||||
if (FileSpec::Equal(sc_file, request_file, /*full*/ true))
|
||||
continue;
|
||||
|
||||
@@ -780,8 +780,8 @@ private:
|
||||
} else {
|
||||
const SymbolContext &sc =
|
||||
cur_frame->GetSymbolContext(eSymbolContextLineEntry);
|
||||
if (sc.line_entry.file) {
|
||||
file = sc.line_entry.file;
|
||||
if (sc.line_entry.GetFile()) {
|
||||
file = sc.line_entry.GetFile();
|
||||
} else {
|
||||
result.AppendError("Can't find the file for the selected frame to "
|
||||
"use as the default file.");
|
||||
|
||||
@@ -158,7 +158,7 @@ protected:
|
||||
if (module_list.GetSize() &&
|
||||
module_list.GetIndexForModule(module) == LLDB_INVALID_INDEX32)
|
||||
continue;
|
||||
if (!FileSpec::Match(file_spec, line_entry.file))
|
||||
if (!FileSpec::Match(file_spec, line_entry.GetFile()))
|
||||
continue;
|
||||
if (start_line > 0 && line_entry.line < start_line)
|
||||
continue;
|
||||
@@ -239,7 +239,7 @@ protected:
|
||||
num_matches++;
|
||||
if (num_lines > 0 && num_matches > num_lines)
|
||||
break;
|
||||
assert(cu_file_spec == line_entry.file);
|
||||
assert(cu_file_spec == line_entry.GetFile());
|
||||
if (!cu_header_printed) {
|
||||
if (num_matches > 0)
|
||||
strm << "\n\n";
|
||||
@@ -760,11 +760,11 @@ protected:
|
||||
bool operator<(const SourceInfo &rhs) const {
|
||||
if (function.GetCString() < rhs.function.GetCString())
|
||||
return true;
|
||||
if (line_entry.file.GetDirectory().GetCString() <
|
||||
rhs.line_entry.file.GetDirectory().GetCString())
|
||||
if (line_entry.GetFile().GetDirectory().GetCString() <
|
||||
rhs.line_entry.GetFile().GetDirectory().GetCString())
|
||||
return true;
|
||||
if (line_entry.file.GetFilename().GetCString() <
|
||||
rhs.line_entry.file.GetFilename().GetCString())
|
||||
if (line_entry.GetFile().GetFilename().GetCString() <
|
||||
rhs.line_entry.GetFile().GetFilename().GetCString())
|
||||
return true;
|
||||
if (line_entry.line < rhs.line_entry.line)
|
||||
return true;
|
||||
@@ -799,7 +799,7 @@ protected:
|
||||
sc.function->GetEndLineSourceInfo(end_file, end_line);
|
||||
} else {
|
||||
// We have an inlined function
|
||||
start_file = source_info.line_entry.file;
|
||||
start_file = source_info.line_entry.GetFile();
|
||||
start_line = source_info.line_entry.line;
|
||||
end_line = start_line + m_options.num_lines;
|
||||
}
|
||||
|
||||
@@ -1705,7 +1705,7 @@ protected:
|
||||
line = sym_ctx.line_entry.line + m_options.m_line_offset;
|
||||
|
||||
// Try the current file, but override if asked.
|
||||
FileSpec file = sym_ctx.line_entry.file;
|
||||
FileSpec file = sym_ctx.line_entry.file_sp->GetSpecOnly();
|
||||
if (m_options.m_filenames.GetSize() == 1)
|
||||
file = m_options.m_filenames.GetFileSpecAtIndex(0);
|
||||
|
||||
|
||||
@@ -398,7 +398,7 @@ bool Address::GetDescription(Stream &s, Target &target,
|
||||
"Non-brief descriptions not implemented");
|
||||
LineEntry line_entry;
|
||||
if (CalculateSymbolContextLineEntry(line_entry)) {
|
||||
s.Printf(" (%s:%u:%u)", line_entry.file.GetFilename().GetCString(),
|
||||
s.Printf(" (%s:%u:%u)", line_entry.GetFile().GetFilename().GetCString(),
|
||||
line_entry.line, line_entry.column);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ Disassembler::GetFunctionDeclLineEntry(const SymbolContext &sc) {
|
||||
uint32_t func_decl_line;
|
||||
sc.function->GetStartLineSourceInfo(func_decl_file, func_decl_line);
|
||||
|
||||
if (func_decl_file != prologue_end_line.file &&
|
||||
if (func_decl_file != prologue_end_line.file_sp->GetSpecOnly() &&
|
||||
func_decl_file != prologue_end_line.original_file_sp->GetSpecOnly())
|
||||
return {};
|
||||
|
||||
@@ -354,7 +354,7 @@ void Disassembler::PrintInstructions(Debugger &debugger, const ArchSpec &arch,
|
||||
}
|
||||
if (sc.line_entry.IsValid()) {
|
||||
SourceLine this_line;
|
||||
this_line.file = sc.line_entry.file;
|
||||
this_line.file = sc.line_entry.GetFile();
|
||||
this_line.line = sc.line_entry.line;
|
||||
this_line.column = sc.line_entry.column;
|
||||
if (!ElideMixedSourceAndDisassemblyLine(exe_ctx, sc, this_line))
|
||||
@@ -406,7 +406,7 @@ void Disassembler::PrintInstructions(Debugger &debugger, const ArchSpec &arch,
|
||||
uint32_t func_decl_line;
|
||||
sc.function->GetStartLineSourceInfo(func_decl_file,
|
||||
func_decl_line);
|
||||
if (func_decl_file == prologue_end_line.file ||
|
||||
if (func_decl_file == prologue_end_line.GetFile() ||
|
||||
func_decl_file ==
|
||||
prologue_end_line.original_file_sp->GetSpecOnly()) {
|
||||
// Add all the lines between the function declaration and
|
||||
@@ -439,7 +439,7 @@ void Disassembler::PrintInstructions(Debugger &debugger, const ArchSpec &arch,
|
||||
|
||||
if (sc != prev_sc && sc.comp_unit && sc.line_entry.IsValid()) {
|
||||
SourceLine this_line;
|
||||
this_line.file = sc.line_entry.file;
|
||||
this_line.file = sc.line_entry.GetFile();
|
||||
this_line.line = sc.line_entry.line;
|
||||
|
||||
if (!ElideMixedSourceAndDisassemblyLine(exe_ctx, sc,
|
||||
|
||||
@@ -1792,7 +1792,7 @@ bool FormatEntity::Format(const Entry &entry, Stream &s,
|
||||
if (sc && sc->line_entry.IsValid()) {
|
||||
Module *module = sc->module_sp.get();
|
||||
if (module) {
|
||||
if (DumpFile(s, sc->line_entry.file, (FileKind)entry.number))
|
||||
if (DumpFile(s, sc->line_entry.GetFile(), (FileKind)entry.number))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6894,7 +6894,8 @@ public:
|
||||
if (context_changed)
|
||||
m_selected_line = m_pc_line;
|
||||
|
||||
if (m_file_sp && m_file_sp->GetFileSpec() == m_sc.line_entry.file) {
|
||||
if (m_file_sp &&
|
||||
m_file_sp->GetFileSpec() == m_sc.line_entry.GetFile()) {
|
||||
// Same file, nothing to do, we should either have the lines or
|
||||
// not (source file missing)
|
||||
if (m_selected_line >= static_cast<size_t>(m_first_visible_line)) {
|
||||
@@ -6909,8 +6910,8 @@ public:
|
||||
} else {
|
||||
// File changed, set selected line to the line with the PC
|
||||
m_selected_line = m_pc_line;
|
||||
m_file_sp =
|
||||
m_debugger.GetSourceManager().GetFile(m_sc.line_entry.file);
|
||||
m_file_sp = m_debugger.GetSourceManager().GetFile(
|
||||
m_sc.line_entry.GetFile());
|
||||
if (m_file_sp) {
|
||||
const size_t num_lines = m_file_sp->GetNumLines();
|
||||
m_line_width = 1;
|
||||
@@ -7000,7 +7001,7 @@ public:
|
||||
LineEntry bp_loc_line_entry;
|
||||
if (bp_loc_sp->GetAddress().CalculateSymbolContextLineEntry(
|
||||
bp_loc_line_entry)) {
|
||||
if (m_file_sp->GetFileSpec() == bp_loc_line_entry.file) {
|
||||
if (m_file_sp->GetFileSpec() == bp_loc_line_entry.GetFile()) {
|
||||
bp_lines.insert(bp_loc_line_entry.line);
|
||||
}
|
||||
}
|
||||
@@ -7477,7 +7478,7 @@ public:
|
||||
LineEntry bp_loc_line_entry;
|
||||
if (bp_loc_sp->GetAddress().CalculateSymbolContextLineEntry(
|
||||
bp_loc_line_entry)) {
|
||||
if (m_file_sp->GetFileSpec() == bp_loc_line_entry.file &&
|
||||
if (m_file_sp->GetFileSpec() == bp_loc_line_entry.GetFile() &&
|
||||
m_selected_line + 1 == bp_loc_line_entry.line) {
|
||||
bool removed =
|
||||
exe_ctx.GetTargetRef().RemoveBreakpointByID(bp_sp->GetID());
|
||||
|
||||
@@ -418,7 +418,7 @@ bool SourceManager::GetDefaultFileAndLine(FileSpec &file_spec, uint32_t &line) {
|
||||
if (sc.function->GetAddressRange()
|
||||
.GetBaseAddress()
|
||||
.CalculateSymbolContextLineEntry(line_entry)) {
|
||||
SetDefaultFileAndLine(line_entry.file, line_entry.line);
|
||||
SetDefaultFileAndLine(line_entry.GetFile(), line_entry.line);
|
||||
file_spec = m_last_file_spec;
|
||||
line = m_last_line;
|
||||
return true;
|
||||
|
||||
@@ -417,7 +417,7 @@ bool ClangExpressionSourceCode::GetText(
|
||||
if (sc.comp_unit && sc.line_entry.IsValid()) {
|
||||
DebugMacros *dm = sc.comp_unit->GetDebugMacros();
|
||||
if (dm) {
|
||||
AddMacroState state(sc.line_entry.file, sc.line_entry.line);
|
||||
AddMacroState state(sc.line_entry.GetFile(), sc.line_entry.line);
|
||||
AddMacros(dm, sc.comp_unit, state, debug_macros_stream);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,13 +106,13 @@ bool lldb_private::formatters::LibcxxFunctionSummaryProvider(
|
||||
case CPPLanguageRuntime::LibCppStdFunctionCallableCase::Lambda:
|
||||
stream.Printf(
|
||||
" Lambda in File %s at Line %u",
|
||||
callable_info.callable_line_entry.file.GetFilename().GetCString(),
|
||||
callable_info.callable_line_entry.GetFile().GetFilename().GetCString(),
|
||||
callable_info.callable_line_entry.line);
|
||||
break;
|
||||
case CPPLanguageRuntime::LibCppStdFunctionCallableCase::CallableObject:
|
||||
stream.Printf(
|
||||
" Function in File %s at Line %u",
|
||||
callable_info.callable_line_entry.file.GetFilename().GetCString(),
|
||||
callable_info.callable_line_entry.GetFile().GetFilename().GetCString(),
|
||||
callable_info.callable_line_entry.line);
|
||||
break;
|
||||
case CPPLanguageRuntime::LibCppStdFunctionCallableCase::FreeOrMemberFunction:
|
||||
|
||||
@@ -320,7 +320,7 @@ void CompileUnit::ResolveSymbolContext(
|
||||
src_location_spec.GetColumn() ? std::optional<uint16_t>(line_entry.column)
|
||||
: std::nullopt;
|
||||
|
||||
SourceLocationSpec found_entry(line_entry.file, line_entry.line, column,
|
||||
SourceLocationSpec found_entry(line_entry.GetFile(), line_entry.line, column,
|
||||
inlines, exact);
|
||||
|
||||
while (line_idx != UINT32_MAX) {
|
||||
|
||||
@@ -289,7 +289,7 @@ void Function::GetStartLineSourceInfo(FileSpec &source_file,
|
||||
if (line_table->FindLineEntryByAddress(GetAddressRange().GetBaseAddress(),
|
||||
line_entry, nullptr)) {
|
||||
line_no = line_entry.line;
|
||||
source_file = line_entry.file;
|
||||
source_file = line_entry.GetFile();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -311,7 +311,7 @@ void Function::GetEndLineSourceInfo(FileSpec &source_file, uint32_t &line_no) {
|
||||
LineEntry line_entry;
|
||||
if (line_table->FindLineEntryByAddress(scratch_addr, line_entry, nullptr)) {
|
||||
line_no = line_entry.line;
|
||||
source_file = line_entry.file;
|
||||
source_file = line_entry.GetFile();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,12 +14,14 @@
|
||||
using namespace lldb_private;
|
||||
|
||||
LineEntry::LineEntry()
|
||||
: range(), file(), is_start_of_statement(0), is_start_of_basic_block(0),
|
||||
is_prologue_end(0), is_epilogue_begin(0), is_terminal_entry(0) {}
|
||||
: range(), file_sp(std::make_shared<SupportFile>()),
|
||||
original_file_sp(std::make_shared<SupportFile>()),
|
||||
is_start_of_statement(0), is_start_of_basic_block(0), is_prologue_end(0),
|
||||
is_epilogue_begin(0), is_terminal_entry(0) {}
|
||||
|
||||
void LineEntry::Clear() {
|
||||
range.Clear();
|
||||
file.Clear();
|
||||
file_sp = std::make_shared<SupportFile>();
|
||||
original_file_sp = std::make_shared<SupportFile>();
|
||||
line = LLDB_INVALID_LINE_NUMBER;
|
||||
column = 0;
|
||||
@@ -35,6 +37,7 @@ bool LineEntry::IsValid() const {
|
||||
}
|
||||
|
||||
bool LineEntry::DumpStopContext(Stream *s, bool show_fullpaths) const {
|
||||
const FileSpec &file = GetFile();
|
||||
if (file) {
|
||||
if (show_fullpaths)
|
||||
file.Dump(s->AsRawOstream());
|
||||
@@ -67,7 +70,7 @@ bool LineEntry::Dump(Stream *s, Target *target, bool show_file,
|
||||
return false;
|
||||
}
|
||||
if (show_file)
|
||||
*s << ", file = " << file;
|
||||
*s << ", file = " << file_sp->GetSpecOnly();
|
||||
if (line)
|
||||
s->Printf(", line = %u", line);
|
||||
if (column)
|
||||
@@ -103,7 +106,7 @@ bool LineEntry::GetDescription(Stream *s, lldb::DescriptionLevel level,
|
||||
Address::DumpStyleFileAddress);
|
||||
}
|
||||
|
||||
*s << ": " << file;
|
||||
*s << ": " << file_sp->GetSpecOnly();
|
||||
|
||||
if (line) {
|
||||
s->Printf(":%u", line);
|
||||
@@ -173,7 +176,7 @@ int LineEntry::Compare(const LineEntry &a, const LineEntry &b) {
|
||||
if (a.column > b.column)
|
||||
return +1;
|
||||
|
||||
return FileSpec::Compare(a.file, b.file, true);
|
||||
return FileSpec::Compare(a.GetFile(), b.GetFile(), true);
|
||||
}
|
||||
|
||||
AddressRange LineEntry::GetSameLineContiguousAddressRange(
|
||||
@@ -242,6 +245,6 @@ void LineEntry::ApplyFileMappings(lldb::TargetSP target_sp) {
|
||||
// Apply any file remappings to our file.
|
||||
if (auto new_file_spec = target_sp->GetSourcePathMap().FindFile(
|
||||
original_file_sp->GetSpecOnly()))
|
||||
file = *new_file_spec;
|
||||
file_sp->Update(*new_file_spec);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -288,8 +288,8 @@ bool LineTable::ConvertEntryAtIndexToLineEntry(uint32_t idx,
|
||||
else
|
||||
line_entry.range.SetByteSize(0);
|
||||
|
||||
line_entry.file =
|
||||
m_comp_unit->GetSupportFiles().GetFileSpecAtIndex(entry.file_idx);
|
||||
line_entry.file_sp =
|
||||
m_comp_unit->GetSupportFiles().GetSupportFileAtIndex(entry.file_idx);
|
||||
line_entry.original_file_sp =
|
||||
m_comp_unit->GetSupportFiles().GetSupportFileAtIndex(entry.file_idx);
|
||||
line_entry.line = entry.line;
|
||||
|
||||
@@ -472,8 +472,8 @@ bool SymbolContext::GetParentOfInlinedScope(const Address &curr_frame_pc,
|
||||
curr_inlined_block->GetInlinedFunctionInfo();
|
||||
next_frame_pc = range.GetBaseAddress();
|
||||
next_frame_sc.line_entry.range.GetBaseAddress() = next_frame_pc;
|
||||
next_frame_sc.line_entry.file =
|
||||
curr_inlined_block_inlined_info->GetCallSite().GetFile();
|
||||
next_frame_sc.line_entry.file_sp = std::make_shared<SupportFile>(
|
||||
curr_inlined_block_inlined_info->GetCallSite().GetFile());
|
||||
next_frame_sc.line_entry.original_file_sp =
|
||||
std::make_shared<SupportFile>(
|
||||
curr_inlined_block_inlined_info->GetCallSite().GetFile());
|
||||
|
||||
@@ -1922,7 +1922,7 @@ bool StackFrame::GetStatus(Stream &strm, bool show_frame_info, bool show_source,
|
||||
|
||||
size_t num_lines =
|
||||
target->GetSourceManager().DisplaySourceLinesWithLineNumbers(
|
||||
m_sc.line_entry.file, start_line, m_sc.line_entry.column,
|
||||
m_sc.line_entry.GetFile(), start_line, m_sc.line_entry.column,
|
||||
source_lines_before, source_lines_after, "->", &strm);
|
||||
if (num_lines != 0)
|
||||
have_source = true;
|
||||
|
||||
@@ -884,9 +884,9 @@ void StackFrameList::SetDefaultFileAndLineToSelectedFrame() {
|
||||
GetFrameAtIndex(GetSelectedFrameIndex(DoNoSelectMostRelevantFrame)));
|
||||
if (frame_sp) {
|
||||
SymbolContext sc = frame_sp->GetSymbolContext(eSymbolContextLineEntry);
|
||||
if (sc.line_entry.file)
|
||||
if (sc.line_entry.GetFile())
|
||||
m_thread.CalculateTarget()->GetSourceManager().SetDefaultFileAndLine(
|
||||
sc.line_entry.file, sc.line_entry.line);
|
||||
sc.line_entry.GetFile(), sc.line_entry.line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,10 +302,10 @@ bool Thread::SetSelectedFrameByIndexNoisily(uint32_t frame_idx,
|
||||
SymbolContext frame_sc(
|
||||
frame_sp->GetSymbolContext(eSymbolContextLineEntry));
|
||||
const Debugger &debugger = GetProcess()->GetTarget().GetDebugger();
|
||||
if (debugger.GetUseExternalEditor() && frame_sc.line_entry.file &&
|
||||
if (debugger.GetUseExternalEditor() && frame_sc.line_entry.GetFile() &&
|
||||
frame_sc.line_entry.line != 0) {
|
||||
if (llvm::Error e = Host::OpenFileInExternalEditor(
|
||||
debugger.GetExternalEditor(), frame_sc.line_entry.file,
|
||||
debugger.GetExternalEditor(), frame_sc.line_entry.GetFile(),
|
||||
frame_sc.line_entry.line)) {
|
||||
LLDB_LOG_ERROR(GetLog(LLDBLog::Host), std::move(e),
|
||||
"OpenFileInExternalEditor failed: {0}");
|
||||
@@ -1753,10 +1753,10 @@ size_t Thread::GetStatus(Stream &strm, uint32_t start_frame,
|
||||
if (frame_sp) {
|
||||
SymbolContext frame_sc(
|
||||
frame_sp->GetSymbolContext(eSymbolContextLineEntry));
|
||||
if (frame_sc.line_entry.line != 0 && frame_sc.line_entry.file) {
|
||||
if (frame_sc.line_entry.line != 0 && frame_sc.line_entry.GetFile()) {
|
||||
if (llvm::Error e = Host::OpenFileInExternalEditor(
|
||||
target->GetDebugger().GetExternalEditor(),
|
||||
frame_sc.line_entry.file, frame_sc.line_entry.line)) {
|
||||
frame_sc.line_entry.GetFile(), frame_sc.line_entry.line)) {
|
||||
LLDB_LOG_ERROR(GetLog(LLDBLog::Host), std::move(e),
|
||||
"OpenFileInExternalEditor failed: {0}");
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ static bool FileLineAndColumnMatches(const LineEntry &a, const LineEntry &b) {
|
||||
return false;
|
||||
if (a.column != b.column)
|
||||
return false;
|
||||
return a.file == b.file;
|
||||
return a.GetFile() == b.GetFile();
|
||||
}
|
||||
|
||||
/// Compare the symbol contexts of the provided \a SymbolInfo
|
||||
@@ -396,7 +396,7 @@ public:
|
||||
m_j.attribute(
|
||||
"source",
|
||||
ToOptionalString(
|
||||
item.symbol_info->sc.line_entry.file.GetPath().c_str()));
|
||||
item.symbol_info->sc.line_entry.GetFile().GetPath().c_str()));
|
||||
m_j.attribute("line", item.symbol_info->sc.line_entry.line);
|
||||
m_j.attribute("column", item.symbol_info->sc.line_entry.column);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user