authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-12-20 22:42:07-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-01-15 15:11:36-08:00
log2174d205409c17588f22cf60f8bba1fc1aa5c8d5
treee7370c84796a702f61c04ea261c36da0b2400fed
parent728103467edba5f3407b1aaa89c9b6dda9432884

fix stack pointer initialized to wrong vaddr


1 files changed, 6 insertions(+), 7 deletions(-)

src/link/Wasm/Flush.zig+6-7
...@@ -564,13 +564,12 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void {...@@ -564,13 +564,12 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void {
564 .__heap_base => @panic("TODO"),564 .__heap_base => @panic("TODO"),
565 .__heap_end => @panic("TODO"),565 .__heap_end => @panic("TODO"),
566 .__stack_pointer => {566 .__stack_pointer => {
567 try binary_bytes.appendSlice(gpa, &.{567 try binary_bytes.ensureUnusedCapacity(gpa, 9);
568 @intFromEnum(std.wasm.Valtype.i32),568 binary_bytes.appendAssumeCapacity(@intFromEnum(std.wasm.Valtype.i32));
569 @intFromBool(true), // mutable569 binary_bytes.appendAssumeCapacity(1); // mutable
570 @intFromEnum(std.wasm.Opcode.i32_const),570 binary_bytes.appendAssumeCapacity(@intFromEnum(std.wasm.Opcode.i32_const));
571 0, // leb128 init value571 leb.writeUleb128(binary_bytes.fixedWriter(), virtual_addrs.stack_pointer) catch unreachable;
572 @intFromEnum(std.wasm.Opcode.end),572 binary_bytes.appendAssumeCapacity(@intFromEnum(std.wasm.Opcode.end));
573 });
574 },573 },
575 .__tls_align => @panic("TODO"),574 .__tls_align => @panic("TODO"),
576 .__tls_base => @panic("TODO"),575 .__tls_base => @panic("TODO"),