summaryrefslogtreecommitdiff
path: root/tools/dsymutil/dsymutil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/dsymutil/dsymutil.cpp')
-rw-r--r--tools/dsymutil/dsymutil.cpp40
1 files changed, 11 insertions, 29 deletions
diff --git a/tools/dsymutil/dsymutil.cpp b/tools/dsymutil/dsymutil.cpp
index fc447b30be9..c0e6d505941 100644
--- a/tools/dsymutil/dsymutil.cpp
+++ b/tools/dsymutil/dsymutil.cpp
@@ -313,13 +313,6 @@ static std::string getOutputFileName(llvm::StringRef InputFile) {
return BundleDir.str();
}
-static Expected<sys::fs::TempFile> createTempFile() {
- llvm::SmallString<128> TmpModel;
- llvm::sys::path::system_temp_directory(true, TmpModel);
- llvm::sys::path::append(TmpModel, "dsym.tmp%%%%%.dwarf");
- return sys::fs::TempFile::create(TmpModel);
-}
-
/// Parses the command line options into the LinkOptions struct and performs
/// some sanity checking. Returns an error in case the latter fails.
static Expected<LinkOptions> getOptions() {
@@ -400,18 +393,6 @@ static Expected<std::vector<std::string>> getInputs(bool DsymAsInput) {
return Inputs;
}
-namespace {
-struct TempFileVector {
- std::vector<sys::fs::TempFile> Files;
- ~TempFileVector() {
- for (sys::fs::TempFile &Tmp : Files) {
- if (Error E = Tmp.discard())
- errs() << toString(std::move(E));
- }
- }
-};
-} // namespace
-
int main(int argc, char **argv) {
InitLLVM X(argc, argv);
@@ -523,8 +504,7 @@ int main(int argc, char **argv) {
!DumpDebugMap && (OutputFileOpt != "-") &&
(DebugMapPtrsOrErr->size() != 1 || OptionsOrErr->Update);
- llvm::SmallVector<MachOUtils::ArchAndFilename, 4> TempFiles;
- TempFileVector TempFileStore;
+ llvm::SmallVector<MachOUtils::ArchAndFile, 4> TempFiles;
std::atomic_char AllOK(1);
for (auto &Map : *DebugMapPtrsOrErr) {
if (Verbose || DumpDebugMap)
@@ -543,16 +523,18 @@ int main(int argc, char **argv) {
std::shared_ptr<raw_fd_ostream> OS;
std::string OutputFile = getOutputFileName(InputFile);
if (NeedsTempFiles) {
- Expected<sys::fs::TempFile> T = createTempFile();
- if (!T) {
- errs() << toString(T.takeError());
+ TempFiles.emplace_back(Map->getTriple().getArchName().str());
+
+ auto E = TempFiles.back().createTempFile();
+ if (E) {
+ errs() << toString(std::move(E));
return 1;
}
- OS = std::make_shared<raw_fd_ostream>(T->FD, /*shouldClose*/ false);
- OutputFile = T->TmpName;
- TempFileStore.Files.push_back(std::move(*T));
- TempFiles.emplace_back(Map->getTriple().getArchName().str(),
- OutputFile);
+
+ auto &TempFile = *(TempFiles.back().File);
+ OS = std::make_shared<raw_fd_ostream>(TempFile.FD,
+ /*shouldClose*/ false);
+ OutputFile = TempFile.TmpName;
} else {
std::error_code EC;
OS = std::make_shared<raw_fd_ostream>(NoOutput ? "-" : OutputFile, EC,