| ... | @@ -1426,8 +1426,15 @@ static int ranlib_main(int argc, char **argv) { | ... | @@ -1426,8 +1426,15 @@ static int ranlib_main(int argc, char **argv) { |
| 1426 | return 0; | 1426 | return 0; |
| 1427 | } | 1427 | } |
| 1428 | | 1428 | |
| 1429 | int llvm_ar_main(int argc, char **argv, const llvm::ToolContext &) { | 1429 | static int llvm_ar_main(int argc, char **argv, const llvm::ToolContext &) { |
| 1430 | InitLLVM X(argc, argv); | 1430 | // ZIG PATCH: On Windows, InitLLVM calls GetCommandLineW(), |
| | 1431 | // and overwrites the args. We don't want it to do that, |
| | 1432 | // and we also don't need the signal handlers it installs |
| | 1433 | // (we have our own already), so we just use llvm_shutdown_obj |
| | 1434 | // instead. |
| | 1435 | // InitLLVM X(argc, argv); |
| | 1436 | llvm::llvm_shutdown_obj X; |
| | 1437 | |
| 1431 | ToolName = argv[0]; | 1438 | ToolName = argv[0]; |
| 1432 | | 1439 | |
| 1433 | llvm::InitializeAllTargetInfos(); | 1440 | llvm::InitializeAllTargetInfos(); |
| ... | @@ -1457,3 +1464,8 @@ int llvm_ar_main(int argc, char **argv, const llvm::ToolContext &) { | ... | @@ -1457,3 +1464,8 @@ int llvm_ar_main(int argc, char **argv, const llvm::ToolContext &) { |
| 1457 | | 1464 | |
| 1458 | fail("not ranlib, ar, lib or dlltool"); | 1465 | fail("not ranlib, ar, lib or dlltool"); |
| 1459 | } | 1466 | } |
| | 1467 | |
| | 1468 | extern "C" int ZigLlvmAr_main(int, char **); |
| | 1469 | int ZigLlvmAr_main(int argc, char **argv) { |
| | 1470 | return llvm_ar_main(argc, argv, {argv[0], nullptr, false}); |
| | 1471 | } |