================ @@ -283,39 +283,42 @@ uint32_t Block::GetRangeIndexContainingAddress(const Address &addr) { return m_ranges.FindEntryIndexThatContains(file_addr - func_file_addr); } +static AddressRange ToAddressRange(const Address &func_addr, + const Block::Range &range) { + assert(func_addr.GetModule()); + return AddressRange(func_addr.GetFileAddress() + range.base, range.size, ---------------- labath wrote:
A "file address" is an established (if somewhat confusing) concept. It roughly means "address, as specified in the (object) file". In elf terms, it's the "virtual address". After the file is loaded to memory, it gets a "load address" (by adding a constant to the file address). `func_addr.GetFileAddress()` returns the (file) address of the function entry point, though that's not completely relevant in this case. The point is that addresses in the block are stored as offsets from some address (which happens to be the function entry point, but in theory we could have pick something else as well). This undoes the transformation, which confusingly doesn't happen inside this class, but (e.g.) in SymbolFileDWARF::ParseBlocksRecursive. https://github.com/llvm/llvm-project/pull/137955 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits