Added Symtab::FindSymbolByID() in preparation for enabling the minimal
symbol tables. Minimal symbol tables enable us to merge two symbols, one
debug symbol and one linker symbol, into a single symbol that can carry
just as much information and will avoid duplicate symbols in the symbol
table.

llvm-svn: 113223
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
index 9d05fac..63755cf 100644
--- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -878,6 +878,10 @@
                         case StabIncludeFileName:
                             // N_SOL - #included file name: name,,n_sect,0,address
                             type = eSymbolTypeHeaderFile;
+
+                            // We currently don't use the header files on darwin
+                            if (minimize)
+                                add_nlist = false;
                             break;
 
                         case StabCompilerParameters:  
@@ -1175,7 +1179,13 @@
                                     {
                                         const uint32_t symbol_index = indirect_symbol_index_data.GetU32 (&symbol_stub_offset);
 
-                                        Symbol *stub_symbol = symtab->SymbolAtIndex(symbol_index);
+                                        Symbol *stub_symbol;
+                                        if (minimize)
+                                            stub_symbol = symtab->FindSymbolByID (symbol_index);
+                                        else
+                                            stub_symbol = symtab->SymbolAtIndex (symbol_index);
+
+                                        assert (stub_symbol);
                                         if (stub_symbol)
                                         {
                                             Address so_addr(symbol_stub_addr, section_list);