[llvm] r297877 - [WebAssembly] Update format of 'names' section.
Derek Schuff via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 15 12:36:03 PDT 2017
Author: dschuff
Date: Wed Mar 15 14:36:02 2017
New Revision: 297877
URL: http://llvm.org/viewvc/llvm-project?rev=297877&view=rev
Log:
[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
Modified:
llvm/trunk/include/llvm/Support/Wasm.h
llvm/trunk/lib/MC/WasmObjectWriter.cpp
Modified: llvm/trunk/include/llvm/Support/Wasm.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Wasm.h?rev=297877&r1=297876&r2=297877&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/Wasm.h (original)
+++ llvm/trunk/include/llvm/Support/Wasm.h Wed Mar 15 14:36:02 2017
@@ -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,
Modified: llvm/trunk/lib/MC/WasmObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WasmObjectWriter.cpp?rev=297877&r1=297876&r2=297877&view=diff
==============================================================================
--- llvm/trunk/lib/MC/WasmObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/WasmObjectWriter.cpp Wed Mar 15 14:36:02 2017
@@ -982,25 +982,30 @@ void WasmObjectWriter::writeObject(MCAss
}
// === 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);
}
More information about the llvm-commits
mailing list