diff options
Diffstat (limited to 'llvm/tools/llvm-readobj/WasmDumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/WasmDumper.cpp | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/llvm/tools/llvm-readobj/WasmDumper.cpp b/llvm/tools/llvm-readobj/WasmDumper.cpp index dfab9f40d71b4..a02dbb9998267 100644 --- a/llvm/tools/llvm-readobj/WasmDumper.cpp +++ b/llvm/tools/llvm-readobj/WasmDumper.cpp @@ -93,18 +93,8 @@ void WasmDumper::printRelocation(const SectionRef &Section, if (SI != Obj->symbol_end()) SymName = unwrapOrError(Obj->getFileName(), SI->getName()); - bool HasAddend = false; - switch (RelocType) { - case wasm::R_WASM_MEMORY_ADDR_LEB: - case wasm::R_WASM_MEMORY_ADDR_SLEB: - case wasm::R_WASM_MEMORY_ADDR_I32: - case wasm::R_WASM_FUNCTION_OFFSET_I32: - case wasm::R_WASM_SECTION_OFFSET_I32: - HasAddend = true; - break; - default: - break; - } + bool HasAddend = wasm::relocTypeHasAddend(static_cast<uint32_t>(RelocType)); + if (opts::ExpandRelocs) { DictScope Group(W, "Relocation"); W.printNumber("Type", RelocTypeName, RelocType); @@ -192,6 +182,10 @@ void WasmDumper::printSectionHeaders() { W.printNumber("Size", static_cast<uint64_t>(Seg.Content.size())); if (Seg.Offset.Opcode == wasm::WASM_OPCODE_I32_CONST) W.printNumber("Offset", Seg.Offset.Value.Int32); + else if (Seg.Offset.Opcode == wasm::WASM_OPCODE_I64_CONST) + W.printNumber("Offset", Seg.Offset.Value.Int64); + else + llvm_unreachable("unknown init expr opcode"); } break; } @@ -227,8 +221,12 @@ void WasmDumper::printSymbol(const SymbolRef &Sym) { W.printFlags("Flags", Symbol.Info.Flags, makeArrayRef(WasmSymbolFlags)); if (Symbol.Info.Flags & wasm::WASM_SYMBOL_UNDEFINED) { - W.printString("ImportName", Symbol.Info.ImportName); - W.printString("ImportModule", Symbol.Info.ImportModule); + if (Symbol.Info.ImportName) { + W.printString("ImportName", *Symbol.Info.ImportName); + } + if (Symbol.Info.ImportModule) { + W.printString("ImportModule", *Symbol.Info.ImportModule); + } } if (Symbol.Info.Kind != wasm::WASM_SYMBOL_TYPE_DATA) { W.printHex("ElementIndex", Symbol.Info.ElementIndex); |