Skip to content

Commit

Permalink
[WebAssembly] Provide WasmFunction content offset information.
Browse files Browse the repository at this point in the history
WasmObjectWriter mostly operates with function segments offsets that do
not include their size fields. WasmObjectFile needs to have and provide
this information to the lld to maintain proper
R_WEBASSEMBLY_FUNCTION_OFFSET_I32 relocations entries.

Patch by Yury Delendik

Differential Revision: https://reviews.llvm.org/D46763

llvm-svn: 332406
  • Loading branch information
sbc100 committed May 15, 2018
1 parent ad5684a commit 1be4bf9
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 0 deletions.
1 change: 1 addition & 0 deletions llvm/include/llvm/BinaryFormat/Wasm.h
Expand Up @@ -102,6 +102,7 @@ struct WasmFunction {
ArrayRef<uint8_t> Body;
uint32_t CodeSectionOffset;
uint32_t Size;
uint32_t CodeOffset; // start of Locals and Body
StringRef SymbolName; // from the "linking" section
StringRef DebugName; // from the "name" section
uint32_t Comdat; // from the "comdat info" section
Expand Down
1 change: 1 addition & 0 deletions llvm/lib/Object/WasmObjectFile.cpp
Expand Up @@ -875,6 +875,7 @@ Error WasmObjectFile::parseCodeSection(const uint8_t *Ptr, const uint8_t *End) {
uint32_t Size = readVaruint32(Ptr);
const uint8_t *FunctionEnd = Ptr + Size;

Function.CodeOffset = Ptr - FunctionStart;
Function.Index = NumImportedFunctions + Functions.size();
Function.CodeSectionOffset = FunctionStart - CodeSectionStart;
Function.Size = FunctionEnd - FunctionStart;
Expand Down

0 comments on commit 1be4bf9

Please sign in to comment.