diff options
author | Sam Clegg <sbc@chromium.org> | 2017-05-05 18:12:34 +0000 |
---|---|---|
committer | Sam Clegg <sbc@chromium.org> | 2017-05-05 18:12:34 +0000 |
commit | 03cdd1241fc256bc3daf22da33e76f3afd249c5b (patch) | |
tree | d9269e90a203cfb216b389f2475463be9a303722 /llvm/tools/obj2yaml/wasm2yaml.cpp | |
parent | 7bab73b1f858be6df3db0f09e1415ff126693712 (diff) | |
download | bcm5719-llvm-03cdd1241fc256bc3daf22da33e76f3afd249c5b.tar.gz bcm5719-llvm-03cdd1241fc256bc3daf22da33e76f3afd249c5b.zip |
[WebAssembly] Add ObjectYAML support for wasm name section
Differential Revision: https://reviews.llvm.org/D32841
llvm-svn: 302266
Diffstat (limited to 'llvm/tools/obj2yaml/wasm2yaml.cpp')
-rw-r--r-- | llvm/tools/obj2yaml/wasm2yaml.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/llvm/tools/obj2yaml/wasm2yaml.cpp b/llvm/tools/obj2yaml/wasm2yaml.cpp index f6b530c4196..cc04b995f66 100644 --- a/llvm/tools/obj2yaml/wasm2yaml.cpp +++ b/llvm/tools/obj2yaml/wasm2yaml.cpp @@ -44,7 +44,24 @@ ErrorOr<WasmYAML::Object *> WasmDumper::dump() { } auto CustomSec = make_unique<WasmYAML::CustomSection>(); CustomSec->Name = WasmSec.Name; - CustomSec->Payload = yaml::BinaryRef(WasmSec.Content); + if (CustomSec->Name == "name") { + for (const object::SymbolRef& Sym: Obj.symbols()) { + uint32_t Flags = Sym.getFlags(); + // Skip over symbols that come from imports or exports + if (Flags & + (object::SymbolRef::SF_Global | object::SymbolRef::SF_Undefined)) + continue; + Expected<StringRef> NameOrError = Sym.getName(); + if (!NameOrError) + continue; + WasmYAML::NameEntry NameEntry; + NameEntry.Name = *NameOrError; + NameEntry.Index = Sym.getValue(); + CustomSec->FunctionNames.push_back(NameEntry); + } + } else { + CustomSec->Payload = yaml::BinaryRef(WasmSec.Content); + } S = std::move(CustomSec); break; } |