| author | |
| committer | |
| log | 4641e9556d1343e95e4676e2f1e3024173db9962 |
| tree | 9e3eb60c8b4cb0412a0ada4d3d6defa6396397fe |
| parent | 0cbff2ff7ff175a40c452bb5ca4a32a282a77088 |
By using the debug UCRT, we get access to functions like _CrtDbgReport.
Closes #23983.2 files changed, 22 insertions(+), 9 deletions(-)
src/Compilation.zig+6-2| ... | ... | @@ -2352,8 +2352,12 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil |
| 2352 | 2352 | comp.remaining_prelink_tasks += 2; |
| 2353 | 2353 | |
| 2354 | 2354 | // When linking mingw-w64 there are some import libs we always need. |
| 2355 | try comp.windows_libs.ensureUnusedCapacity(gpa, mingw.always_link_libs.len); | |
| 2356 | for (mingw.always_link_libs) |name| comp.windows_libs.putAssumeCapacity(name, {}); | |
| 2355 | const always_link_libs: []const []const u8 = switch (comp.root_mod.optimize_mode) { | |
| 2356 | .Debug => &mingw.always_link_libs_debug, | |
| 2357 | .ReleaseSafe, .ReleaseFast, .ReleaseSmall => &mingw.always_link_libs_release, | |
| 2358 | }; | |
| 2359 | try comp.windows_libs.ensureUnusedCapacity(gpa, always_link_libs.len); | |
| 2360 | for (always_link_libs) |name| comp.windows_libs.putAssumeCapacity(name, {}); | |
| 2357 | 2361 | } else { |
| 2358 | 2362 | return error.LibCUnavailable; |
| 2359 | 2363 | } |
src/libs/mingw.zig+16-7| ... | ... | @@ -1011,7 +1011,21 @@ const mingw32_winpthreads_src = [_][]const u8{ |
| 1011 | 1011 | "winpthreads" ++ path.sep_str ++ "thread.c", |
| 1012 | 1012 | }; |
| 1013 | 1013 | |
| 1014 | pub const always_link_libs = [_][]const u8{ | |
| 1014 | const always_link_libs = [_][]const u8{ | |
| 1015 | "advapi32", | |
| 1016 | "kernel32", | |
| 1017 | "ntdll", | |
| 1018 | "shell32", | |
| 1019 | "user32", | |
| 1020 | }; | |
| 1021 | ||
| 1022 | // In Debug mode, we link against `ucrtbased.dll` instead of the API set DLLs so that we can get | |
| 1023 | // access to functions like `_CrtDbgReport`. | |
| 1024 | pub const always_link_libs_debug = [_][]const u8{ | |
| 1025 | "ucrtbased", | |
| 1026 | } ++ always_link_libs; | |
| 1027 | ||
| 1028 | pub const always_link_libs_release = [_][]const u8{ | |
| 1015 | 1029 | "api-ms-win-crt-conio-l1-1-0", |
| 1016 | 1030 | "api-ms-win-crt-convert-l1-1-0", |
| 1017 | 1031 | "api-ms-win-crt-environment-l1-1-0", |
| ... | ... | @@ -1027,9 +1041,4 @@ pub const always_link_libs = [_][]const u8{ |
| 1027 | 1041 | "api-ms-win-crt-string-l1-1-0", |
| 1028 | 1042 | "api-ms-win-crt-time-l1-1-0", |
| 1029 | 1043 | "api-ms-win-crt-utility-l1-1-0", |
| 1030 | "advapi32", | |
| 1031 | "kernel32", | |
| 1032 | "ntdll", | |
| 1033 | "shell32", | |
| 1034 | "user32", | |
| 1035 | }; | |
| 1044 | } ++ always_link_libs; |