Remove wrapped_clang params files after use
We use TempFile's destructor to remove the params file. Because we
previously exec'd a new process, this was never called. Now we run
them as subprocesses so we can cleanup afterwards.
Closes
@@ -108,16 +108,6 @@ std::vector<const char *> ConvertToCArgs(const std::vector<std::string> &args) {
return c_args;
}
-// Turn our current process into a new process. Avoids fork overhead.
-// Never returns.
-void ExecProcess(const std::vector<std::string> &args) {
- std::vector<const char *> exec_argv = ConvertToCArgs(args);
- execv(args[0].c_str(), const_cast<char **>(exec_argv.data()));
- std::cerr << "Error executing child process.'" << args[0] << "'. "
- << strerror(errno) << "\n";
- abort();
-}
-
// Spawns a subprocess for given arguments args. The first argument is used
// for the executable path.
void RunSubProcess(const std::vector<std::string> &args) {
@@ -410,19 +400,13 @@ int main(int argc, char *argv[]) {
}
}
+ RunSubProcess(invocation_args);
if (!postprocess) {
- ExecProcess(invocation_args);
- std::cerr << "ExecProcess should not return. Please fix!\n";
- abort();
+ return 0;
}
- RunSubProcess(invocation_args);
-
std::vector<std::string> dsymutil_args = {
"/usr/bin/xcrun", "dsymutil", linked_binary, "-o", dsym_path, "--flat"};
- ExecProcess(dsymutil_args);
- std::cerr << "ExecProcess should not return. Please fix!\n";
- abort();
-
+ RunSubProcess(dsymutil_args);
return 0;
}
