From 8c2c6368f9645def45374c2fb9027bf72b15ab2e Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sun, 24 Feb 2019 15:30:30 -0500 Subject: [PATCH] zig cc: work around clang calling GetCommandLine on Windows --- src/main.cpp | 10 +++------- src/zig_clang_driver.cpp | 3 ++- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index bcdf07294..94f282242 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -260,13 +260,9 @@ int main(int argc, char **argv) { return 0; } - if (argc >= 2 && (strcmp(argv[1], "cc") == 0)) { - return ZigClang_main(argc - 1, argv + 1); - } - if (argc >= 2 && strcmp(argv[1], "-cc1") == 0) { - return ZigClang_main(argc, argv); - } - if (argc >= 2 && strcmp(argv[1], "-cc1as") == 0) { + if (argc >= 2 && (strcmp(argv[1], "cc") == 0 || + strcmp(argv[1], "-cc1") == 0 || strcmp(argv[1], "-cc1as") == 0)) + { return ZigClang_main(argc, argv); } diff --git a/src/zig_clang_driver.cpp b/src/zig_clang_driver.cpp index 21e88cbe6..3a3942636 100644 --- a/src/zig_clang_driver.cpp +++ b/src/zig_clang_driver.cpp @@ -318,7 +318,8 @@ static int ExecuteCC1Tool(ArrayRef argv, StringRef Tool) { extern "C" int ZigClang_main(int argc_, const char **argv_); int ZigClang_main(int argc_, const char **argv_) { llvm::InitLLVM X(argc_, argv_); - SmallVector argv(argv_, argv_ + argc_); + size_t argv_offset = (strcmp(argv_[1], "-cc1") == 0 || strcmp(argv_[1], "-cc1as") == 0) ? 0 : 1; + SmallVector argv(argv_ + argv_offset, argv_ + argc_); if (llvm::sys::Process::FixupStandardFileDescriptors()) return 1;