lib/oe/qa: add ELF machine to string function

Add a function (and test suite) to turn the ELF machine field (e_machine) into a
string, so we can tell the user "x86-64" instead of 0x3E.

(From OE-Core rev: 72336003741fb16a7ecdd6b753eae56310413ff7)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ross Burton 2016-10-11 13:19:43 +01:00 committed by Richard Purdie
parent 1de0cc9ed9
commit 84198174bf
2 changed files with 41 additions and 0 deletions

View File

@ -144,6 +144,26 @@ class ELFFile:
bb.note("%s %s %s failed: %s" % (objdump, cmd, self.name, e))
return ""
def elf_machine_to_string(machine):
"""
Return the name of a given ELF e_machine field or the hex value as a string
if it isn't recognised.
"""
try:
return {
0x02: "SPARC",
0x03: "x86",
0x08: "MIPS",
0x14: "PowerPC",
0x28: "ARM",
0x2A: "SuperH",
0x32: "IA-64",
0x3E: "x86-64",
0xB7: "AArch64"
}[machine]
except:
return "Unknown (%s)" % repr(machine)
if __name__ == "__main__":
import sys
elf = ELFFile(sys.argv[1])

View File

@ -0,0 +1,21 @@
import unittest
import oe.qa
class TestElf(unittest.TestCase):
def test_machine_name(self):
"""
Test elf_machine_to_string()
"""
self.assertEqual(oe.qa.elf_machine_to_string(0x02), "SPARC")
self.assertEqual(oe.qa.elf_machine_to_string(0x03), "x86")
self.assertEqual(oe.qa.elf_machine_to_string(0x08), "MIPS")
self.assertEqual(oe.qa.elf_machine_to_string(0x14), "PowerPC")
self.assertEqual(oe.qa.elf_machine_to_string(0x28), "ARM")
self.assertEqual(oe.qa.elf_machine_to_string(0x2A), "SuperH")
self.assertEqual(oe.qa.elf_machine_to_string(0x32), "IA-64")
self.assertEqual(oe.qa.elf_machine_to_string(0x3E), "x86-64")
self.assertEqual(oe.qa.elf_machine_to_string(0xB7), "AArch64")
self.assertEqual(oe.qa.elf_machine_to_string(0x00), "Unknown (0)")
self.assertEqual(oe.qa.elf_machine_to_string(0xDEADBEEF), "Unknown (3735928559)")
self.assertEqual(oe.qa.elf_machine_to_string("foobar"), "Unknown ('foobar')")