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 #12896.
PiperOrigin-RevId: 366211823
diff --git a/tools/osx/crosstool/wrapped_clang.cc b/tools/osx/crosstool/wrapped_clang.cc
index d574ed9..765b7a7 100644
--- a/tools/osx/crosstool/wrapped_clang.cc
+++ b/tools/osx/crosstool/wrapped_clang.cc
@@ -108,16 +108,6 @@
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 @@
}
}
- if (!postprocess) {
- ExecProcess(invocation_args);
- std::cerr << "ExecProcess should not return. Please fix!\n";
- abort();
- }
-
RunSubProcess(invocation_args);
+ if (!postprocess) {
+ return 0;
+ }
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;
}