summaryrefslogtreecommitdiff
path: root/tools/llvm-symbolizer
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-04-22 05:26:14 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-04-22 05:26:14 +0000
commitf749021c54827d98214791ed1cc074984a20eaa4 (patch)
treef39872bedab574cadc8ff65ccb28d6fd32e324ca /tools/llvm-symbolizer
parent073440f3d4604d8906eb5fd4ce769d5f3680915d (diff)
downloadllvm-f749021c54827d98214791ed1cc074984a20eaa4.tar.gz
llvm-f749021c54827d98214791ed1cc074984a20eaa4.tar.bz2
llvm-f749021c54827d98214791ed1cc074984a20eaa4.tar.xz
Use unique_ptr to manage ParsedBinariesAndObjects in LLVMSymbolizer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206866 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-symbolizer')
-rw-r--r--tools/llvm-symbolizer/LLVMSymbolize.cpp13
-rw-r--r--tools/llvm-symbolizer/LLVMSymbolize.h3
2 files changed, 8 insertions, 8 deletions
diff --git a/tools/llvm-symbolizer/LLVMSymbolize.cpp b/tools/llvm-symbolizer/LLVMSymbolize.cpp
index 7ffb1a13c5..837ed19aa4 100644
--- a/tools/llvm-symbolizer/LLVMSymbolize.cpp
+++ b/tools/llvm-symbolizer/LLVMSymbolize.cpp
@@ -207,7 +207,6 @@ std::string LLVMSymbolizer::symbolizeData(const std::string &ModuleName,
void LLVMSymbolizer::flush() {
DeleteContainerSeconds(Modules);
- DeleteContainerPointers(ParsedBinariesAndObjects);
BinaryForPath.clear();
ObjectFileForArch.clear();
}
@@ -305,8 +304,8 @@ LLVMSymbolizer::getOrCreateBinary(const std::string &Path) {
if (!error(BinaryOrErr.getError())) {
std::unique_ptr<Binary> ParsedBinary(BinaryOrErr.get());
// Check if it's a universal binary.
- Bin = ParsedBinary.release();
- ParsedBinariesAndObjects.push_back(Bin);
+ Bin = ParsedBinary.get();
+ ParsedBinariesAndObjects.push_back(std::move(ParsedBinary));
if (Bin->isMachO() || Bin->isMachOUniversalBinary()) {
// On Darwin we may find DWARF in separate object file in
// resource directory.
@@ -316,7 +315,7 @@ LLVMSymbolizer::getOrCreateBinary(const std::string &Path) {
error_code EC = BinaryOrErr.getError();
if (EC != errc::no_such_file_or_directory && !error(EC)) {
DbgBin = BinaryOrErr.get();
- ParsedBinariesAndObjects.push_back(DbgBin);
+ ParsedBinariesAndObjects.push_back(std::unique_ptr<Binary>(DbgBin));
}
}
// Try to locate the debug binary using .gnu_debuglink section.
@@ -329,7 +328,7 @@ LLVMSymbolizer::getOrCreateBinary(const std::string &Path) {
BinaryOrErr = createBinary(DebugBinaryPath);
if (!error(BinaryOrErr.getError())) {
DbgBin = BinaryOrErr.get();
- ParsedBinariesAndObjects.push_back(DbgBin);
+ ParsedBinariesAndObjects.push_back(std::unique_ptr<Binary>(DbgBin));
}
}
}
@@ -353,8 +352,8 @@ LLVMSymbolizer::getObjectFileFromBinary(Binary *Bin, const std::string &ArchName
return I->second;
std::unique_ptr<ObjectFile> ParsedObj;
if (!UB->getObjectForArch(Triple(ArchName).getArch(), ParsedObj)) {
- Res = ParsedObj.release();
- ParsedBinariesAndObjects.push_back(Res);
+ Res = ParsedObj.get();
+ ParsedBinariesAndObjects.push_back(std::move(ParsedObj));
}
ObjectFileForArch[std::make_pair(UB, ArchName)] = Res;
} else if (Bin->isObject()) {
diff --git a/tools/llvm-symbolizer/LLVMSymbolize.h b/tools/llvm-symbolizer/LLVMSymbolize.h
index 288be8022e..a1283a511a 100644
--- a/tools/llvm-symbolizer/LLVMSymbolize.h
+++ b/tools/llvm-symbolizer/LLVMSymbolize.h
@@ -19,6 +19,7 @@
#include "llvm/Object/ObjectFile.h"
#include "llvm/Support/MemoryBuffer.h"
#include <map>
+#include <memory>
#include <string>
namespace llvm {
@@ -72,7 +73,7 @@ private:
std::string printDILineInfo(DILineInfo LineInfo) const;
// Owns all the parsed binaries and object files.
- SmallVector<Binary*, 4> ParsedBinariesAndObjects;
+ SmallVector<std::unique_ptr<Binary>, 4> ParsedBinariesAndObjects;
// Owns module info objects.
typedef std::map<std::string, ModuleInfo *> ModuleMapTy;
ModuleMapTy Modules;