[llvm-branch-commits] [lld] release/19.x: [lld][WebAssembly] Fix use of uninitialized stack data with --wasm64 (#107780) (PR #119723)
Tobias Hieta via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Dec 17 01:06:53 PST 2024
https://github.com/tru updated https://github.com/llvm/llvm-project/pull/119723
>From d2953ab0a79f9f2d2877703dbc235b92541faec9 Mon Sep 17 00:00:00 2001
From: Sam Clegg <sbc at chromium.org>
Date: Mon, 9 Sep 2024 09:28:08 -0700
Subject: [PATCH] [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
(cherry picked from commit 5c8fd1eece8fff69871cef57a2363dc0f734a7d1)
---
lld/wasm/SyntheticSections.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lld/wasm/SyntheticSections.cpp b/lld/wasm/SyntheticSections.cpp
index f02f55519a2512..72d08b849d8e86 100644
--- a/lld/wasm/SyntheticSections.cpp
+++ b/lld/wasm/SyntheticSections.cpp
@@ -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);
More information about the llvm-branch-commits
mailing list