aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/ELFWriter.cpp
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2009-09-01 19:25:52 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2009-09-01 19:25:52 +0000
commit0bb83860f9e105f451beee16fe3cf0fe28d65a81 (patch)
treeab3b33068def489ec6e0f0de1818f7abdc45b7e0 /lib/CodeGen/ELFWriter.cpp
parentda5ea945545ca8864a873a5a33fd891ec381ec88 (diff)
downloadexternal_llvm-0bb83860f9e105f451beee16fe3cf0fe28d65a81.zip
external_llvm-0bb83860f9e105f451beee16fe3cf0fe28d65a81.tar.gz
external_llvm-0bb83860f9e105f451beee16fe3cf0fe28d65a81.tar.bz2
Fix ELF Writter related memory leaks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80717 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/ELFWriter.cpp')
-rw-r--r--lib/CodeGen/ELFWriter.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/lib/CodeGen/ELFWriter.cpp b/lib/CodeGen/ELFWriter.cpp
index b1842ff..55a2f70 100644
--- a/lib/CodeGen/ELFWriter.cpp
+++ b/lib/CodeGen/ELFWriter.cpp
@@ -93,6 +93,24 @@ ELFWriter::ELFWriter(raw_ostream &o, TargetMachine &tm)
ELFWriter::~ELFWriter() {
delete ElfCE;
delete &OutContext;
+
+ while(!SymbolList.empty()) {
+ delete SymbolList.back();
+ SymbolList.pop_back();
+ }
+
+ while(!PrivateSyms.empty()) {
+ delete PrivateSyms.back();
+ PrivateSyms.pop_back();
+ }
+
+ while(!SectionList.empty()) {
+ delete SectionList.back();
+ SectionList.pop_back();
+ }
+
+ // Release the name mangler object.
+ delete Mang; Mang = 0;
}
// doInitialization - Emit the file header and all of the global variables for
@@ -714,13 +732,6 @@ bool ELFWriter::doFinalization(Module &M) {
// Dump the sections and section table to the .o file.
OutputSectionsAndSectionTable();
- // We are done with the abstract symbols.
- SymbolList.clear();
- SectionList.clear();
- NumSections = 0;
-
- // Release the name mangler object.
- delete Mang; Mang = 0;
return false;
}