================
@@ -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:

Okay, everything you've said now makes sense to me, including the part about 
the confusion between the function block and the function itself (it is as you 
described, for the block we would return the lowest address).

I think we could fix that by changing Block::GetStartAddress for function 
blocks. Basically to change this:
```
  if (function) {
    addr = function->GetAddress();
    addr.Slide(m_ranges.GetEntryRef(0).GetRangeBase());
    return true;
  }
```

into something like this:
```
  if (function) {
    addr = function->GetAddress();
    if (bool is_function_block = GetParent() == nullptr; !is_function_block)
      addr.Slide(m_ranges.GetEntryRef(0).GetRangeBase());
    return true;
  }
```

Would that be acceptable?

The other option I see is to ditch the SymbolContextItem flags and rename the 
function into something that makes it clear that it only considers functions 
and symbols. The implementation of that should be easy, we only need to figure 
out the name. I don't want it to be too obscure, as I think this is the thing 
that a lot of callers will actually want to use, but it should also be clear 
about what its doing. `GetFunctionOrSymbolAddress` is the best I can come up 
with right now.

https://github.com/llvm/llvm-project/pull/123340
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to