jasonmolenda wrote:
OK, I see in `Symtab::InitAddressIndexes` we go through the symbol table and
calculate the sizes of any entries that don't have a size based on the next
symbol, or the end of the section.
A little further in ObjectFileMachO::ParseSymtab when we add any
LC_FUNCTION_STARTS entries to the symbol table, we calculate the size of the
symbols based on the symbols we have parsed so far,
```
uint32_t symbol_byte_size = 0;
if (symbol_section) {
const addr_t section_file_addr = symbol_section->GetFileAddress();
const FunctionStarts::Entry *next_func_start_entry =
function_starts.FindNextEntry(func_start_entry);
const addr_t section_end_file_addr =
section_file_addr + symbol_section->GetByteSize();
if (next_func_start_entry) {
addr_t next_symbol_file_addr = next_func_start_entry->addr;
if (is_arm)
next_symbol_file_addr &= THUMB_ADDRESS_BIT_MASK;
symbol_byte_size = std::min<lldb::addr_t>(
next_symbol_file_addr - symbol_file_addr,
section_end_file_addr - symbol_file_addr);
} else {
symbol_byte_size = section_end_file_addr - symbol_file_addr;
}
```
and this should probably set the size to 0 as well, leaving it to
`Symtab::InitAddressIndexes` to do the same calculation. Does this sound right
to you?
https://github.com/llvm/llvm-project/pull/106791
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits