[Lldb-commits] [lldb] [lldb] Make LineEntry AddressRange member optional (PR #158811)
Med Ismail Bennani via lldb-commits
lldb-commits at lists.llvm.org
Tue Dec 2 18:41:32 PST 2025
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 <ismail at bennani.ma>
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 <ismail at bennani.ma>
---
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
More information about the lldb-commits
mailing list