diff options
Diffstat (limited to 'llvm/lib/Object/WasmObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/WasmObjectFile.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp index 98c4b9d..ee7a306 100644 --- a/llvm/lib/Object/WasmObjectFile.cpp +++ b/llvm/lib/Object/WasmObjectFile.cpp @@ -291,6 +291,12 @@ static wasm::WasmLimits readLimits(WasmObjectFile::ReadContext &Ctx) { Result.Minimum = readVaruint64(Ctx); if (Result.Flags & wasm::WASM_LIMITS_FLAG_HAS_MAX) Result.Maximum = readVaruint64(Ctx); + if (Result.Flags & wasm::WASM_LIMITS_FLAG_HAS_PAGE_SIZE) { + uint32_t PageSizeLog2 = readVaruint32(Ctx); + if (PageSizeLog2 >= 32) + report_fatal_error("log2(wasm page size) too large"); + Result.PageSize = 1 << PageSizeLog2; + } return Result; } |