forked from OSchip/llvm-project
[WebAssembly] Update format of 'names' section.
This change updates to the format of the 'names' sectionin the generated wasm binary to match the latest changesto the design and 'wabt'. Differential Revision: https://reviews.llvm.org/D30950 Patch by Sam Clegg llvm-svn: 297877
This commit is contained in:
parent
06c70adcf0
commit
13f080fbeb
|
@ -81,6 +81,11 @@ enum : unsigned {
|
|||
WASM_OPCODE_F64_CONST = 0x44,
|
||||
};
|
||||
|
||||
enum : unsigned {
|
||||
WASM_NAMES_FUNCTION = 0x1,
|
||||
WASM_NAMES_LOCAL = 0x2,
|
||||
};
|
||||
|
||||
// Subset of types that a value can have
|
||||
enum class ValType {
|
||||
I32 = WASM_TYPE_I32,
|
||||
|
|
|
@ -982,25 +982,30 @@ void WasmObjectWriter::writeObject(MCAssembler &Asm,
|
|||
}
|
||||
|
||||
// === Name Section ==========================================================
|
||||
if (NumFuncImports != 0 || !Functions.empty()) {
|
||||
uint32_t TotalFunctions = NumFuncImports + Functions.size();
|
||||
if (TotalFunctions != 0) {
|
||||
startSection(Section, wasm::WASM_SEC_CUSTOM, "name");
|
||||
SectionBookkeeping SubSection;
|
||||
startSection(SubSection, wasm::WASM_NAMES_FUNCTION);
|
||||
|
||||
encodeULEB128(NumFuncImports + Functions.size(), getStream());
|
||||
encodeULEB128(TotalFunctions, getStream());
|
||||
uint32_t Index = 0;
|
||||
for (const WasmImport &Import : Imports) {
|
||||
if (Import.Kind == wasm::WASM_EXTERNAL_FUNCTION) {
|
||||
encodeULEB128(Index, getStream());
|
||||
encodeULEB128(Import.FieldName.size(), getStream());
|
||||
writeBytes(Import.FieldName);
|
||||
encodeULEB128(0, getStream()); // local count, meaningless for imports
|
||||
++Index;
|
||||
}
|
||||
}
|
||||
for (const WasmFunction &Func : Functions) {
|
||||
encodeULEB128(Index, getStream());
|
||||
encodeULEB128(Func.Sym->getName().size(), getStream());
|
||||
writeBytes(Func.Sym->getName());
|
||||
|
||||
// TODO: Local names.
|
||||
encodeULEB128(0, getStream()); // local count
|
||||
++Index;
|
||||
}
|
||||
|
||||
endSection(SubSection);
|
||||
endSection(Section);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue