Commit 0ad95cf2 authored by Clemens Backes's avatar Clemens Backes Committed by V8 LUCI CQ

[wasm] Fix data segment address emission in module builder

The module builder was outputting the address as an unsigned LEB value
instead of a signed value, leading to wrong results.

R=manoskouk@chromium.org

Bug: v8:11863
Change-Id: I547ca98defcae0ba15b4004a506b65387534b08a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3463715Reviewed-by: 's avatarManos Koukoutos <manoskouk@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79090}
parent 516341f3
......@@ -2058,13 +2058,12 @@ class WasmModuleBuilder {
if (seg.is_active) {
section.emit_u8(0); // linear memory index 0 / flags
if (seg.is_global) {
// initializer is a global variable
// Initializer is a global variable.
section.emit_u8(kExprGlobalGet);
section.emit_u32v(seg.addr);
} else {
// initializer is a constant
section.emit_u8(kExprI32Const);
section.emit_u32v(seg.addr);
// Initializer is a constant.
section.emit_bytes(wasmI32Const(seg.addr));
}
section.emit_u8(kExprEnd);
} else {
......@@ -2076,7 +2075,7 @@ class WasmModuleBuilder {
});
}
// Add any explicitly added sections
// Add any explicitly added sections.
for (let exp of wasm.explicit) {
if (debug) print('emitting explicit @ ' + binary.length);
binary.emit_bytes(exp);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment