| ... | @@ -210,9 +210,6 @@ extern int cc1_main(ArrayRef<const char *> Argv, const char *Argv0, | ... | @@ -210,9 +210,6 @@ extern int cc1_main(ArrayRef<const char *> Argv, const char *Argv0, |
| 210 | void *MainAddr); | 210 | void *MainAddr); |
| 211 | extern int cc1as_main(ArrayRef<const char *> Argv, const char *Argv0, | 211 | extern int cc1as_main(ArrayRef<const char *> Argv, const char *Argv0, |
| 212 | void *MainAddr); | 212 | void *MainAddr); |
| 213 | extern int cc1gen_reproducer_main(ArrayRef<const char *> Argv, | | |
| 214 | const char *Argv0, void *MainAddr, | | |
| 215 | const llvm::ToolContext &); | | |
| 216 | | 213 | |
| 217 | static void insertTargetAndModeArgs(const ParsedClangName &NameParts, | 214 | static void insertTargetAndModeArgs(const ParsedClangName &NameParts, |
| 218 | SmallVectorImpl<const char *> &ArgVector, | 215 | SmallVectorImpl<const char *> &ArgVector, |
| ... | @@ -366,22 +363,27 @@ static int ExecuteCC1Tool(SmallVectorImpl<const char *> &ArgV, | ... | @@ -366,22 +363,27 @@ static int ExecuteCC1Tool(SmallVectorImpl<const char *> &ArgV, |
| 366 | return cc1_main(ArrayRef(ArgV).slice(1), ArgV[0], GetExecutablePathVP); | 363 | return cc1_main(ArrayRef(ArgV).slice(1), ArgV[0], GetExecutablePathVP); |
| 367 | if (Tool == "-cc1as") | 364 | if (Tool == "-cc1as") |
| 368 | return cc1as_main(ArrayRef(ArgV).slice(2), ArgV[0], GetExecutablePathVP); | 365 | return cc1as_main(ArrayRef(ArgV).slice(2), ArgV[0], GetExecutablePathVP); |
| 369 | if (Tool == "-cc1gen-reproducer") | | |
| 370 | return cc1gen_reproducer_main(ArrayRef(ArgV).slice(2), ArgV[0], | | |
| 371 | GetExecutablePathVP, ToolContext); | | |
| 372 | // Reject unknown tools. | 366 | // Reject unknown tools. |
| 373 | llvm::errs() << "error: unknown integrated tool '" << Tool << "'. " | 367 | llvm::errs() << "error: unknown integrated tool '" << Tool << "'. " |
| 374 | << "Valid tools include '-cc1' and '-cc1as'.\n"; | 368 | << "Valid tools include '-cc1' and '-cc1as'.\n"; |
| 375 | return 1; | 369 | return 1; |
| 376 | } | 370 | } |
| 377 | | 371 | |
| 378 | int clang_main(int Argc, char **Argv, const llvm::ToolContext &ToolContext) { | 372 | static int clang_main(int Argc, char **Argv, const llvm::ToolContext &ToolContext) { |
| 379 | noteBottomOfStack(); | 373 | noteBottomOfStack(); |
| 380 | llvm::InitLLVM X(Argc, Argv); | 374 | // ZIG PATCH: On Windows, InitLLVM calls GetCommandLineW(), |
| | 375 | // and overwrites the args. We don't want it to do that, |
| | 376 | // and we also don't need the signal handlers it installs |
| | 377 | // (we have our own already), so we just use llvm_shutdown_obj |
| | 378 | // instead. |
| | 379 | // llvm::InitLLVM X(Argc, Argv); |
| | 380 | llvm::llvm_shutdown_obj X; |
| | 381 | |
| 381 | llvm::setBugReportMsg("PLEASE submit a bug report to " BUG_REPORT_URL | 382 | llvm::setBugReportMsg("PLEASE submit a bug report to " BUG_REPORT_URL |
| 382 | " and include the crash backtrace, preprocessed " | 383 | " and include the crash backtrace, preprocessed " |
| 383 | "source, and associated run script.\n"); | 384 | "source, and associated run script.\n"); |
| 384 | SmallVector<const char *, 256> Args(Argv, Argv + Argc); | 385 | size_t argv_offset = (strcmp(Argv[1], "-cc1") == 0 || strcmp(Argv[1], "-cc1as") == 0) ? 0 : 1; |
| | 386 | SmallVector<const char *, 256> Args(Argv + argv_offset, Argv + Argc); |
| 385 | | 387 | |
| 386 | if (llvm::sys::Process::FixupStandardFileDescriptors()) | 388 | if (llvm::sys::Process::FixupStandardFileDescriptors()) |
| 387 | return 1; | 389 | return 1; |
| ... | @@ -603,3 +605,8 @@ int clang_main(int Argc, char **Argv, const llvm::ToolContext &ToolContext) { | ... | @@ -603,3 +605,8 @@ int clang_main(int Argc, char **Argv, const llvm::ToolContext &ToolContext) { |
| 603 | // failing command. | 605 | // failing command. |
| 604 | return Res; | 606 | return Res; |
| 605 | } | 607 | } |
| | 608 | |
| | 609 | extern "C" int ZigClang_main(int, char **); |
| | 610 | int ZigClang_main(int argc, char **argv) { |
| | 611 | return clang_main(argc, argv, {argv[0], nullptr, false}); |
| | 612 | } |