aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2024-12-20 22:42:07 -0800
committerAndrew Kelley <andrew@ziglang.org>2025-01-15 15:11:36 -0800
commit2174d205409c17588f22cf60f8bba1fc1aa5c8d5 (patch)
treee7370c84796a702f61c04ea261c36da0b2400fed /src
parent728103467edba5f3407b1aaa89c9b6dda9432884 (diff)
downloadzig-2174d205409c17588f22cf60f8bba1fc1aa5c8d5.tar.gz
zig-2174d205409c17588f22cf60f8bba1fc1aa5c8d5.zip
fix stack pointer initialized to wrong vaddr
Diffstat (limited to 'src')
-rw-r--r--src/link/Wasm/Flush.zig13
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"),