| author | |
| committer | |
| log | cde84c8795e8da13512098c8b19f17217e691dde |
| tree | 2d700b667d20cdb9751eb6a7264d4ecf61c75080 |
| parent | dd9a64721030cf10065e74755f0c757cb470bcf3 |
3 files changed, 6 insertions(+), 2 deletions(-)
src/codegen.zig+2| ... | ... | @@ -677,6 +677,7 @@ fn lowerUavRef( |
| 677 | 677 | wasm.uav_fixups.appendAssumeCapacity(.{ |
| 678 | 678 | .uavs_exe_index = try wasm.refUavExe(uav.val), |
| 679 | 679 | .offset = @intCast(code.items.len), |
| 680 | .addend = @intCast(offset), | |
| 680 | 681 | }); |
| 681 | 682 | } |
| 682 | 683 | code.appendNTimesAssumeCapacity(0, ptr_width_bytes); |
| ... | ... | @@ -761,6 +762,7 @@ fn lowerNavRef( |
| 761 | 762 | wasm.nav_fixups.appendAssumeCapacity(.{ |
| 762 | 763 | .navs_exe_index = try wasm.refNavExe(nav_index), |
| 763 | 764 | .offset = @intCast(code.items.len), |
| 765 | .addend = @intCast(offset), | |
| 764 | 766 | }); |
| 765 | 767 | } |
| 766 | 768 | } |
src/link/Wasm.zig+2| ... | ... | @@ -312,12 +312,14 @@ pub const UavFixup = extern struct { |
| 312 | 312 | uavs_exe_index: UavsExeIndex, |
| 313 | 313 | /// Index into `string_bytes`. |
| 314 | 314 | offset: u32, |
| 315 | addend: u32, | |
| 315 | 316 | }; |
| 316 | 317 | |
| 317 | 318 | pub const NavFixup = extern struct { |
| 318 | 319 | navs_exe_index: NavsExeIndex, |
| 319 | 320 | /// Index into `string_bytes`. |
| 320 | 321 | offset: u32, |
| 322 | addend: u32, | |
| 321 | 323 | }; |
| 322 | 324 | |
| 323 | 325 | pub const FuncTableFixup = extern struct { |
src/link/Wasm/Flush.zig+2-2| ... | ... | @@ -796,7 +796,7 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void { |
| 796 | 796 | if (!is_obj) { |
| 797 | 797 | for (wasm.uav_fixups.items) |uav_fixup| { |
| 798 | 798 | const ds_id: Wasm.DataSegmentId = .pack(wasm, .{ .uav_exe = uav_fixup.uavs_exe_index }); |
| 799 | const vaddr = f.data_segments.get(ds_id).?; | |
| 799 | const vaddr = f.data_segments.get(ds_id).? + uav_fixup.addend; | |
| 800 | 800 | if (!is64) { |
| 801 | 801 | mem.writeInt(u32, wasm.string_bytes.items[uav_fixup.offset..][0..4], vaddr, .little); |
| 802 | 802 | } else { |
| ... | ... | @@ -805,7 +805,7 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void { |
| 805 | 805 | } |
| 806 | 806 | for (wasm.nav_fixups.items) |nav_fixup| { |
| 807 | 807 | const ds_id: Wasm.DataSegmentId = .pack(wasm, .{ .nav_exe = nav_fixup.navs_exe_index }); |
| 808 | const vaddr = f.data_segments.get(ds_id).?; | |
| 808 | const vaddr = f.data_segments.get(ds_id).? + nav_fixup.addend; | |
| 809 | 809 | if (!is64) { |
| 810 | 810 | mem.writeInt(u32, wasm.string_bytes.items[nav_fixup.offset..][0..4], vaddr, .little); |
| 811 | 811 | } else { |