[lld][WebAssembly] Fix use of uninitialized stack data with --wasm64 (#107780)

In the case of `--wasm64` we were setting the type of the init expression
to be 64-bit but were only setting the low 32-bits of the value (by
assigning to Int32).

Fixes: https://github.com/emscripten-core/emscripten/issues/22538
This commit is contained in:
Sam Clegg 2024-09-09 09:28:08 -07:00 committed by GitHub
parent 95753ffa49
commit 5c8fd1eece
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -587,8 +587,7 @@ void ElemSection::writeBody() {
initExpr.Inst.Value.Global = WasmSym::tableBase->getGlobalIndex();
} else {
bool is64 = config->is64.value_or(false);
initExpr.Inst.Opcode = is64 ? WASM_OPCODE_I64_CONST : WASM_OPCODE_I32_CONST;
initExpr.Inst.Value.Int32 = config->tableBase;
initExpr = intConst(config->tableBase, is64);
}
writeInitExpr(os, initExpr);