mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-23 17:24:48 +00:00
Use GetTemporaryDirectory. Fix http://llvm.org/bugs/show_bug.cgi?id=894
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30838 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -341,18 +341,28 @@ LTO::optimizeModules(const std::string &OutputFilename,
|
|||||||
exportList[i] = allSymbols[name]->getName();
|
exportList[i] = allSymbols[name]->getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
sys::Path tmpAsmFilePath("/tmp/");
|
|
||||||
std::string ErrMsg;
|
std::string ErrMsg;
|
||||||
|
sys::Path TempDir = sys::Path::GetTemporaryDirectory(&ErrMsg);
|
||||||
|
sys::Path tmpAsmFilePath(TempDir);
|
||||||
|
if (!tmpAsmFilePath.appendComponent("lto")) {
|
||||||
|
std::cerr << "lto: " << ErrMsg << "\n";
|
||||||
|
TempDir.eraseFromDisk(true);
|
||||||
|
return LTO_WRITE_FAILURE;
|
||||||
|
}
|
||||||
if (tmpAsmFilePath.createTemporaryFileOnDisk(&ErrMsg)) {
|
if (tmpAsmFilePath.createTemporaryFileOnDisk(&ErrMsg)) {
|
||||||
std::cerr << "lto: " << ErrMsg << "\n";
|
std::cerr << "lto: " << ErrMsg << "\n";
|
||||||
|
TempDir.eraseFromDisk(true);
|
||||||
return LTO_WRITE_FAILURE;
|
return LTO_WRITE_FAILURE;
|
||||||
}
|
}
|
||||||
sys::RemoveFileOnSignal(tmpAsmFilePath);
|
sys::RemoveFileOnSignal(tmpAsmFilePath);
|
||||||
|
|
||||||
std::ofstream asmFile(tmpAsmFilePath.c_str(), io_mode);
|
std::ofstream asmFile(tmpAsmFilePath.c_str(), io_mode);
|
||||||
if (!asmFile.is_open() || asmFile.bad()) {
|
if (!asmFile.is_open() || asmFile.bad()) {
|
||||||
if (tmpAsmFilePath.exists())
|
if (tmpAsmFilePath.exists()) {
|
||||||
tmpAsmFilePath.eraseFromDisk();
|
tmpAsmFilePath.eraseFromDisk();
|
||||||
|
TempDir.eraseFromDisk(true);
|
||||||
|
}
|
||||||
return LTO_WRITE_FAILURE;
|
return LTO_WRITE_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,6 +370,7 @@ LTO::optimizeModules(const std::string &OutputFilename,
|
|||||||
asmFile.close();
|
asmFile.close();
|
||||||
if (status != LTO_OPT_SUCCESS) {
|
if (status != LTO_OPT_SUCCESS) {
|
||||||
tmpAsmFilePath.eraseFromDisk();
|
tmpAsmFilePath.eraseFromDisk();
|
||||||
|
TempDir.eraseFromDisk(true);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,6 +385,7 @@ LTO::optimizeModules(const std::string &OutputFilename,
|
|||||||
const sys::Path gcc = FindExecutable("gcc", "/");
|
const sys::Path gcc = FindExecutable("gcc", "/");
|
||||||
if (gcc.isEmpty()) {
|
if (gcc.isEmpty()) {
|
||||||
tmpAsmFilePath.eraseFromDisk();
|
tmpAsmFilePath.eraseFromDisk();
|
||||||
|
TempDir.eraseFromDisk(true);
|
||||||
return LTO_ASM_FAILURE;
|
return LTO_ASM_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,6 +402,7 @@ LTO::optimizeModules(const std::string &OutputFilename,
|
|||||||
sys::Program::ExecuteAndWait(gcc, &args[0], 0, 0, 1);
|
sys::Program::ExecuteAndWait(gcc, &args[0], 0, 0, 1);
|
||||||
|
|
||||||
tmpAsmFilePath.eraseFromDisk();
|
tmpAsmFilePath.eraseFromDisk();
|
||||||
|
TempDir.eraseFromDisk(true);
|
||||||
|
|
||||||
return LTO_OPT_SUCCESS;
|
return LTO_OPT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user