https://github.com/medismailben updated https://github.com/llvm/llvm-project/pull/158811
>From d588fcece4756658ef5ca28dcacc36bd51dcf7ea Mon Sep 17 00:00:00 2001 From: Med Ismail Bennani <[email protected]> Date: Tue, 2 Dec 2025 18:37:54 -0800 Subject: [PATCH] [lldb/Symbol] Relax LineEntry validity for PC-less frames LineEntry::IsValid() no longer requires a valid address range, enabling line entries created using the SBAPI to be set in SBSymbolContext. Signed-off-by: Med Ismail Bennani <[email protected]> --- lldb/source/API/SBLineEntry.cpp | 4 ++-- lldb/source/Symbol/LineEntry.cpp | 4 +--- .../scripted_process/dummy_scripted_process.py | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/lldb/source/API/SBLineEntry.cpp b/lldb/source/API/SBLineEntry.cpp index 0f4936f32a074..94d58af606c03 100644 --- a/lldb/source/API/SBLineEntry.cpp +++ b/lldb/source/API/SBLineEntry.cpp @@ -50,7 +50,7 @@ SBAddress SBLineEntry::GetStartAddress() const { LLDB_INSTRUMENT_VA(this); SBAddress sb_address; - if (m_opaque_up) + if (m_opaque_up && m_opaque_up->range.IsValid()) sb_address.SetAddress(m_opaque_up->range.GetBaseAddress()); return sb_address; @@ -60,7 +60,7 @@ SBAddress SBLineEntry::GetEndAddress() const { LLDB_INSTRUMENT_VA(this); SBAddress sb_address; - if (m_opaque_up) { + if (m_opaque_up && m_opaque_up->range.IsValid()) { sb_address.SetAddress(m_opaque_up->range.GetBaseAddress()); sb_address.OffsetAddress(m_opaque_up->range.GetByteSize()); } diff --git a/lldb/source/Symbol/LineEntry.cpp b/lldb/source/Symbol/LineEntry.cpp index c941a6927cb93..3491dd1363500 100644 --- a/lldb/source/Symbol/LineEntry.cpp +++ b/lldb/source/Symbol/LineEntry.cpp @@ -32,9 +32,7 @@ void LineEntry::Clear() { is_terminal_entry = 0; } -bool LineEntry::IsValid() const { - return range.GetBaseAddress().IsValid() && line != LLDB_INVALID_LINE_NUMBER; -} +bool LineEntry::IsValid() const { return line != LLDB_INVALID_LINE_NUMBER; } bool LineEntry::DumpStopContext(Stream *s, bool show_fullpaths) const { const FileSpec &file = file_sp->GetSpecOnly(); diff --git a/lldb/test/API/functionalities/scripted_process/dummy_scripted_process.py b/lldb/test/API/functionalities/scripted_process/dummy_scripted_process.py index 835267221ddb4..a9459682e70a8 100644 --- a/lldb/test/API/functionalities/scripted_process/dummy_scripted_process.py +++ b/lldb/test/API/functionalities/scripted_process/dummy_scripted_process.py @@ -74,6 +74,20 @@ def __init__(self, process, args): self.frames.append(DummyScriptedFrame(self, args, len(self.frames), "bar")) self.frames.append(DummyScriptedFrame(self, args, len(self.frames), "foo")) + cwd = os.path.dirname(os.path.abspath(__file__)) + + le = lldb.SBLineEntry() + le.SetFileSpec(lldb.SBFileSpec(os.path.join(cwd, "baz.cpp"), True)) + le.SetLine(9) + le.SetColumn(10) + + sym_ctx = lldb.SBSymbolContext() + sym_ctx.SetLineEntry(le) + + self.frames.append( + DummyScriptedFrame(self, args, len(self.frames), "baz", sym_ctx) + ) + def get_thread_id(self) -> int: return 0x19 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
