diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2024-12-20 22:42:07 -0800 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-01-15 15:11:36 -0800 |
| commit | 2174d205409c17588f22cf60f8bba1fc1aa5c8d5 (patch) | |
| tree | e7370c84796a702f61c04ea261c36da0b2400fed /src | |
| parent | 728103467edba5f3407b1aaa89c9b6dda9432884 (diff) | |
| download | zig-2174d205409c17588f22cf60f8bba1fc1aa5c8d5.tar.gz zig-2174d205409c17588f22cf60f8bba1fc1aa5c8d5.zip | |
fix stack pointer initialized to wrong vaddr
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/Wasm/Flush.zig | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/link/Wasm/Flush.zig b/src/link/Wasm/Flush.zig index 0639d9fc41..ec36a795b1 100644 --- a/src/link/Wasm/Flush.zig +++ b/src/link/Wasm/Flush.zig @@ -564,13 +564,12 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void { .__heap_base => @panic("TODO"), .__heap_end => @panic("TODO"), .__stack_pointer => { - try binary_bytes.appendSlice(gpa, &.{ - @intFromEnum(std.wasm.Valtype.i32), - @intFromBool(true), // mutable - @intFromEnum(std.wasm.Opcode.i32_const), - 0, // leb128 init value - @intFromEnum(std.wasm.Opcode.end), - }); + try binary_bytes.ensureUnusedCapacity(gpa, 9); + binary_bytes.appendAssumeCapacity(@intFromEnum(std.wasm.Valtype.i32)); + binary_bytes.appendAssumeCapacity(1); // mutable + binary_bytes.appendAssumeCapacity(@intFromEnum(std.wasm.Opcode.i32_const)); + leb.writeUleb128(binary_bytes.fixedWriter(), virtual_addrs.stack_pointer) catch unreachable; + binary_bytes.appendAssumeCapacity(@intFromEnum(std.wasm.Opcode.end)); }, .__tls_align => @panic("TODO"), .__tls_base => @panic("TODO"), |
