<div dir="ltr">Hello Sam,<br><br>This commit broke at least two builders:<br><a href="http://lab.llvm.org:8011/builders/lld-x86_64-darwin13/builds/20828">http://lab.llvm.org:8011/builders/lld-x86_64-darwin13/builds/20828</a><br>and <br><a href="http://lab.llvm.org:8011/builders/clang-lld-x86_64-2stage">http://lab.llvm.org:8011/builders/clang-lld-x86_64-2stage</a><br><br>. . .<br>/Users/buildslave/as-bldslv9/lld-x86_64-darwin13/llvm.src/lib/MC/WasmObjectWriter.cpp:40:20: error: unused function 'toString' [-Werror,-Wunused-function]<br>static std::string toString(wasm::WasmSymbolType type) {<br>                   ^<br>1 error generated.<br>make[2]: *** [lib/MC/CMakeFiles/LLVMMC.dir/WasmObjectWriter.cpp.o] Error 1<br>make[1]: *** [lib/MC/CMakeFiles/LLVMMC.dir/all] Error 2<br>make[1]: *** Waiting for unfinished jobs....<br><br>Please have a look ASAP?<br><br>Thanks<br><br>Galina<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 30, 2018 at 12:40 PM, Sam Clegg via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: sbc<br>
Date: Mon Apr 30 12:40:57 2018<br>
New Revision: 331220<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=331220&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=331220&view=rev</a><br>
Log:<br>
[WebAssembly] MC: Improve debug output<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/MC/<wbr>MCSymbolWasm.h<br>
    llvm/trunk/lib/MC/<wbr>WasmObjectWriter.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/MC/<wbr>MCSymbolWasm.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCSymbolWasm.h?rev=331220&r1=331219&r2=331220&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/MC/MCSymbolWasm.h?rev=<wbr>331220&r1=331219&r2=331220&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/MC/<wbr>MCSymbolWasm.h (original)<br>
+++ llvm/trunk/include/llvm/MC/<wbr>MCSymbolWasm.h Mon Apr 30 12:40:57 2018<br>
@@ -45,6 +45,7 @@ public:<br>
   bool isFunction() const { return Type == wasm::WASM_SYMBOL_TYPE_<wbr>FUNCTION; }<br>
   bool isData() const { return Type == wasm::WASM_SYMBOL_TYPE_DATA; }<br>
   bool isGlobal() const { return Type == wasm::WASM_SYMBOL_TYPE_GLOBAL; }<br>
+  bool isSection() const { return Type == wasm::WASM_SYMBOL_TYPE_<wbr>SECTION; }<br>
   wasm::WasmSymbolType getType() const { return Type; }<br>
   void setType(wasm::WasmSymbolType type) { Type = type; }<br>
<br>
<br>
Modified: llvm/trunk/lib/MC/<wbr>WasmObjectWriter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WasmObjectWriter.cpp?rev=331220&r1=331219&r2=331220&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/MC/<wbr>WasmObjectWriter.cpp?rev=<wbr>331220&r1=331219&r2=331220&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/MC/<wbr>WasmObjectWriter.cpp (original)<br>
+++ llvm/trunk/lib/MC/<wbr>WasmObjectWriter.cpp Mon Apr 30 12:40:57 2018<br>
@@ -37,6 +37,29 @@ using namespace llvm;<br>
<br>
 #define DEBUG_TYPE "mc"<br>
