From 0589523525a156e096baf975c5e6e7e4112cb673 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 16 Jul 2005 17:41:06 +0000 Subject: [PATCH] Only get the .bss and .data sections when needed instead of unconditionally. This allows is to not emit empty sections when .data or .bss is not used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22457 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/ELFWriter.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/lib/CodeGen/ELFWriter.cpp b/lib/CodeGen/ELFWriter.cpp index afd6c3b05ca..d53afde6a45 100644 --- a/lib/CodeGen/ELFWriter.cpp +++ b/lib/CodeGen/ELFWriter.cpp @@ -223,8 +223,7 @@ bool ELFWriter::doInitialization(Module &M) { return false; } -void ELFWriter::EmitGlobal(GlobalVariable *GV, ELFSection &DataSection, - ELFSection &BSSSection) { +void ELFWriter::EmitGlobal(GlobalVariable *GV) { // If this is an external global, emit it now. TODO: Note that it would be // better to ignore the symbol here and only add it to the symbol table if // referenced. @@ -264,6 +263,7 @@ void ELFWriter::EmitGlobal(GlobalVariable *GV, ELFSection &DataSection, // Handle alignment. Ensure section is aligned at least as much as required // by this symbol. + ELFSection &BSSSection = getBSSSection(); BSSSection.Align = std::max(BSSSection.Align, Align); // Within the section, emit enough virtual padding to get us to an alignment @@ -315,17 +315,9 @@ bool ELFWriter::runOnMachineFunction(MachineFunction &MF) { bool ELFWriter::doFinalization(Module &M) { // Okay, the ELF header and .text sections have been completed, build the // .data, .bss, and "common" sections next. - ELFSection &DataSection = - getSection(".data", ELFSection::SHT_PROGBITS, - ELFSection::SHF_WRITE | ELFSection::SHF_ALLOC); - - ELFSection &BSSSection = - getSection(".bss", ELFSection::SHT_NOBITS, - ELFSection::SHF_WRITE | ELFSection::SHF_ALLOC); - for (Module::global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I) - EmitGlobal(I, DataSection, BSSSection); + EmitGlobal(I); // Emit the symbol table now, if non-empty. EmitSymbolTable();