<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-AU link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US'>Yes – tried that and it gets the opcodes but then I am back to the issue of not knowing which opcodes are related to which architecture. My current train of though is finding something in the gcc install that works out generating the opcodes for an architecture and see if it can be used to reverse them.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US'>Paul<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif'> Peter St. John [mailto:peter.st.john@gmail.com] <br><b>Sent:</b> Friday, 6 May 2016 7:23 AM<br><b>To:</b> Paul McIntosh <paul.mcintosh@monash.edu><br><b>Cc:</b> Beowulf List <beowulf@beowulf.org><br><b>Subject:</b> Re: [Beowulf] Detecting binaries that are limited to an architecture?<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>You might run it through a decompiler; then you'd be looking at the assembler at least.<o:p></o:p></p><div><p class=MsoNormal>Peter<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>On Thu, May 5, 2016 at 4:51 PM, Paul McIntosh <<a href="mailto:paul.mcintosh@monash.edu" target="_blank">paul.mcintosh@monash.edu</a>> wrote:<o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><p class=MsoNormal>All,<br><br>I am wondering if there is an easy way to detect if a binary makes use of<br>opcodes which are not available on a specific architecture?<br><br>We have /usr/local mounted across nodes with some Intel Xeon X5650<br>(Westmere) and some E5-2670 (SandyBridge). Some code spits out "Illegal<br>Instruction" when run on the old nodes and it appears to be due to hitting<br>shared libraries compiled on the newer nodes. We are going to have a similar<br>situation on the newer clusters also.<br><br>I have been putting together a test suite for our software stack and would<br>like to add the ability to sanity check binaries for such errors. I thought<br>there would be easy way to do this by looking at the opcodes (objdump) and<br>comparing them to what the architecture provides. However this requires<br>knowing all the opcodes from Intel manuals for a chip.<br><br>I have be playing with opcode.sh<br>(<a href="https://gist.github.com/rindeal/72af275f05d44e10ebca" target="_blank">https://gist.github.com/rindeal/72af275f05d44e10ebca</a>) which looks promising<br>but will need a bit of manual work to get it to do what I want (and still<br>may be incomplete/inaccurate).<br><br>Has anyone done this? Know of a way to easily get a computer readable list<br>of opcodes per cpu (note /proc/cpuinfo flags just shows features not<br>opecodes)?<br><br>Cheers,<br><br>Paul<br>--<br>Dr Paul McIntosh<br>  Senior HPC Consultant, Technical Lead,<br>    Multi-modal Australian ScienceS Imaging and Visualisation Environment<br>(<a href="http://www.massive.org.au" target="_blank">www.massive.org.au</a>)<br>       Monash University, Ph: 9902 0439 Mob: 0434 524935<br><br><br><br>_______________________________________________<br>Beowulf mailing list, <a href="mailto:Beowulf@beowulf.org">Beowulf@beowulf.org</a> sponsored by Penguin Computing<br>To change your subscription (digest mode or unsubscribe) visit <a href="http://www.beowulf.org/mailman/listinfo/beowulf" target="_blank">http://www.beowulf.org/mailman/listinfo/beowulf</a><o:p></o:p></p></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></body></html>