Skip to content

Commit

Permalink
Remove wrapped_clang params files after use
Browse files Browse the repository at this point in the history
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 bazelbuild#12896.

PiperOrigin-RevId: 366211823
  • Loading branch information
keith authored and copybara-github committed Apr 1, 2021
1 parent 551fabd commit 0299cd7
Showing 1 changed file with 3 additions and 19 deletions.
22 changes: 3 additions & 19 deletions tools/osx/crosstool/wrapped_clang.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
}

0 comments on commit 0299cd7

Please sign in to comment.