[Lldb-commits] [lldb] [lldb] Add SymbolContext::GetAddress (PR #123340)

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Wed Jan 22 06:04:07 PST 2025


================
@@ -370,6 +370,31 @@ bool SymbolContext::GetAddressRange(uint32_t scope, uint32_t range_idx,
   return false;
 }
 
+Address SymbolContext::GetAddress(uint32_t scope,
+                                  bool use_inline_block_range) const {
+  if ((scope & eSymbolContextLineEntry) && line_entry.IsValid())
+    return line_entry.range.GetBaseAddress();
+
+  if (scope & eSymbolContextBlock) {
+    Block *block_to_use = (block && use_inline_block_range)
+                              ? block->GetContainingInlinedBlock()
+                              : block;
+    if (block_to_use) {
+      Address addr;
+      block_to_use->GetStartAddress(addr);
+      return addr;
+    }
+  }
----------------
labath wrote:

> Giving a single address to a block considered as a logical entity is problematic, but the address of the start of the block referenced by a SymbolContext doesn't have that problem.

I guess, if you define the "start of a block" as "the lowest address in the block". This definition is sort of what I have a problem with because we have also defined the "start of a function" as the "lowest address in the function", but then also used it as "the entry point of the function", and this was fine until it wasn't. I don't think we're going to have the same problem with blocks that we did with functions, but I don't think this is completely right either. I also don't really have an alternative proposal, and we already do have `Block::GetStartAddress`, which I have no intention of touching, so if you say this is okay, I'm happy to go along with it.

https://github.com/llvm/llvm-project/pull/123340


More information about the lldb-commits mailing list