diff options
Diffstat (limited to 'tools/obj2yaml/wasm2yaml.cpp')
-rw-r--r-- | tools/obj2yaml/wasm2yaml.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tools/obj2yaml/wasm2yaml.cpp b/tools/obj2yaml/wasm2yaml.cpp index f6b530c41969d..cc04b995f667a 100644 --- a/tools/obj2yaml/wasm2yaml.cpp +++ b/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; } |