[Beowulf] Detecting binaries that are limited to an architecture?
paul.mcintosh at monash.edu
Thu May 5 13:51:46 PDT 2016
I am wondering if there is an easy way to detect if a binary makes use of
opcodes which are not available on a specific architecture?
We have /usr/local mounted across nodes with some Intel Xeon X5650
(Westmere) and some E5-2670 (SandyBridge). Some code spits out "Illegal
Instruction" when run on the old nodes and it appears to be due to hitting
shared libraries compiled on the newer nodes. We are going to have a similar
situation on the newer clusters also.
I have been putting together a test suite for our software stack and would
like to add the ability to sanity check binaries for such errors. I thought
there would be easy way to do this by looking at the opcodes (objdump) and
comparing them to what the architecture provides. However this requires
knowing all the opcodes from Intel manuals for a chip.
I have be playing with opcode.sh
(https://gist.github.com/rindeal/72af275f05d44e10ebca) which looks promising
but will need a bit of manual work to get it to do what I want (and still
may be incomplete/inaccurate).
Has anyone done this? Know of a way to easily get a computer readable list
of opcodes per cpu (note /proc/cpuinfo flags just shows features not
Dr Paul McIntosh
Senior HPC Consultant, Technical Lead,
Multi-modal Australian ScienceS Imaging and Visualisation Environment
Monash University, Ph: 9902 0439 Mob: 0434 524935
More information about the Beowulf