<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Well, <div><br></div><div>This patch gets it to build and it is now running check</div><div><br></div><div><div>Index: tools/llvm-objdump/llvm-objdump.cpp</div><div>===================================================================</div><div>--- tools/llvm-objdump/llvm-objdump.cpp<span class="Apple-tab-span" style="white-space:pre">  </span>(revision 142319)</div><div>+++ tools/llvm-objdump/llvm-objdump.cpp<span class="Apple-tab-span" style="white-space:pre">     </span>(working copy)</div><div>@@ -430,11 +430,11 @@</div><div>           return;</div><div>         outs() << "AUX "</div><div>                << format("scnlen 0x%x nreloc %d nlnno %d checksum 0x%x "</div><div>-                         , asd->Length</div><div>-                         , asd->NumberOfRelocations</div><div>-                         , asd->NumberOfLinenumbers</div><div>-                         , asd->CheckSum)</div><div>-               << format("assoc %d comdat %d\n", asd->Number, asd->Selection);</div><div>+                         , uint32_t(asd->Length)</div><div>+                         , uint16_t(asd->NumberOfRelocations)</div><div>+                         , uint16_t(asd->NumberOfLinenumbers)</div><div>+                         , uint32_t(asd->CheckSum))</div><div>+               << format("assoc %d comdat %d\n", uint16_t(asd->Number), uint8_t(asd->Selection));</div><div>       } else {</div><div>         outs() << "AUX Unknown\n";</div><div>       }</div><div>@@ -444,11 +444,11 @@</div><div>       if (error(coff->getSymbolName(symbol, name))) return;</div><div>       outs() << "[" << format("%2d", i) << "]"</div><div>              << "(sec " << format("%2d", int16_t(symbol->SectionNumber)) << ")"</div><div>-             << "(fl 0x" << format("%02x", symbol->Type.BaseType) << ")"</div><div>-             << "(ty " << format("%3x", symbol->Type) << ")"</div><div>-             << "(scl " << format("%3x", symbol->StorageClass) << ") "</div><div>+             << "(fl 0x" << format("%02x", uint8_t(symbol->Type.BaseType)) << ")"</div><div>+             << "(ty " << format("%3x", uint8_t(symbol->Type.ComplexType)) << ")"</div><div>+             << "(scl " << format("%3x", uint8_t(symbol->StorageClass)) << ") "</div><div>              << "(nx " << unsigned(symbol->NumberOfAuxSymbols) << ") "</div><div>-             << "0x" << format("%08x", symbol->Value) << " "</div><div>+             << "0x" << format("%08x", uint32_t(symbol->Value)) << " "</div><div>              << name << "\n";</div><div>       aux_count = symbol->NumberOfAuxSymbols;</div><div>     }</div><div>Index: utils/unittest/CMakeLists.txt</div><div>===================================================================</div><div>--- utils/unittest/CMakeLists.txt<span class="Apple-tab-span" style="white-space:pre">        </span>(revision 142319)</div><div>+++ utils/unittest/CMakeLists.txt<span class="Apple-tab-span" style="white-space:pre">   </span>(working copy)</div><div>@@ -40,3 +40,11 @@</div><div> add_llvm_library(gtest_main</div><div>   UnitTestMain/TestMain.cpp</div><div>   )</div><div>+</div><div>+add_llvm_library_dependencies(gtest</div><div>+  LLVMSupport</div><div>+  )</div><div>+</div><div>+add_llvm_library_dependencies(gtest_main</div><div>+  gtest</div><div>+  )</div><div>Index: lib/ExecutionEngine/JIT/CMakeLists.txt</div><div>===================================================================</div><div>--- lib/ExecutionEngine/JIT/CMakeLists.txt<span class="Apple-tab-span" style="white-space:pre">   </span>(revision 142319)</div><div>+++ lib/ExecutionEngine/JIT/CMakeLists.txt<span class="Apple-tab-span" style="white-space:pre">  </span>(working copy)</div><div>@@ -17,4 +17,5 @@</div><div>   LLVMRuntimeDyld</div><div>   LLVMSupport</div><div>   LLVMTarget</div><div>+  LLVMCodeGen</div><div>   )</div><div><br></div><div>But I really don't like that "fix".  Makes the code difficult to read.   If anyone groks the Endian templates and know what should be/could be fixed, that'd be helpful.</div><div><br></div><div>arxan_bellini may be useful after all.</div><div><br></div><div>Cheers,</div><div><br></div><div apple-content-edited="true">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Joe Abbey<br>Software Architect<br>Arxan Technologies, Inc.<br>1305 Cumberland Ave, Ste 215<br>West Lafayette, IN 47906<br><a href="mailto:jabbey@arxan.com">jabbey@arxan.com</a><br>www.arxan.com</div>
</div>
<br><div><div>On Oct 18, 2011, at 7:25 PM, Joe Abbey wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I'm so close to having LLVM build on PowerPC.  If there's any PowerPC experts, help?<div><br></div><div>Lines like this:</div><div><br></div><div><div>      outs() << "[" << format("%2d", i) << "]"</div><div>             << "(sec " << format("%2d", int16_t(symbol->SectionNumber)) << ")"</div><div>             << "(fl 0x" << format("%02x", symbol->Type.BaseType) << ")"</div><div>             << "(ty " << format("%3x", symbol->Type.ComplexType) << ")"</div><div>             << "(scl " << format("%3x", symbol->StorageClass) << ") "</div><div>             << "(nx " << unsigned(symbol->NumberOfAuxSymbols) << ") "</div><div>             << "0x" << format("%08x", symbol->Value) << " "</div><div>             << name << "\n";</div><div><br></div><div>Are trying to call the format function with </div><div><br></div><div><div>struct coff_symbol {</div><div>  struct StringTableOffset {</div><div>    support::ulittle32_t Zeroes;</div><div>    support::ulittle32_t Offset;</div><div>  };</div><div><br></div><div>  union {</div><div>    char ShortName[8];</div><div>    StringTableOffset Offset;</div><div>  } Name;</div><div><br></div><div>  support::ulittle32_t Value;</div><div>  support::little16_t SectionNumber;</div><div><br></div><div>  struct {</div><div>    support::ulittle8_t BaseType;</div><div>    support::ulittle8_t ComplexType;</div><div>  } Type;</div><div><br></div><div>  support::ulittle8_t  StorageClass;</div><div>  support::ulittle8_t  NumberOfAuxSymbols;</div><div>};</div></div><div><br></div><div>and on PowerPC it generates errors like:</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; ">/Users/jabbey/src/llvm/include/llvm/Support/Format.h: In member function 'int llvm::format_object1<T>::snprint(char*, unsigned int) const [with T = llvm::support::detail::packed_endian_specific_integral<unsigned int, little, unaligned>]':</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; ">/Users/jabbey/src/llvm/tools/llvm-objdump/llvm-objdump.cpp:622:   instantiated from here</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; ">/Users/jabbey/src/llvm/include/llvm/Support/Format.h:88: warning: cannot pass objects of non-POD type 'const struct llvm::support::detail::packed_endian_specific_integral<unsigned int, little, unaligned>' through '...'; call will abort at runtime</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; ">/Users/jabbey/src/llvm/include/llvm/Support/Format.h: In member function 'int llvm::format_object2<T1, T2>::snprint(char*, unsigned int) const [with T1 = llvm::support::detail::packed_endian_specific_integral<unsigned char, little, unaligned>, T2 = llvm::support::detail::packed_endian_specific_integral<unsigned char, little, unaligned>]':</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; ">/Users/jabbey/src/llvm/tools/llvm-objdump/llvm-objdump.cpp:622:   instantiated from here</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; ">/Users/jabbey/src/llvm/include/llvm/Support/Format.h:106: warning: cannot pass objects of non-POD type 'const struct llvm::support::detail::packed_endian_specific_integral<unsigned char, little, unaligned>' through '...'; call will abort at runtime</div></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; ">Can I just cast the value, or would the correct fix be in something like include/llvm/Support/Endian.h?</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; ">Thanks much!</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Calibri; "><br></div><div><div apple-content-edited="true">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Joe Abbey<br>Software Architect<br>Arxan Technologies, Inc.<br>1305 Cumberland Ave, Ste 215<br>West Lafayette, IN 47906<br><a href="mailto:jabbey@arxan.com">jabbey@arxan.com</a><br><a href="http://www.arxan.com">www.arxan.com</a></div>
</div>

<br></div></div></div></blockquote></div><br></div></body></html>