Commit cd078c518f

Martin Wickham <spexguy070@gmail.com>
2021-07-10 00:53:08
Fix argument forwarding to LLVM on Windows
1 parent ceebcfa
src/zig_clang_driver.cpp
@@ -338,7 +338,15 @@ static int ExecuteCC1Tool(SmallVectorImpl<const char *> &ArgV) {
 extern "C" int ZigClang_main(int argc_, const char **argv_);
 int ZigClang_main(int argc_, const char **argv_) {
   noteBottomOfStack();
-  llvm::InitLLVM X(argc_, argv_);
+
+  // ZIG MOD: On windows, InitLLVM calls GetCommandLineW(),
+  // and overwrites the args.  We don't want it to do that,
+  // and we also don't need the signal handlers it installs
+  // (we have our own already), so we just use llvm_shutdown_obj
+  // instead.
+  // llvm::InitLLVM X(argc_, argv_);
+  llvm::llvm_shutdown_obj X;
+
   llvm::setBugReportMsg("PLEASE submit a bug report to " BUG_REPORT_URL
                         " and include the crash backtrace, preprocessed "
                         "source, and associated run script.\n");
src/zig_llvm-ar.cpp
@@ -1522,7 +1522,14 @@ static int ranlib_main(int argc, char **argv) {
 
 extern "C" int ZigLlvmAr_main(int argc, char **argv);
 int ZigLlvmAr_main(int argc, char **argv) {
-  InitLLVM X(argc, argv);
+  // ZIG MOD: On windows, InitLLVM calls GetCommandLineW(),
+  // and overwrites the args.  We don't want it to do that,
+  // and we also don't need the signal handlers it installs
+  // (we have our own already), so we just use llvm_shutdown_obj
+  // instead.
+  // InitLLVM X(argc, argv);
+  llvm::llvm_shutdown_obj X;
+
   ToolName = argv[0];
 
   llvm::InitializeAllTargetInfos();