diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2013-01-24 14:12:12 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2013-01-24 14:12:12 +0000 |
commit | 5bac013d617ab3c03cdc9ee034e5efbb03adf3de (patch) | |
tree | ae1fc65c4ddfbacacac9850ab5fb838f03c6b3c5 | |
parent | eacef325c6412820a377fe4f853eb9c7c23db9ee (diff) | |
download | external_llvm-5bac013d617ab3c03cdc9ee034e5efbb03adf3de.zip external_llvm-5bac013d617ab3c03cdc9ee034e5efbb03adf3de.tar.gz external_llvm-5bac013d617ab3c03cdc9ee034e5efbb03adf3de.tar.bz2 |
lli/RecordingMemoryManager: Free allocated sections in the destructor to satisfy --vg-leak!
FIXME: It could be generalized in MemoryManager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173349 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | tools/lli/RecordingMemoryManager.cpp | 11 | ||||
-rw-r--r-- | tools/lli/RecordingMemoryManager.h | 2 |
2 files changed, 12 insertions, 1 deletions
diff --git a/tools/lli/RecordingMemoryManager.cpp b/tools/lli/RecordingMemoryManager.cpp index 75cb978..d9715e1 100644 --- a/tools/lli/RecordingMemoryManager.cpp +++ b/tools/lli/RecordingMemoryManager.cpp @@ -15,6 +15,17 @@ #include "RecordingMemoryManager.h" using namespace llvm; +RecordingMemoryManager::~RecordingMemoryManager() { + for (SmallVectorImpl<Allocation>::iterator + I = AllocatedCodeMem.begin(), E = AllocatedCodeMem.end(); + I != E; ++I) + free(I->first.base()); + for (SmallVectorImpl<Allocation>::iterator + I = AllocatedDataMem.begin(), E = AllocatedDataMem.end(); + I != E; ++I) + free(I->first.base()); +} + uint8_t *RecordingMemoryManager:: allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID) { // The recording memory manager is just a local copy of the remote target. diff --git a/tools/lli/RecordingMemoryManager.h b/tools/lli/RecordingMemoryManager.h index 20fd0c2..85bf4e1 100644 --- a/tools/lli/RecordingMemoryManager.h +++ b/tools/lli/RecordingMemoryManager.h @@ -33,7 +33,7 @@ private: public: RecordingMemoryManager() {} - virtual ~RecordingMemoryManager() {} + virtual ~RecordingMemoryManager(); typedef SmallVectorImpl<Allocation>::const_iterator const_data_iterator; typedef SmallVectorImpl<Allocation>::const_iterator const_code_iterator; |