authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-03 14:01:32-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-03 14:01:32-07:00
log60954598e9de71defb9ab07cef35a17082151d36
tree2e1facc8fc7ecb506121d6b5cc6c6b10efc3db41
parent3479294b6e7cae323f2e2f05dbc173e2b1a4b9e1

apply zig patches to clang and llvm tools


2 files changed, 25 insertions(+), 11 deletions(-)

src/zig_clang_driver.cpp+15-9
......@@ -207,8 +207,6 @@ extern int cc1_main(ArrayRef<const char *> Argv, const char *Argv0,
207207 void *MainAddr);
208208extern int cc1as_main(ArrayRef<const char *> Argv, const char *Argv0,
209209 void *MainAddr);
210extern int cc1gen_reproducer_main(ArrayRef<const char *> Argv,
211 const char *Argv0, void *MainAddr);
212210
213211static void insertTargetAndModeArgs(const ParsedClangName &NameParts,
214212 SmallVectorImpl<const char *> &ArgVector,
......@@ -318,22 +316,28 @@ static int ExecuteCC1Tool(SmallVectorImpl<const char *> &ArgV) {
318316 if (Tool == "-cc1as")
319317 return cc1as_main(makeArrayRef(ArgV).slice(2), ArgV[0],
320318 GetExecutablePathVP);
321 if (Tool == "-cc1gen-reproducer")
322 return cc1gen_reproducer_main(makeArrayRef(ArgV).slice(2), ArgV[0],
323 GetExecutablePathVP);
324319 // Reject unknown tools.
325320 llvm::errs() << "error: unknown integrated tool '" << Tool << "'. "
326321 << "Valid tools include '-cc1' and '-cc1as'.\n";
327322 return 1;
328323}
329324
330int main(int Argc, const char **Argv) {
325extern "C" int ZigClang_main(int Argc, const char **Argv);
326int ZigClang_main(int Argc, const char **Argv) {
331327 noteBottomOfStack();
332 llvm::InitLLVM X(Argc, Argv);
328 // ZIG PATCH: On Windows, InitLLVM calls GetCommandLineW(),
329 // and overwrites the args. We don't want it to do that,
330 // and we also don't need the signal handlers it installs
331 // (we have our own already), so we just use llvm_shutdown_obj
332 // instead.
333 // llvm::InitLLVM X(Argc, Argv);
334 llvm::llvm_shutdown_obj X;
335
333336 llvm::setBugReportMsg("PLEASE submit a bug report to " BUG_REPORT_URL
334337 " and include the crash backtrace, preprocessed "
335338 "source, and associated run script.\n");
336 SmallVector<const char *, 256> Args(Argv, Argv + Argc);
339 size_t argv_offset = (strcmp(Argv[1], "-cc1") == 0 || strcmp(Argv[1], "-cc1as") == 0) ? 0 : 1;
340 SmallVector<const char *, 256> Args(Argv + argv_offset, Argv + Argc);
337341
338342 if (llvm::sys::Process::FixupStandardFileDescriptors())
339343 return 1;
......@@ -432,7 +436,9 @@ int main(int Argc, const char **Argv) {
432436 ApplyQAOverride(Args, OverrideStr, SavedStrings);
433437 }
434438
435 std::string Path = GetExecutablePath(Args[0], CanonicalPrefixes);
439 // Pass local param `Argv[0]` as fallback.
440 // See https://github.com/ziglang/zig/pull/3292 .
441 std::string Path = GetExecutablePath(Argv[0], CanonicalPrefixes);
436442
437443 // Whether the cc1 tool should be called inside the current process, or if we
438444 // should spawn a new clang subprocess (old behavior).
src/zig_llvm-ar.cpp+10-2
......@@ -1274,8 +1274,16 @@ static int ranlib_main(int argc, char **argv) {
12741274 return performOperation(CreateSymTab, nullptr);
12751275}
12761276
1277int main(int argc, char **argv) {
1278 InitLLVM X(argc, argv);
1277extern "C" int ZigLlvmAr_main(int argc, char **argv);
1278int ZigLlvmAr_main(int argc, char **argv) {
1279 // ZIG PATCH: On Windows, InitLLVM calls GetCommandLineW(),
1280 // and overwrites the args. We don't want it to do that,
1281 // and we also don't need the signal handlers it installs
1282 // (we have our own already), so we just use llvm_shutdown_obj
1283 // instead.
1284 // InitLLVM X(argc, argv);
1285 llvm::llvm_shutdown_obj X;
1286
12791287 ToolName = argv[0];
12801288
12811289 llvm::InitializeAllTargetInfos();