<div dir="ltr">I believe this is fixed in r220952.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 26, 2014 at 4:12 PM, Ted Woodward <span dir="ltr"><<a href="mailto:ted.woodward@codeaurora.org" target="_blank">ted.woodward@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The section is .text, so I assume it’s got IMAGE_SCM_CNT_CODE set. The problem is the symbol is marked (read & execute), but the test is (read & !write), so the symbol gets marked as ST_Data instead of ST_Other.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> David Majnemer [mailto:<a href="mailto:david.majnemer@gmail.com" target="_blank">david.majnemer@gmail.com</a>] <br><b>Sent:</b> Friday, August 22, 2014 5:44 PM<br><b>To:</b> Ted Woodward<br><b>Cc:</b> LLVM Developers Mailing List<br><b>Subject:</b> Re: [LLVMdev] possible bug in COFFObjectFile::getSymbolType()<u></u><u></u></span></p><div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">COFF sections also contain stuff like IMAGE_SCN_CNT_CODE and IMAGE_SCN_CNT_INITIALIZED_DATA.  Are either of those set on the section in question?<u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">It may make more sense to try to key off of those section characteristics as well.<u></u><u></u></p></div></div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p><div><p class="MsoNormal">On Fri, Aug 22, 2014 at 9:55 AM, Ted Woodward <<a href="mailto:ted.woodward@codeaurora.org" target="_blank">ted.woodward@codeaurora.org</a>> wrote:<u></u><u></u></p><div><div><p class="MsoNormal">I’m working on adding data detection to llvm-objdump, so it prints out raw data for symbols with type SymbolRef::ST_Data instead of disassembling them. This causes llvm/test/MC/ARM/Windows/mov32t-range.s to fail, because the symbol “truncation” comes back as SymbolRef::ST_Data, and the code gets dumped as bytes instead of disassembled.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">I traced the problem back to COFFObjectFile::getSymbolType() in llvm/lib/Object/COFFObjectFile.cpp :<u></u><u></u></p><p class="MsoNormal">    if (Characteristics & COFF::IMAGE_SCN_MEM_READ &&<u></u><u></u></p><p class="MsoNormal">        ~Characteristics & COFF::IMAGE_SCN_MEM_WRITE) // Read only.<u></u><u></u></p><p class="MsoNormal">      Result = SymbolRef::ST_Data;<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">I think it should also check for ~Characteristics & COFF::IMAGE_SCN_MEM_EXECUTE. The symbol, in this case, is READ, EXECUTE, !WRITE.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">    if (Characteristics & COFF::IMAGE_SCN_MEM_READ &&<u></u><u></u></p><p class="MsoNormal">        ~Characteristics & COFF::IMAGE_SCN_MEM_WRITE &&<u></u><u></u></p><p class="MsoNormal">        ~Characteristics & COFF::IMAGE_SCN_MEM_EXECUTE) // Read only, not execute.<u></u><u></u></p><p class="MsoNormal">      Result = SymbolRef::ST_Data;<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">I’m not very familiar with COFF; what ramifications would this change have?<u></u><u></u></p><p class="MsoNormal"><span style="color:#888888"> <u></u><u></u></span></p><p class="MsoNormal"><span style="color:#888888">Ted<u></u><u></u></span></p><p class="MsoNormal"><span style="color:#888888"> <u></u><u></u></span></p></div></div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><u></u><u></u></p></div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div></div></blockquote></div><br></div>