From dbf8fb78430895b0c96109754f27f5990212881e Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 10 Aug 2023 17:34:08 -0700 Subject: [PATCH] llvm-ar patch: update main function --- src/zig_llvm-ar.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/zig_llvm-ar.cpp b/src/zig_llvm-ar.cpp index d21650d146..75f2ef2fff 100644 --- a/src/zig_llvm-ar.cpp +++ b/src/zig_llvm-ar.cpp @@ -1426,8 +1426,15 @@ static int ranlib_main(int argc, char **argv) { return 0; } -int llvm_ar_main(int argc, char **argv, const llvm::ToolContext &) { - InitLLVM X(argc, argv); +static int llvm_ar_main(int argc, char **argv, const llvm::ToolContext &) { + // ZIG PATCH: 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(); @@ -1457,3 +1464,8 @@ int llvm_ar_main(int argc, char **argv, const llvm::ToolContext &) { fail("not ranlib, ar, lib or dlltool"); } + +extern "C" int ZigLlvmAr_main(int, char **); +int ZigLlvmAr_main(int argc, char **argv) { + return llvm_ar_main(argc, argv, {argv[0], nullptr, false}); +}