| author | |
| committer | |
| log | 826b46d7bcbd84d5d2e5fbe21f3fe54aba31d9cf |
| tree | 95d5086b35f2b49c6ee0ab347833598c5532d9f3 |
| parent | 76332b6b4d21647b41752963fe43988567f3a792 |
| signature |
See: https://github.com/llvm/llvm-project/pull/1716803 files changed, 6 insertions(+), 14 deletions(-)
lib/std/start.zig+4-3| ... | ... | @@ -20,8 +20,9 @@ comptime { |
| 20 | 20 | _ = root; |
| 21 | 21 | |
| 22 | 22 | if (builtin.output_mode == .Lib and builtin.link_mode == .dynamic) { |
| 23 | if (native_os == .windows and !@hasDecl(root, "_DllMainCRTStartup")) { | |
| 24 | @export(&_DllMainCRTStartup, .{ .name = "_DllMainCRTStartup" }); | |
| 23 | const dll_main_crt_startup = if (builtin.abi.isGnu()) "DllMainCRTStartup" else "_DllMainCRTStartup"; | |
| 24 | if (native_os == .windows and !@hasDecl(root, dll_main_crt_startup)) { | |
| 25 | @export(&DllMainCRTStartup, .{ .name = dll_main_crt_startup }); | |
| 25 | 26 | } |
| 26 | 27 | } else if (builtin.output_mode == .Exe or @hasDecl(root, "main")) { |
| 27 | 28 | if (builtin.link_libc and @hasDecl(root, "main")) { |
| ... | ... | @@ -71,7 +72,7 @@ comptime { |
| 71 | 72 | } |
| 72 | 73 | } |
| 73 | 74 | |
| 74 | fn _DllMainCRTStartup( | |
| 75 | fn DllMainCRTStartup( | |
| 75 | 76 | hinstDLL: std.os.windows.HINSTANCE, |
| 76 | 77 | fdwReason: std.os.windows.DWORD, |
| 77 | 78 | lpReserved: std.os.windows.LPVOID, |
src/codegen/llvm.zig+1| ... | ... | @@ -1748,6 +1748,7 @@ pub const Object = struct { |
| 1748 | 1748 | if (name.eqlSlice("WinMainCRTStartup", ip)) flags.winmain_crt_startup = true; |
| 1749 | 1749 | if (name.eqlSlice("wWinMainCRTStartup", ip)) flags.wwinmain_crt_startup = true; |
| 1750 | 1750 | if (name.eqlSlice("DllMainCRTStartup", ip)) flags.dllmain_crt_startup = true; |
| 1751 | if (name.eqlSlice("_DllMainCRTStartup", ip)) flags.dllmain_crt_startup = true; | |
| 1751 | 1752 | } |
| 1752 | 1753 | } |
| 1753 | 1754 |
src/link/Lld.zig+1-11| ... | ... | @@ -637,17 +637,7 @@ fn coffLink(lld: *Lld, arena: Allocator) !void { |
| 637 | 637 | try argv.append("-ALTERNATENAME:__image_base__=__ImageBase"); |
| 638 | 638 | } |
| 639 | 639 | |
| 640 | if (is_dyn_lib) { | |
| 641 | try argv.append(try comp.crtFileAsString(arena, "dllcrt2.obj")); | |
| 642 | if (target.cpu.arch == .x86) { | |
| 643 | try argv.append("-ALTERNATENAME:__DllMainCRTStartup@12=_DllMainCRTStartup@12"); | |
| 644 | } else { | |
| 645 | try argv.append("-ALTERNATENAME:_DllMainCRTStartup=DllMainCRTStartup"); | |
| 646 | } | |
| 647 | } else { | |
| 648 | try argv.append(try comp.crtFileAsString(arena, "crt2.obj")); | |
| 649 | } | |
| 650 | ||
| 640 | try argv.append(try comp.crtFileAsString(arena, if (is_dyn_lib) "dllcrt2.obj" else "crt2.obj")); | |
| 651 | 641 | try argv.append(try comp.crtFileAsString(arena, "libmingw32.lib")); |
| 652 | 642 | } else { |
| 653 | 643 | try argv.append(switch (comp.config.link_mode) { |