Index: include/llvm/BinaryFormat/Wasm.h =================================================================== --- include/llvm/BinaryFormat/Wasm.h +++ include/llvm/BinaryFormat/Wasm.h @@ -290,6 +290,9 @@ return !(LHS == RHS); } +std::string toString(wasm::WasmSymbolType type); +std::string relocTypetoString(uint32_t type); + } // end namespace wasm } // end namespace llvm Index: include/llvm/Object/Wasm.h =================================================================== --- include/llvm/Object/Wasm.h +++ include/llvm/Object/Wasm.h @@ -89,7 +89,8 @@ } void print(raw_ostream &Out) const { - Out << "Name=" << Info.Name << ", Kind=" << int(Info.Kind) + Out << "Name=" << Info.Name + << ", Kind=" << toString(wasm::WasmSymbolType(Info.Kind)) << ", Flags=" << Info.Flags; if (!isTypeData()) { Out << ", ElemIndex=" << Info.ElementIndex; Index: lib/BinaryFormat/CMakeLists.txt =================================================================== --- lib/BinaryFormat/CMakeLists.txt +++ lib/BinaryFormat/CMakeLists.txt @@ -1,8 +1,9 @@ add_llvm_library(LLVMBinaryFormat Dwarf.cpp Magic.cpp + Wasm.cpp ADDITIONAL_HEADER_DIRS ${LLVM_MAIN_INCLUDE_DIR}/llvm/BinaryFormat ) - \ No newline at end of file + Index: lib/BinaryFormat/Wasm.cpp =================================================================== --- /dev/null +++ lib/BinaryFormat/Wasm.cpp @@ -0,0 +1,34 @@ +//===-- llvm/BinaryFormat/Wasm.cpp -------------------------------*- C++-*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/BinaryFormat/Wasm.h" + +std::string llvm::wasm::toString(wasm::WasmSymbolType type) { + switch (type) { + case wasm::WASM_SYMBOL_TYPE_FUNCTION: + return "WASM_SYMBOL_TYPE_FUNCTION"; + case wasm::WASM_SYMBOL_TYPE_GLOBAL: + return "WASM_SYMBOL_TYPE_GLOBAL"; + case wasm::WASM_SYMBOL_TYPE_DATA: + return "WASM_SYMBOL_TYPE_DATA"; + case wasm::WASM_SYMBOL_TYPE_SECTION: + return "WASM_SYMBOL_TYPE_SECTION"; + } + llvm_unreachable("unknown symbol type"); +} + +std::string llvm::wasm::relocTypetoString(uint32_t type) { + switch (type) { +#define WASM_RELOC(NAME, VALUE) case VALUE: return #NAME; +#include "llvm/BinaryFormat/WasmRelocs.def" +#undef WASM_RELOC + default: + llvm_unreachable("unknown reloc type"); + } +} Index: lib/MC/LLVMBuild.txt =================================================================== --- lib/MC/LLVMBuild.txt +++ lib/MC/LLVMBuild.txt @@ -22,4 +22,4 @@ type = Library name = MC parent = Libraries -required_libraries = Support DebugInfoCodeView +required_libraries = Support BinaryFormat DebugInfoCodeView Index: lib/MC/WasmObjectWriter.cpp =================================================================== --- lib/MC/WasmObjectWriter.cpp +++ lib/MC/WasmObjectWriter.cpp @@ -37,32 +37,6 @@ #define DEBUG_TYPE "mc" -#if !defined(NDEBUG) -static std::string toString(wasm::WasmSymbolType type) { - switch (type) { - case wasm::WASM_SYMBOL_TYPE_FUNCTION: - return "WASM_SYMBOL_TYPE_FUNCTION"; - case wasm::WASM_SYMBOL_TYPE_GLOBAL: - return "WASM_SYMBOL_TYPE_GLOBAL"; - case wasm::WASM_SYMBOL_TYPE_DATA: - return "WASM_SYMBOL_TYPE_DATA"; - case wasm::WASM_SYMBOL_TYPE_SECTION: - return "WASM_SYMBOL_TYPE_SECTION"; - } - llvm_unreachable("unknown symbol type"); -} -#endif - -static std::string relocTypetoString(uint32_t type) { - switch (type) { -#define WASM_RELOC(NAME, VALUE) case VALUE: return #NAME; -#include "llvm/BinaryFormat/WasmRelocs.def" -#undef WASM_RELOC - default: - llvm_unreachable("uknown reloc type"); - } -} - namespace { // Went we ceate the indirect function table we start at 1, so that there is @@ -189,7 +163,7 @@ } void print(raw_ostream &Out) const { - Out << relocTypetoString(Type) + Out << wasm::relocTypetoString(Type) << " Off=" << Offset << ", Sym=" << *Symbol << ", Addend=" << Addend << ", FixupSection=" << FixupSection->getSectionName(); }