| author | |
| committer | |
| log | 1be84a39b8489c3d14d9233c288a505b69665caf |
| tree | 209ac4665178713a6fca1c0417926e7fc27a20eb |
| parent | a8e624d7f1220da166a61c5eb5956a5569188856 |
| 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 !builtin.link_libc 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| ... | ... | @@ -1746,6 +1746,7 @@ pub const Object = struct { |
| 1746 | 1746 | if (name.eqlSlice("WinMainCRTStartup", ip)) flags.winmain_crt_startup = true; |
| 1747 | 1747 | if (name.eqlSlice("wWinMainCRTStartup", ip)) flags.wwinmain_crt_startup = true; |
| 1748 | 1748 | if (name.eqlSlice("DllMainCRTStartup", ip)) flags.dllmain_crt_startup = true; |
| 1749 | if (name.eqlSlice("_DllMainCRTStartup", ip)) flags.dllmain_crt_startup = true; | |
| 1749 | 1750 | } |
| 1750 | 1751 | } |
| 1751 | 1752 |
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) { |