| author | |
| committer | |
| log | df9462690f9ca28e1b0fc3185f319c335cc3a32c |
| tree | eb6e4403fc165083630411ce4ba4dcf8fc182d5e |
| parent | e6590fea19e3eab94b35bfd3c36e29b53cefcaaf |
Until now, we would pass `candidate: NativeTargetInfo` which creates
a copy of the `NativeTargetInfo.DynamicLinker` buffer. We would then
return this buffer in `bad_dl: []const u8` which would goes out-of-scope
the moment we leave this function frame yielding garbage. To fix this,
we just need to remember to pass by const-pointer
`candidate: *const NativeTargetInfo`.4 files changed, 6 insertions(+), 6 deletions(-)
lib/std/Build/Step/Run.zig+1-1| ... | ... | @@ -679,7 +679,7 @@ fn runCommand( |
| 679 | 679 | } |
| 680 | 680 | |
| 681 | 681 | const need_cross_glibc = exe.target.isGnuLibC() and exe.is_linking_libc; |
| 682 | switch (b.host.getExternalExecutor(exe.target_info, .{ | |
| 682 | switch (b.host.getExternalExecutor(&exe.target_info, .{ | |
| 683 | 683 | .qemu_fixes_dl = need_cross_glibc and b.glibc_runtimes_dir != null, |
| 684 | 684 | .link_libc = exe.is_linking_libc, |
| 685 | 685 | })) { |
lib/std/zig/system/NativeTargetInfo.zig+1-1| ... | ... | @@ -1002,7 +1002,7 @@ pub const GetExternalExecutorOptions = struct { |
| 1002 | 1002 | /// of the other target. |
| 1003 | 1003 | pub fn getExternalExecutor( |
| 1004 | 1004 | host: NativeTargetInfo, |
| 1005 | candidate: NativeTargetInfo, | |
| 1005 | candidate: *const NativeTargetInfo, | |
| 1006 | 1006 | options: GetExternalExecutorOptions, |
| 1007 | 1007 | ) Executor { |
| 1008 | 1008 | const os_match = host.target.os.tag == candidate.target.os.tag; |
src/main.zig+3-3| ... | ... | @@ -3667,7 +3667,7 @@ fn buildOutputType( |
| 3667 | 3667 | test_exec_args.items, |
| 3668 | 3668 | self_exe_path.?, |
| 3669 | 3669 | arg_mode, |
| 3670 | target_info, | |
| 3670 | &target_info, | |
| 3671 | 3671 | &comp_destroyed, |
| 3672 | 3672 | all_args, |
| 3673 | 3673 | runtime_args_start, |
| ... | ... | @@ -3995,7 +3995,7 @@ fn runOrTest( |
| 3995 | 3995 | test_exec_args: []const ?[]const u8, |
| 3996 | 3996 | self_exe_path: []const u8, |
| 3997 | 3997 | arg_mode: ArgMode, |
| 3998 | target_info: std.zig.system.NativeTargetInfo, | |
| 3998 | target_info: *const std.zig.system.NativeTargetInfo, | |
| 3999 | 3999 | comp_destroyed: *bool, |
| 4000 | 4000 | all_args: []const []const u8, |
| 4001 | 4001 | runtime_args_start: ?usize, |
| ... | ... | @@ -6256,7 +6256,7 @@ fn parseIntSuffix(arg: []const u8, prefix_len: usize) u64 { |
| 6256 | 6256 | fn warnAboutForeignBinaries( |
| 6257 | 6257 | arena: Allocator, |
| 6258 | 6258 | arg_mode: ArgMode, |
| 6259 | target_info: std.zig.system.NativeTargetInfo, | |
| 6259 | target_info: *const std.zig.system.NativeTargetInfo, | |
| 6260 | 6260 | link_libc: bool, |
| 6261 | 6261 | ) !void { |
| 6262 | 6262 | const host_cross_target: std.zig.CrossTarget = .{}; |
test/src/Cases.zig+1-1| ... | ... | @@ -590,7 +590,7 @@ pub fn lowerToBuildSteps( |
| 590 | 590 | const run = if (case.target.ofmt == .c) run_step: { |
| 591 | 591 | const target_info = std.zig.system.NativeTargetInfo.detect(case.target) catch |err| |
| 592 | 592 | std.debug.panic("unable to detect notive host: {s}\n", .{@errorName(err)}); |
| 593 | if (host.getExternalExecutor(target_info, .{ .link_libc = true }) != .native) { | |
| 593 | if (host.getExternalExecutor(&target_info, .{ .link_libc = true }) != .native) { | |
| 594 | 594 | // We wouldn't be able to run the compiled C code. |
| 595 | 595 | break :no_exec; |
| 596 | 596 | } |