Handle null and file symbol on doInitialization

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77354 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/ELFWriter.cpp b/lib/CodeGen/ELFWriter.cpp
index fe2ba26..5587b52 100644
--- a/lib/CodeGen/ELFWriter.cpp
+++ b/lib/CodeGen/ELFWriter.cpp
@@ -143,6 +143,11 @@
   // Add the null section, which is required to be first in the file.
   getNullSection();
 
+  // The first entry in the symtab is the null symbol and the second
+  // is a local symbol containing the module/file name
+  SymbolList.push_back(new ELFSym());
+  SymbolList.push_back(ELFSym::getFileSym());
+
   return false;
 }
 
@@ -189,7 +194,7 @@
 
   const TargetLoweringObjectFile &TLOF =
     TM.getTargetLowering()->getObjFileLowering();
-  
+
   return getSection(TLOF.getSectionForMergeableConstant(Kind)->getName(),
                     ELFSection::SHT_PROGBITS,
                     ELFSection::SHF_MERGE | ELFSection::SHF_ALLOC,
@@ -320,7 +325,7 @@
     const TargetLoweringObjectFile &TLOF =
       TM.getTargetLowering()->getObjFileLowering();
 
-    // Get ELF section from TAI
+    // Get the ELF section where this global belongs from TLOF
     const Section *S = TLOF.SectionForGlobal(GV, TM);
     unsigned SectionFlags = getElfSectionFlags(S->getKind());
 
@@ -522,9 +527,6 @@
   if (TAI->getNonexecutableStackDirective())
     getNonExecStackSection();
 
-  // Emit module name
-  SymbolList.push_back(ELFSym::getFileSym());
-
   // Emit a symbol for each section created until now, skip null section
   for (unsigned i = 1, e = SectionList.size(); i < e; ++i) {
     ELFSection &ES = *SectionList[i];
@@ -798,9 +800,6 @@
   // Size of each symtab entry.
   SymTab.EntSize = TEW->getSymTabEntrySize();
 
-  // The first entry in the symtab is the null symbol
-  SymbolList.insert(SymbolList.begin(), new ELFSym());
-
   // Reorder the symbol table with local symbols first!
   unsigned FirstNonLocalSymbol = SortSymbols();