<div dir="ltr">Hey, I was just looking at that, you are fast!<div>Thanks for the fix.</div><div>uint64_t should be fine.</div><div><br></div><div>@sbc:<br>I guess technically even for wasm32 the section size could still be > 32-bits because the encoding is LEB, right? It's a corner case but makes sense for this bit to be uint64.</div><br><div class="gmail_quote"><div dir="ltr">On Mon, Jan 30, 2017 at 4:13 PM Vedant Kumar <<a href="mailto:vsk@apple.com">vsk@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Derek,<br class="gmail_msg">
<br class="gmail_msg">
I saw a build error after this, and tried to address it in r293573. PTAL and<br class="gmail_msg">
let me know if it's OK.<br class="gmail_msg">
<br class="gmail_msg">
thanks<br class="gmail_msg">
vedant<br class="gmail_msg">
<br class="gmail_msg">
> On Jan 30, 2017, at 3:30 PM, Derek Schuff via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg cremed" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br class="gmail_msg">
><br class="gmail_msg">
> Author: dschuff<br class="gmail_msg">
> Date: Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> New Revision: 293569<br class="gmail_msg">
><br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=293569&view=rev" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project?rev=293569&view=rev</a><br class="gmail_msg">
> Log:<br class="gmail_msg">
> [WebAssembly] Add wasm support for llvm-readobj<br class="gmail_msg">
><br class="gmail_msg">
> Create a WasmDumper subclass of ObjDumper to support Webassembly binary<br class="gmail_msg">
> files.<br class="gmail_msg">
><br class="gmail_msg">
> Patch by Sam Clegg<br class="gmail_msg">
><br class="gmail_msg">
> Differential Revision: <a href="https://reviews.llvm.org/D27355" rel="noreferrer" class="gmail_msg cremed" target="_blank">https://reviews.llvm.org/D27355</a><br class="gmail_msg">
><br class="gmail_msg">
> Added:<br class="gmail_msg">
>    llvm/trunk/test/tools/llvm-readobj/Inputs/trivial.obj.wasm<br class="gmail_msg">
>    llvm/trunk/tools/llvm-readobj/WasmDumper.cpp<br class="gmail_msg">
> Modified:<br class="gmail_msg">
>    llvm/trunk/include/llvm/Object/Wasm.h<br class="gmail_msg">
>    llvm/trunk/include/llvm/Support/Wasm.h<br class="gmail_msg">
>    llvm/trunk/lib/Object/WasmObjectFile.cpp<br class="gmail_msg">
>    llvm/trunk/test/tools/llvm-readobj/file-headers.test<br class="gmail_msg">
>    llvm/trunk/test/tools/llvm-readobj/sections.test<br class="gmail_msg">
>    llvm/trunk/tools/llvm-readobj/CMakeLists.txt<br class="gmail_msg">
>    llvm/trunk/tools/llvm-readobj/ObjDumper.h<br class="gmail_msg">
>    llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/include/llvm/Object/Wasm.h<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/Wasm.h?rev=293569&r1=293568&r2=293569&view=diff" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/Wasm.h?rev=293569&r1=293568&r2=293569&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/include/llvm/Object/Wasm.h (original)<br class="gmail_msg">
> +++ llvm/trunk/include/llvm/Object/Wasm.h Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> @@ -87,8 +87,8 @@ protected:<br class="gmail_msg">
><br class="gmail_msg">
> private:<br class="gmail_msg">
>   const uint8_t *getPtr(size_t Offset) const;<br class="gmail_msg">
> -  Error parseUserSection(wasm::WasmSection &Sec, const uint8_t *Ptr,<br class="gmail_msg">
> -                         size_t Length);<br class="gmail_msg">
> +  Error parseCustomSection(wasm::WasmSection &Sec, const uint8_t *Ptr,<br class="gmail_msg">
> +                           size_t Length);<br class="gmail_msg">
><br class="gmail_msg">
>   wasm::WasmObjectHeader Header;<br class="gmail_msg">
>   std::vector<wasm::WasmSection> Sections;<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/include/llvm/Support/Wasm.h<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Wasm.h?rev=293569&r1=293568&r2=293569&view=diff" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Wasm.h?rev=293569&r1=293568&r2=293569&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/include/llvm/Support/Wasm.h (original)<br class="gmail_msg">
> +++ llvm/trunk/include/llvm/Support/Wasm.h Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> @@ -38,7 +38,7 @@ struct WasmSection {<br class="gmail_msg">
> };<br class="gmail_msg">
><br class="gmail_msg">
> enum : unsigned {<br class="gmail_msg">
> -  WASM_SEC_USER = 0,     // User-defined section<br class="gmail_msg">
> +  WASM_SEC_CUSTOM = 0,   // Custom / User-defined section<br class="gmail_msg">
>   WASM_SEC_TYPE = 1,     // Function signature declarations<br class="gmail_msg">
>   WASM_SEC_IMPORT = 2,   // Import declarations<br class="gmail_msg">
>   WASM_SEC_FUNCTION = 3, // Function declarations<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/lib/Object/WasmObjectFile.cpp<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/WasmObjectFile.cpp?rev=293569&r1=293568&r2=293569&view=diff" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/WasmObjectFile.cpp?rev=293569&r1=293568&r2=293569&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/lib/Object/WasmObjectFile.cpp (original)<br class="gmail_msg">
> +++ llvm/trunk/lib/Object/WasmObjectFile.cpp Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> @@ -83,16 +83,17 @@ WasmObjectFile::WasmObjectFile(MemoryBuf<br class="gmail_msg">
>   while (Ptr < Eof) {<br class="gmail_msg">
>     if ((Err = readSection(Sec, Ptr, getPtr(0))))<br class="gmail_msg">
>       return;<br class="gmail_msg">
> -    if (Sec.Type == wasm::WASM_SEC_USER) {<br class="gmail_msg">
> -      if ((Err = parseUserSection(Sec, Sec.Content.data(), Sec.Content.size())))<br class="gmail_msg">
> +    if (Sec.Type == wasm::WASM_SEC_CUSTOM) {<br class="gmail_msg">
> +      if ((Err =<br class="gmail_msg">
> +               parseCustomSection(Sec, Sec.Content.data(), Sec.Content.size())))<br class="gmail_msg">
>         return;<br class="gmail_msg">
>     }<br class="gmail_msg">
>     Sections.push_back(Sec);<br class="gmail_msg">
>   }<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
> -Error WasmObjectFile::parseUserSection(wasm::WasmSection &Sec,<br class="gmail_msg">
> -                                       const uint8_t *Ptr, size_t Length) {<br class="gmail_msg">
> +Error WasmObjectFile::parseCustomSection(wasm::WasmSection &Sec,<br class="gmail_msg">
> +                                         const uint8_t *Ptr, size_t Length) {<br class="gmail_msg">
>   Sec.Name = readString(Ptr);<br class="gmail_msg">
>   return Error::success();<br class="gmail_msg">
> }<br class="gmail_msg">
> @@ -186,7 +187,7 @@ std::error_code WasmObjectFile::getSecti<br class="gmail_msg">
>     ECase(ELEM);<br class="gmail_msg">
>     ECase(CODE);<br class="gmail_msg">
>     ECase(DATA);<br class="gmail_msg">
> -  case wasm::WASM_SEC_USER:<br class="gmail_msg">
> +  case wasm::WASM_SEC_CUSTOM:<br class="gmail_msg">
>     Res = S.Name;<br class="gmail_msg">
>     break;<br class="gmail_msg">
>   default:<br class="gmail_msg">
><br class="gmail_msg">
> Added: llvm/trunk/test/tools/llvm-readobj/Inputs/trivial.obj.wasm<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/Inputs/trivial.obj.wasm?rev=293569&view=auto" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/Inputs/trivial.obj.wasm?rev=293569&view=auto</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> Binary files llvm/trunk/test/tools/llvm-readobj/Inputs/trivial.obj.wasm (added) and llvm/trunk/test/tools/llvm-readobj/Inputs/trivial.obj.wasm Mon Jan 30 17:30:52 2017 differ<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/tools/llvm-readobj/file-headers.test<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/file-headers.test?rev=293569&r1=293568&r2=293569&view=diff" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/file-headers.test?rev=293569&r1=293568&r2=293569&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/tools/llvm-readobj/file-headers.test (original)<br class="gmail_msg">
> +++ llvm/trunk/test/tools/llvm-readobj/file-headers.test Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> @@ -26,6 +26,12 @@ RUN: llvm-readobj -h %p/Inputs/magic.cof<br class="gmail_msg">
> RUN:   | FileCheck %s -check-prefix COFF-IMPORTLIB<br class="gmail_msg">
> RUN: llvm-readobj -h %p/Inputs/trivial.obj.elf-lanai \<br class="gmail_msg">
> RUN:   | FileCheck %s -check-prefix ELF-LANAI<br class="gmail_msg">
> +# trivial.obj.wasm was generated using wast2wasm which is part of the wabt<br class="gmail_msg">
> +# project (<a href="https://github.com/WebAssembly/wabt" rel="noreferrer" class="gmail_msg cremed" target="_blank">https://github.com/WebAssembly/wabt</a>) using the following command:<br class="gmail_msg">
> +# $ wast2wasm --debug-names ./test/roundtrip/generate-some-names.txt -o \<br class="gmail_msg">
> +#   trivial.obj.wasm<br class="gmail_msg">
> +RUN: llvm-readobj -h %p/Inputs/trivial.obj.wasm \<br class="gmail_msg">
> +RUN:   | FileCheck %s -check-prefix WASM<br class="gmail_msg">
><br class="gmail_msg">
> COFF-ARM:      File: {{(.*[/\\])?}}trivial.obj.coff-arm<br class="gmail_msg">
> COFF-ARM-NEXT: Format: COFF-ARM<br class="gmail_msg">
> @@ -367,3 +373,8 @@ ELF-LANAI-NEXT:   SectionHeaderEntrySize<br class="gmail_msg">
> ELF-LANAI-NEXT:   SectionHeaderCount: 8<br class="gmail_msg">
> ELF-LANAI-NEXT:   StringTableSectionIndex: 1<br class="gmail_msg">
> ELF-LANAI-NEXT: }<br class="gmail_msg">
> +<br class="gmail_msg">
> +WASM: Format: WASM<br class="gmail_msg">
> +WASM-NEXT: Arch: wasm32<br class="gmail_msg">
> +WASM-NEXT: AddressSize: 32bit<br class="gmail_msg">
> +WASM-NEXT: Version: 0xD<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/test/tools/llvm-readobj/sections.test<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/sections.test?rev=293569&r1=293568&r2=293569&view=diff" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/sections.test?rev=293569&r1=293568&r2=293569&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/test/tools/llvm-readobj/sections.test (original)<br class="gmail_msg">
> +++ llvm/trunk/test/tools/llvm-readobj/sections.test Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> @@ -14,6 +14,8 @@ RUN: llvm-readobj -s %p/Inputs/trivial.o<br class="gmail_msg">
> RUN:   | FileCheck %s -check-prefix MACHO-PPC64<br class="gmail_msg">
> RUN: llvm-readobj -s %p/Inputs/trivial.obj.macho-arm \<br class="gmail_msg">
> RUN:   | FileCheck %s -check-prefix MACHO-ARM<br class="gmail_msg">
> +RUN: llvm-readobj -s %p/Inputs/trivial.obj.wasm \<br class="gmail_msg">
> +RUN:   | FileCheck %s -check-prefix WASM<br class="gmail_msg">
><br class="gmail_msg">
> COFF:      Sections [<br class="gmail_msg">
> COFF-NEXT:   Section {<br class="gmail_msg">
> @@ -490,3 +492,47 @@ MACHO-ARM-NEXT:    Reserved1: 0x0<br class="gmail_msg">
> MACHO-ARM-NEXT:    Reserved2: 0x0<br class="gmail_msg">
> MACHO-ARM-NEXT:  }<br class="gmail_msg">
> MACHO-ARM-NEXT:]<br class="gmail_msg">
> +<br class="gmail_msg">
> +WASM: Sections [<br class="gmail_msg">
> +WASM-NEXT:   Section {<br class="gmail_msg">
> +WASM-NEXT:     Type: TYPE (0x1)<br class="gmail_msg">
> +WASM-NEXT:     Size: 15<br class="gmail_msg">
> +WASM-NEXT:     Offset: 8<br class="gmail_msg">
> +WASM-NEXT:   }<br class="gmail_msg">
> +WASM-NEXT:   Section {<br class="gmail_msg">
> +WASM-NEXT:     Type: IMPORT (0x2)<br class="gmail_msg">
> +WASM-NEXT:     Size: 11<br class="gmail_msg">
> +WASM-NEXT:     Offset: 25<br class="gmail_msg">
> +WASM-NEXT:   }<br class="gmail_msg">
> +WASM-NEXT:   Section {<br class="gmail_msg">
> +WASM-NEXT:     Type: FUNCTION (0x3)<br class="gmail_msg">
> +WASM-NEXT:     Size: 3<br class="gmail_msg">
> +WASM-NEXT:     Offset: 38<br class="gmail_msg">
> +WASM-NEXT:   }<br class="gmail_msg">
> +WASM-NEXT:   Section {<br class="gmail_msg">
> +WASM-NEXT:     Type: TABLE (0x4)<br class="gmail_msg">
> +WASM-NEXT:     Size: 5<br class="gmail_msg">
> +WASM-NEXT:     Offset: 43<br class="gmail_msg">
> +WASM-NEXT:   }<br class="gmail_msg">
> +WASM-NEXT:   Section {<br class="gmail_msg">
> +WASM-NEXT:     Type: EXPORT (0x7)<br class="gmail_msg">
> +WASM-NEXT:     Size: 14<br class="gmail_msg">
> +WASM-NEXT:     Offset: 50<br class="gmail_msg">
> +WASM-NEXT:   }<br class="gmail_msg">
> +WASM-NEXT:   Section {<br class="gmail_msg">
> +WASM-NEXT:     Type: ELEM (0x9)<br class="gmail_msg">
> +WASM-NEXT:     Size: 7<br class="gmail_msg">
> +WASM-NEXT:     Offset: 66<br class="gmail_msg">
> +WASM-NEXT:   }<br class="gmail_msg">
> +WASM-NEXT:   Section {<br class="gmail_msg">
> +WASM-NEXT:     Type: CODE (0xA)<br class="gmail_msg">
> +WASM-NEXT:     Size: 42<br class="gmail_msg">
> +WASM-NEXT:     Offset: 75<br class="gmail_msg">
> +WASM-NEXT:   }<br class="gmail_msg">
> +WASM-NEXT:   Section {<br class="gmail_msg">
> +WASM-NEXT:     Type: CUSTOM (0x0)<br class="gmail_msg">
> +WASM-NEXT:     Size: 44<br class="gmail_msg">
> +WASM-NEXT:     Offset: 119<br class="gmail_msg">
> +WASM-NEXT:     Name: name<br class="gmail_msg">
> +WASM-NEXT:   }<br class="gmail_msg">
> +WASM-NEXT: ]<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/tools/llvm-readobj/CMakeLists.txt<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/CMakeLists.txt?rev=293569&r1=293568&r2=293569&view=diff" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/CMakeLists.txt?rev=293569&r1=293568&r2=293569&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/tools/llvm-readobj/CMakeLists.txt (original)<br class="gmail_msg">
> +++ llvm/trunk/tools/llvm-readobj/CMakeLists.txt Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> @@ -15,5 +15,6 @@ add_llvm_tool(llvm-readobj<br class="gmail_msg">
>   llvm-readobj.cpp<br class="gmail_msg">
>   MachODumper.cpp<br class="gmail_msg">
>   ObjDumper.cpp<br class="gmail_msg">
> +  WasmDumper.cpp<br class="gmail_msg">
>   Win64EHDumper.cpp<br class="gmail_msg">
>   )<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/tools/llvm-readobj/ObjDumper.h<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ObjDumper.h?rev=293569&r1=293568&r2=293569&view=diff" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ObjDumper.h?rev=293569&r1=293568&r2=293569&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/tools/llvm-readobj/ObjDumper.h (original)<br class="gmail_msg">
> +++ llvm/trunk/tools/llvm-readobj/ObjDumper.h Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> @@ -96,6 +96,10 @@ std::error_code createMachODumper(const<br class="gmail_msg">
>                                   ScopedPrinter &Writer,<br class="gmail_msg">
>                                   std::unique_ptr<ObjDumper> &Result);<br class="gmail_msg">
><br class="gmail_msg">
> +std::error_code createWasmDumper(const object::ObjectFile *Obj,<br class="gmail_msg">
> +                                 ScopedPrinter &Writer,<br class="gmail_msg">
> +                                 std::unique_ptr<ObjDumper> &Result);<br class="gmail_msg">
> +<br class="gmail_msg">
> void dumpCOFFImportFile(const object::COFFImportFile *File);<br class="gmail_msg">
><br class="gmail_msg">
> void dumpCodeViewMergedTypes(ScopedPrinter &Writer,<br class="gmail_msg">
><br class="gmail_msg">
> Added: llvm/trunk/tools/llvm-readobj/WasmDumper.cpp<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/WasmDumper.cpp?rev=293569&view=auto" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/WasmDumper.cpp?rev=293569&view=auto</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/tools/llvm-readobj/WasmDumper.cpp (added)<br class="gmail_msg">
> +++ llvm/trunk/tools/llvm-readobj/WasmDumper.cpp Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> @@ -0,0 +1,92 @@<br class="gmail_msg">
> +//===-- WasmDumper.cpp - Wasm-specific object file dumper -----------------===//<br class="gmail_msg">
> +//<br class="gmail_msg">
> +//                     The LLVM Compiler Infrastructure<br class="gmail_msg">
> +//<br class="gmail_msg">
> +// This file is distributed under the University of Illinois Open Source<br class="gmail_msg">
> +// License. See LICENSE.TXT for details.<br class="gmail_msg">
> +//<br class="gmail_msg">
> +//===----------------------------------------------------------------------===//<br class="gmail_msg">
> +//<br class="gmail_msg">
> +// This file implements the Wasm-specific dumper for llvm-readobj.<br class="gmail_msg">
> +//<br class="gmail_msg">
> +//===----------------------------------------------------------------------===//<br class="gmail_msg">
> +<br class="gmail_msg">
> +#include "Error.h"<br class="gmail_msg">
> +#include "ObjDumper.h"<br class="gmail_msg">
> +#include "llvm/Object/Wasm.h"<br class="gmail_msg">
> +#include "llvm/Support/ScopedPrinter.h"<br class="gmail_msg">
> +<br class="gmail_msg">
> +using namespace llvm;<br class="gmail_msg">
> +using namespace object;<br class="gmail_msg">
> +<br class="gmail_msg">
> +namespace {<br class="gmail_msg">
> +<br class="gmail_msg">
> +const char *wasmSectionTypeToString(uint32_t Type) {<br class="gmail_msg">
> +#define ECase(X)                                                               \<br class="gmail_msg">
> +  case wasm::WASM_SEC_##X:                                                     \<br class="gmail_msg">
> +    return #X;<br class="gmail_msg">
> +  switch (Type) {<br class="gmail_msg">
> +    ECase(CUSTOM);<br class="gmail_msg">
> +    ECase(TYPE);<br class="gmail_msg">
> +    ECase(IMPORT);<br class="gmail_msg">
> +    ECase(FUNCTION);<br class="gmail_msg">
> +    ECase(TABLE);<br class="gmail_msg">
> +    ECase(MEMORY);<br class="gmail_msg">
> +    ECase(GLOBAL);<br class="gmail_msg">
> +    ECase(EXPORT);<br class="gmail_msg">
> +    ECase(START);<br class="gmail_msg">
> +    ECase(ELEM);<br class="gmail_msg">
> +    ECase(CODE);<br class="gmail_msg">
> +    ECase(DATA);<br class="gmail_msg">
> +  }<br class="gmail_msg">
> +#undef ECase<br class="gmail_msg">
> +  return "";<br class="gmail_msg">
> +}<br class="gmail_msg">
> +<br class="gmail_msg">
> +class WasmDumper : public ObjDumper {<br class="gmail_msg">
> +public:<br class="gmail_msg">
> +  WasmDumper(const WasmObjectFile *Obj, ScopedPrinter &Writer)<br class="gmail_msg">
> +      : ObjDumper(Writer), Obj(Obj) {}<br class="gmail_msg">
> +<br class="gmail_msg">
> +  void printFileHeaders() override {<br class="gmail_msg">
> +    W.printHex("Version", Obj->getHeader().Version);<br class="gmail_msg">
> +  }<br class="gmail_msg">
> +<br class="gmail_msg">
> +  void printSections() override {<br class="gmail_msg">
> +    ListScope Group(W, "Sections");<br class="gmail_msg">
> +    for (const SectionRef &Section : Obj->sections()) {<br class="gmail_msg">
> +      const wasm::WasmSection *WasmSec = Obj->getWasmSection(Section);<br class="gmail_msg">
> +      DictScope SectionD(W, "Section");<br class="gmail_msg">
> +      const char *Type = wasmSectionTypeToString(WasmSec->Type);<br class="gmail_msg">
> +      W.printHex("Type", Type, WasmSec->Type);<br class="gmail_msg">
> +      W.printNumber("Size", WasmSec->Content.size());<br class="gmail_msg">
> +      W.printNumber("Offset", WasmSec->Offset);<br class="gmail_msg">
> +      if (WasmSec->Type == wasm::WASM_SEC_CUSTOM) {<br class="gmail_msg">
> +        W.printString("Name", WasmSec->Name);<br class="gmail_msg">
> +      }<br class="gmail_msg">
> +    }<br class="gmail_msg">
> +  }<br class="gmail_msg">
> +  void printRelocations() override { llvm_unreachable("unimplemented"); }<br class="gmail_msg">
> +  void printSymbols() override { llvm_unreachable("unimplemented"); }<br class="gmail_msg">
> +  void printDynamicSymbols() override { llvm_unreachable("unimplemented"); }<br class="gmail_msg">
> +  void printUnwindInfo() override { llvm_unreachable("unimplemented"); }<br class="gmail_msg">
> +  void printStackMap() const override { llvm_unreachable("unimplemented"); }<br class="gmail_msg">
> +<br class="gmail_msg">
> +private:<br class="gmail_msg">
> +  const WasmObjectFile *Obj;<br class="gmail_msg">
> +};<br class="gmail_msg">
> +}<br class="gmail_msg">
> +<br class="gmail_msg">
> +namespace llvm {<br class="gmail_msg">
> +<br class="gmail_msg">
> +std::error_code createWasmDumper(const object::ObjectFile *Obj,<br class="gmail_msg">
> +                                 ScopedPrinter &Writer,<br class="gmail_msg">
> +                                 std::unique_ptr<ObjDumper> &Result) {<br class="gmail_msg">
> +  const WasmObjectFile *WasmObj = dyn_cast<WasmObjectFile>(Obj);<br class="gmail_msg">
> +  assert(WasmObj && "createWasmDumper called with non-wasm object");<br class="gmail_msg">
> +<br class="gmail_msg">
> +  Result.reset(new WasmDumper(WasmObj, Writer));<br class="gmail_msg">
> +  return readobj_error::success;<br class="gmail_msg">
> +}<br class="gmail_msg">
> +<br class="gmail_msg">
> +} // namespace llvm<br class="gmail_msg">
><br class="gmail_msg">
> Modified: llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp<br class="gmail_msg">
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp?rev=293569&r1=293568&r2=293569&view=diff" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp?rev=293569&r1=293568&r2=293569&view=diff</a><br class="gmail_msg">
> ==============================================================================<br class="gmail_msg">
> --- llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp (original)<br class="gmail_msg">
> +++ llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp Mon Jan 30 17:30:52 2017<br class="gmail_msg">
> @@ -358,6 +358,8 @@ static std::error_code createDumper(cons<br class="gmail_msg">
>     return createELFDumper(Obj, Writer, Result);<br class="gmail_msg">
>   if (Obj->isMachO())<br class="gmail_msg">
>     return createMachODumper(Obj, Writer, Result);<br class="gmail_msg">
> +  if (Obj->isWasm())<br class="gmail_msg">
> +    return createWasmDumper(Obj, Writer, Result);<br class="gmail_msg">
><br class="gmail_msg">
>   return readobj_error::unsupported_obj_file_format;<br class="gmail_msg">
> }<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> _______________________________________________<br class="gmail_msg">
> llvm-commits mailing list<br class="gmail_msg">
> <a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg cremed" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg cremed" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div></div>