diff --git a/lib/std/debug.zig b/lib/std/debug.zig index 23b005ad4938..8527677ebbde 100644 --- a/lib/std/debug.zig +++ b/lib/std/debug.zig @@ -656,7 +656,7 @@ pub const StackIterator = struct { // The implementation of DWARF unwinding on aarch64-macos is not complete. However, Apple mandates that // the frame pointer register is always used, so on this platform we can safely use the FP-based unwinder. if (builtin.target.isDarwin() and native_arch == .aarch64) - return init(first_address, context.mcontext.ss.fp); + return init(first_address, @truncate(context.mcontext.ss.fp)); if (SelfInfo.supports_unwinding) { var iterator = init(first_address, null); diff --git a/lib/std/debug/SelfInfo.zig b/lib/std/debug/SelfInfo.zig index 5e9afc8cfd4b..228458aaef77 100644 --- a/lib/std/debug/SelfInfo.zig +++ b/lib/std/debug/SelfInfo.zig @@ -184,10 +184,12 @@ fn lookupModuleDyld(self: *SelfInfo, address: usize) !*Module { } for (cmd.getSections()) |sect| { + const sect_addr: usize = @intCast(sect.addr); + const sect_size: usize = @intCast(sect.size); if (mem.eql(u8, "__unwind_info", sect.sectName())) { - unwind_info = @as([*]const u8, @ptrFromInt(sect.addr + vmaddr_slide))[0..sect.size]; + unwind_info = @as([*]const u8, @ptrFromInt(sect_addr + vmaddr_slide))[0..sect_size]; } else if (mem.eql(u8, "__eh_frame", sect.sectName())) { - eh_frame = @as([*]const u8, @ptrFromInt(sect.addr + vmaddr_slide))[0..sect.size]; + eh_frame = @as([*]const u8, @ptrFromInt(sect_addr + vmaddr_slide))[0..sect_size]; } } @@ -590,7 +592,7 @@ pub const Module = switch (native_os) { const section_bytes = try Dwarf.chopSlice(mapped_mem, sect.offset, sect.size); sections[section_index.?] = .{ .data = section_bytes, - .virtual_address = sect.addr, + .virtual_address = @intCast(sect.addr), .owned = false, }; }