Handle null and file symbol on doInitialization
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Tue, 28 Jul 2009 19:25:33 +0000 (19:25 +0000)
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Tue, 28 Jul 2009 19:25:33 +0000 (19:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77354 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/ELFCodeEmitter.cpp
lib/CodeGen/ELFWriter.cpp

index a62a884e04bfe26bf7721936ce94560d7200720b..d363adbe0d04e372f85e40a1831382bcdf6551fa 100644 (file)
@@ -36,7 +36,7 @@ namespace llvm {
 /// startFunction - This callback is invoked when a new machine function is
 /// about to be emitted.
 void ELFCodeEmitter::startFunction(MachineFunction &MF) {
-  DEBUG(errs() << "processing function: " 
+  DEBUG(errs() << "processing function: "
         << MF.getFunction()->getName() << "\n");
 
   // Get the ELF Section that this function belongs in.
index fe2ba26244634857e78bbddba3fff75064f6d708..5587b52023789f4865aa1027bacf451fc0324a2b 100644 (file)
@@ -143,6 +143,11 @@ bool ELFWriter::doInitialization(Module &M) {
   // 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 @@ ELFSection &ELFWriter::getConstantPoolSection(MachineConstantPoolEntry &CPE) {
 
   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 @@ void ELFWriter::EmitGlobal(const GlobalValue *GV) {
     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 @@ bool ELFWriter::doFinalization(Module &M) {
   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 @@ void ELFWriter::EmitSymbolTable() {
   // 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();