[Lldb-commits] [lldb] [lldb] Adding const modifier to SBAddress methods (PR #142275)
Ely Ronnen via lldb-commits
lldb-commits at lists.llvm.org
Sat May 31 07:54:20 PDT 2025
https://github.com/eronnen created https://github.com/llvm/llvm-project/pull/142275
I don't know if adding `const` specifier is considered breaking the API, but if not it could be useful as it allows for `lldb-dap` to change some objects to `const &`
>From 85e5ac0369b3d2cb263b82912af90762545ca496 Mon Sep 17 00:00:00 2001
From: Ely Ronnen <elyronnen at gmail.com>
Date: Sat, 31 May 2025 12:30:13 +0200
Subject: [PATCH] Adding const modifier to SBAddress methods
---
lldb/include/lldb/API/SBAddress.h | 18 +++++++++---------
lldb/include/lldb/API/SBTarget.h | 2 +-
lldb/source/API/SBAddress.cpp | 18 +++++++++---------
lldb/source/API/SBTarget.cpp | 2 +-
lldb/tools/lldb-dap/JSONUtils.cpp | 4 ++--
lldb/tools/lldb-dap/LLDBUtils.cpp | 2 +-
lldb/tools/lldb-dap/LLDBUtils.h | 2 +-
lldb/tools/lldb-dap/ProtocolUtils.cpp | 7 ++++---
lldb/tools/lldb-dap/ProtocolUtils.h | 3 ++-
9 files changed, 30 insertions(+), 28 deletions(-)
diff --git a/lldb/include/lldb/API/SBAddress.h b/lldb/include/lldb/API/SBAddress.h
index 430dad4862dbf..3f58ae7bcfd82 100644
--- a/lldb/include/lldb/API/SBAddress.h
+++ b/lldb/include/lldb/API/SBAddress.h
@@ -56,7 +56,7 @@ class LLDB_API SBAddress {
// will only return valid values if the address has been resolved to a code
// or data address using "void SBAddress::SetLoadAddress(...)" or
// "lldb::SBAddress SBTarget::ResolveLoadAddress (...)".
- lldb::SBSymbolContext GetSymbolContext(uint32_t resolve_scope);
+ lldb::SBSymbolContext GetSymbolContext(uint32_t resolve_scope) const;
// The following functions grab individual objects for a given address and
// are less efficient if you want more than one symbol related objects. Use
@@ -69,21 +69,21 @@ class LLDB_API SBAddress {
// One or more bits from the SymbolContextItem enumerations can be logically
// OR'ed together to more efficiently retrieve multiple symbol objects.
- lldb::SBSection GetSection();
+ lldb::SBSection GetSection() const;
- lldb::addr_t GetOffset();
+ lldb::addr_t GetOffset() const;
- lldb::SBModule GetModule();
+ lldb::SBModule GetModule() const;
- lldb::SBCompileUnit GetCompileUnit();
+ lldb::SBCompileUnit GetCompileUnit() const;
- lldb::SBFunction GetFunction();
+ lldb::SBFunction GetFunction() const;
- lldb::SBBlock GetBlock();
+ lldb::SBBlock GetBlock() const;
- lldb::SBSymbol GetSymbol();
+ lldb::SBSymbol GetSymbol() const;
- lldb::SBLineEntry GetLineEntry();
+ lldb::SBLineEntry GetLineEntry() const;
protected:
friend class SBAddressRange;
diff --git a/lldb/include/lldb/API/SBTarget.h b/lldb/include/lldb/API/SBTarget.h
index 2776a8f9010fe..90df1e8152330 100644
--- a/lldb/include/lldb/API/SBTarget.h
+++ b/lldb/include/lldb/API/SBTarget.h
@@ -585,7 +585,7 @@ class LLDB_API SBTarget {
lldb::addr_t vm_addr);
SBSymbolContext ResolveSymbolContextForAddress(const SBAddress &addr,
- uint32_t resolve_scope);
+ uint32_t resolve_scope) const;
/// Read target memory. If a target process is running then memory
/// is read from here. Otherwise the memory is read from the object
diff --git a/lldb/source/API/SBAddress.cpp b/lldb/source/API/SBAddress.cpp
index e519f0bcc83c6..f5aef0eef58a3 100644
--- a/lldb/source/API/SBAddress.cpp
+++ b/lldb/source/API/SBAddress.cpp
@@ -149,7 +149,7 @@ bool SBAddress::OffsetAddress(addr_t offset) {
return false;
}
-lldb::SBSection SBAddress::GetSection() {
+lldb::SBSection SBAddress::GetSection() const {
LLDB_INSTRUMENT_VA(this);
lldb::SBSection sb_section;
@@ -158,7 +158,7 @@ lldb::SBSection SBAddress::GetSection() {
return sb_section;
}
-lldb::addr_t SBAddress::GetOffset() {
+lldb::addr_t SBAddress::GetOffset() const {
LLDB_INSTRUMENT_VA(this);
if (m_opaque_up->IsValid())
@@ -200,7 +200,7 @@ bool SBAddress::GetDescription(SBStream &description) {
return true;
}
-SBModule SBAddress::GetModule() {
+SBModule SBAddress::GetModule() const {
LLDB_INSTRUMENT_VA(this);
SBModule sb_module;
@@ -209,7 +209,7 @@ SBModule SBAddress::GetModule() {
return sb_module;
}
-SBSymbolContext SBAddress::GetSymbolContext(uint32_t resolve_scope) {
+SBSymbolContext SBAddress::GetSymbolContext(uint32_t resolve_scope) const {
LLDB_INSTRUMENT_VA(this, resolve_scope);
SBSymbolContext sb_sc;
@@ -219,7 +219,7 @@ SBSymbolContext SBAddress::GetSymbolContext(uint32_t resolve_scope) {
return sb_sc;
}
-SBCompileUnit SBAddress::GetCompileUnit() {
+SBCompileUnit SBAddress::GetCompileUnit() const {
LLDB_INSTRUMENT_VA(this);
SBCompileUnit sb_comp_unit;
@@ -228,7 +228,7 @@ SBCompileUnit SBAddress::GetCompileUnit() {
return sb_comp_unit;
}
-SBFunction SBAddress::GetFunction() {
+SBFunction SBAddress::GetFunction() const {
LLDB_INSTRUMENT_VA(this);
SBFunction sb_function;
@@ -237,7 +237,7 @@ SBFunction SBAddress::GetFunction() {
return sb_function;
}
-SBBlock SBAddress::GetBlock() {
+SBBlock SBAddress::GetBlock() const {
LLDB_INSTRUMENT_VA(this);
SBBlock sb_block;
@@ -246,7 +246,7 @@ SBBlock SBAddress::GetBlock() {
return sb_block;
}
-SBSymbol SBAddress::GetSymbol() {
+SBSymbol SBAddress::GetSymbol() const {
LLDB_INSTRUMENT_VA(this);
SBSymbol sb_symbol;
@@ -255,7 +255,7 @@ SBSymbol SBAddress::GetSymbol() {
return sb_symbol;
}
-SBLineEntry SBAddress::GetLineEntry() {
+SBLineEntry SBAddress::GetLineEntry() const {
LLDB_INSTRUMENT_VA(this);
SBLineEntry sb_line_entry;
diff --git a/lldb/source/API/SBTarget.cpp b/lldb/source/API/SBTarget.cpp
index f26f7951edc6f..f7ace76aa3770 100644
--- a/lldb/source/API/SBTarget.cpp
+++ b/lldb/source/API/SBTarget.cpp
@@ -633,7 +633,7 @@ lldb::SBAddress SBTarget::ResolvePastLoadAddress(uint32_t stop_id,
SBSymbolContext
SBTarget::ResolveSymbolContextForAddress(const SBAddress &addr,
- uint32_t resolve_scope) {
+ uint32_t resolve_scope) const {
LLDB_INSTRUMENT_VA(this, addr, resolve_scope);
SBSymbolContext sb_sc;
diff --git a/lldb/tools/lldb-dap/JSONUtils.cpp b/lldb/tools/lldb-dap/JSONUtils.cpp
index 573f3eba00f62..ada93aace48d0 100644
--- a/lldb/tools/lldb-dap/JSONUtils.cpp
+++ b/lldb/tools/lldb-dap/JSONUtils.cpp
@@ -581,8 +581,8 @@ llvm::json::Value CreateStackFrame(lldb::SBFrame &frame,
EmplaceSafeString(object, "name", frame_name);
- auto target = frame.GetThread().GetProcess().GetTarget();
- auto source = CreateSource(frame.GetPCAddress(), target);
+ auto source = CreateSource(frame.GetPCAddress(),
+ frame.GetThread().GetProcess().GetTarget());
if (!IsAssemblySource(source)) {
// This is a normal source with a valid line entry.
auto line_entry = frame.GetLineEntry();
diff --git a/lldb/tools/lldb-dap/LLDBUtils.cpp b/lldb/tools/lldb-dap/LLDBUtils.cpp
index 4db6caa1af38b..b500008061a34 100644
--- a/lldb/tools/lldb-dap/LLDBUtils.cpp
+++ b/lldb/tools/lldb-dap/LLDBUtils.cpp
@@ -252,7 +252,7 @@ std::string GetSBFileSpecPath(const lldb::SBFileSpec &file_spec) {
return path;
}
-lldb::SBLineEntry GetLineEntryForAddress(lldb::SBTarget &target,
+lldb::SBLineEntry GetLineEntryForAddress(const lldb::SBTarget &target,
const lldb::SBAddress &address) {
lldb::SBSymbolContext sc = target.ResolveSymbolContextForAddress(
address, lldb::eSymbolContextLineEntry);
diff --git a/lldb/tools/lldb-dap/LLDBUtils.h b/lldb/tools/lldb-dap/LLDBUtils.h
index 9db721a47ccf7..31cf31b89d83e 100644
--- a/lldb/tools/lldb-dap/LLDBUtils.h
+++ b/lldb/tools/lldb-dap/LLDBUtils.h
@@ -182,7 +182,7 @@ std::string GetSBFileSpecPath(const lldb::SBFileSpec &file_spec);
///
/// \return
/// The line entry for the given address.
-lldb::SBLineEntry GetLineEntryForAddress(lldb::SBTarget &target,
+lldb::SBLineEntry GetLineEntryForAddress(const lldb::SBTarget &target,
const lldb::SBAddress &address);
/// Helper for sending telemetry to lldb server, if client-telemetry is enabled.
diff --git a/lldb/tools/lldb-dap/ProtocolUtils.cpp b/lldb/tools/lldb-dap/ProtocolUtils.cpp
index b760a81b73959..d715b33e7e431 100644
--- a/lldb/tools/lldb-dap/ProtocolUtils.cpp
+++ b/lldb/tools/lldb-dap/ProtocolUtils.cpp
@@ -15,7 +15,7 @@
namespace lldb_dap {
static bool ShouldDisplayAssemblySource(
- lldb::SBAddress address,
+ const lldb::SBAddress &address,
lldb::StopDisassemblyType stop_disassembly_display) {
if (stop_disassembly_display == lldb::eStopDisassemblyTypeNever)
return false;
@@ -40,7 +40,7 @@ static bool ShouldDisplayAssemblySource(
}
static protocol::Source CreateAssemblySource(const lldb::SBTarget &target,
- lldb::SBAddress address) {
+ const lldb::SBAddress &address) {
protocol::Source source;
auto symbol = address.GetSymbol();
@@ -87,7 +87,8 @@ protocol::Source CreateSource(const lldb::SBFileSpec &file) {
return source;
}
-protocol::Source CreateSource(lldb::SBAddress address, lldb::SBTarget &target) {
+protocol::Source CreateSource(const lldb::SBAddress &address,
+ const lldb::SBTarget &target) {
lldb::SBDebugger debugger = target.GetDebugger();
lldb::StopDisassemblyType stop_disassembly_display =
GetStopDisassemblyDisplay(debugger);
diff --git a/lldb/tools/lldb-dap/ProtocolUtils.h b/lldb/tools/lldb-dap/ProtocolUtils.h
index 6e4f07d6e3470..8dff253749c6e 100644
--- a/lldb/tools/lldb-dap/ProtocolUtils.h
+++ b/lldb/tools/lldb-dap/ProtocolUtils.h
@@ -40,7 +40,8 @@ protocol::Source CreateSource(const lldb::SBFileSpec &file);
/// \return
/// A "Source" JSON object that follows the formal JSON
/// definition outlined by Microsoft.
-protocol::Source CreateSource(lldb::SBAddress address, lldb::SBTarget &target);
+protocol::Source CreateSource(const lldb::SBAddress &address,
+ const lldb::SBTarget &target);
/// Checks if the given source is for assembly code.
bool IsAssemblySource(const protocol::Source &source);
More information about the lldb-commits
mailing list