<br>
+static std::string toString(wasm::WasmSymbolType type) {<br>
+  switch (type) {<br>
+  case wasm::WASM_SYMBOL_TYPE_<wbr>FUNCTION:<br>
+    return "WASM_SYMBOL_TYPE_FUNCTION";<br>
+  case wasm::WASM_SYMBOL_TYPE_GLOBAL:<br>
+    return "WASM_SYMBOL_TYPE_GLOBAL";<br>
+  case wasm::WASM_SYMBOL_TYPE_DATA:<br>
+    return "WASM_SYMBOL_TYPE_DATA";<br>
+  case wasm::WASM_SYMBOL_TYPE_<wbr>SECTION:<br>
+    return "WASM_SYMBOL_TYPE_SECTION";<br>
+  }<br>
+}<br>
+<br>
+static std::string relocTypetoString(uint32_t type) {<br>
+  switch (type) {<br>
+#define WASM_RELOC(NAME, VALUE) case VALUE: return #NAME;<br>
+#include "llvm/BinaryFormat/WasmRelocs.<wbr>def"<br>
+#undef WASM_RELOC<br>
+  default:<br>
+    llvm_unreachable("uknown reloc type");<br>
+  }<br>
+}<br>
+<br>
 namespace {<br>
<br>
 // Went we ceate the indirect function table we start at 1, so that there is<br>
@@ -163,8 +186,8 @@ struct WasmRelocationEntry {<br>
   }<br>
<br>
   void print(raw_ostream &Out) const {<br>
-    Out << "Off=" << Offset << ", Sym=" << *Symbol << ", Addend=" << Addend<br>
-        << ", Type=" << Type<br>
+    Out << relocTypetoString(Type)<br>
+        << " Off=" << Offset << ", Sym=" << *Symbol << ", Addend=" << Addend<br>
         << ", FixupSection=" << FixupSection->getSectionName()<wbr>;<br>
   }<br>
<br>
@@ -214,7 +237,7 @@ class WasmObjectWriter : public MCObject<br>
   DenseMap<const MCSymbolWasm *, uint32_t> TableIndices;<br>
   // Maps function/global symbols to the (shared) Symbol index space.<br>
   DenseMap<const MCSymbolWasm *, uint32_t> SymbolIndices;<br>
-  // Maps function/global symbols to the function/global Wasm index space.<br>
+  // Maps function/global symbols to the function/global/section index space.<br>
   DenseMap<const MCSymbolWasm *, uint32_t> WasmIndices;<br>
   // Maps data symbols to the Wasm segment and offset/size with the segment.<br>
   DenseMap<const MCSymbolWasm *, wasm::WasmDataReference> DataLocations;<br>
@@ -1235,11 +1258,11 @@ void WasmObjectWriter::writeObject(<wbr>MCAss<br>
       continue;<br>
<br>
     const auto &WS = static_cast<const MCSymbolWasm &>(S);<br>
-    DEBUG(dbgs() << "MCSymbol: '" << S << "'"<br>
+    DEBUG(dbgs() << "MCSymbol: " << toString(WS.getType())<br>
+                 << " '" << S << "'"<br>
                  << " isDefined=" << S.isDefined()<br>
                  << " isExternal=" << S.isExternal()<br>
                  << " isTemporary=" << S.isTemporary()<br>
-                 << " isFunction=" << WS.isFunction()<br>
                  << " isWeak=" << WS.isWeak()<br>
                  << " isHidden=" << WS.isHidden()<br>
                  << " isVariable=" << WS.isVariable() << "\n");<br>
@@ -1284,7 +1307,7 @@ void WasmObjectWriter::writeObject(<wbr>MCAss<br>
         continue;<br>
<br>
       if (!WS.isDefined()) {<br>
-        DEBUG(dbgs() << "  -> segment index: -1");<br>
+        DEBUG(dbgs() << "  -> segment index: -1" << "\n");<br>
         continue;<br>
       }<br>
<br>
@@ -1306,8 +1329,8 @@ void WasmObjectWriter::writeObject(<wbr>MCAss<br>
           static_cast<uint32_t>(Layout.<wbr>getSymbolOffset(WS)),<br>
           static_cast<uint32_t>(Size)};<br>
       DataLocations[&WS] = Ref;<br>
-      DEBUG(dbgs() << "  -> segment index: " << Ref.Segment);<br>
-    } else {<br>
+      DEBUG(dbgs() << "  -> segment index: " << Ref.Segment << "\n");<br>
+    } else if (WS.isGlobal()) {<br>
       // A "true" Wasm global (currently just __stack_pointer)<br>
       if (WS.isDefined())<br>
         report_fatal_error("don't yet support defined globals");<br>
@@ -1315,6 +1338,8 @@ void WasmObjectWriter::writeObject(<wbr>MCAss<br>
       // An import; the index was assigned above<br>
       DEBUG(dbgs() << "  -> global index: " << WasmIndices.find(&WS)->second<br>
                    << "\n");<br>
+    } else {<br>
+      assert(WS.isSection());<br>
     }<br>
   }<br>
<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>