summaryrefslogtreecommitdiff
path: root/tools/llvm-symbolizer
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2013-06-28 15:08:29 +0000
committerAlexey Samsonov <samsonov@google.com>2013-06-28 15:08:29 +0000
commit0ed872cdd1e5d7d60983854ea49aff13aa3280c1 (patch)
treeaca0b81e9c2deafa1fad4d59587b58de3577a670 /tools/llvm-symbolizer
parent8c6e3248e90605f0ff7249a9727fe46e79297b25 (diff)
downloadllvm-0ed872cdd1e5d7d60983854ea49aff13aa3280c1.tar.gz
llvm-0ed872cdd1e5d7d60983854ea49aff13aa3280c1.tar.bz2
llvm-0ed872cdd1e5d7d60983854ea49aff13aa3280c1.tar.xz
llvm-symbolizer: don't leave dangling pointers after flushing LLVMSymbolizer. Add a destructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185154 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-symbolizer')
-rw-r--r--tools/llvm-symbolizer/LLVMSymbolize.cpp2
-rw-r--r--tools/llvm-symbolizer/LLVMSymbolize.h3
2 files changed, 5 insertions, 0 deletions
diff --git a/tools/llvm-symbolizer/LLVMSymbolize.cpp b/tools/llvm-symbolizer/LLVMSymbolize.cpp
index 59564161b4..57f34c2472 100644
--- a/tools/llvm-symbolizer/LLVMSymbolize.cpp
+++ b/tools/llvm-symbolizer/LLVMSymbolize.cpp
@@ -202,6 +202,8 @@ std::string LLVMSymbolizer::symbolizeData(const std::string &ModuleName,
void LLVMSymbolizer::flush() {
DeleteContainerSeconds(Modules);
DeleteContainerPointers(ParsedBinariesAndObjects);
+ BinaryForPath.clear();
+ ObjectFileForArch.clear();
}
static std::string getDarwinDWARFResourceForPath(const std::string &Path) {
diff --git a/tools/llvm-symbolizer/LLVMSymbolize.h b/tools/llvm-symbolizer/LLVMSymbolize.h
index d1f2285aa8..03c765cc9c 100644
--- a/tools/llvm-symbolizer/LLVMSymbolize.h
+++ b/tools/llvm-symbolizer/LLVMSymbolize.h
@@ -48,6 +48,9 @@ public:
};
LLVMSymbolizer(const Options &Opts = Options()) : Opts(Opts) {}
+ ~LLVMSymbolizer() {
+ flush();
+ }
// Returns the result of symbolization for module name/offset as
// a string (possibly containing newlines).