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
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to