tberghammer added inline comments.

================
Comment at: source/Symbol/Symtab.cpp:974-978
@@ -973,5 +973,7 @@
                         Symbol &symbol = m_symbols[entry.data];
-
-                        symbol.SetByteSize(end_section_file_addr - 
symbol_file_addr);
-                        symbol.SetSizeIsSynthesized(true);
+                        if (!symbol.GetByteSizeIsValid())
+                        {
+                            symbol.SetByteSize(end_section_file_addr - 
symbol_file_addr);
+                            symbol.SetSizeIsSynthesized(true);
+                        }
                     }
----------------
clayborg wrote:
> You can remove this if statement right? Symbol byte size will always be valid 
> no?
I case of ELF all synbol size will be valid but I think this code is used for 
mach-o as well where they won't. The condition is kind of saying "if (mach-o)"

================
Comment at: source/Symbol/Symtab.cpp:1070-1071
@@ +1069,4 @@
+        Symbol* symbol = SymbolAtIndex(entry->data);
+        if (symbol->ContainsFileAddress(file_addr))
+            return symbol;
+    }
----------------
clayborg wrote:
> Why do we need to check this? Won't 
> "m_file_addr_to_index.FindEntryThatContains(file_addr);" already check this 
> for us?
The m_file_addr_to_index initialized with extending all 0 byte entry until the 
next entry so it can handle mach-o as well and because of this an entry can 
cover a larger address range then it's symbol.

An alternative implementation would be to sort the symbols based on address. 
Then calculate the size for all of them if they are not valid (mach-o) and 
finally generate the entries based on that. That way we can get rid of this 
condition but Symtab::InitAddressIndexes would become more complicated and most 
likely a bit less efficient.


http://reviews.llvm.org/D16186



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to