]> code.ossystems Code Review - openembedded-core.git/commitdiff
insane: Recognise BPF as a valid EM_MACHINE type
authorKhem Raj <raj.khem@gmail.com>
Thu, 13 Sep 2018 04:12:09 +0000 (21:12 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 13 Sep 2018 15:28:26 +0000 (16:28 +0100)
BPF Linux ELF objects are generated with kernel-selftests with
>= 4.18 kernel and when clang is enabled which packages BPF objects
into packages, therefore recongnise this as a valid ELF target

Add a selftest for BPF

Do not flag BPF objects in target, since they pretty much will be ok for
most of kernels architectures we care do support BPF

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/insane.bbclass
meta/lib/oe/qa.py
meta/lib/oeqa/selftest/cases/oelib/elf.py

index 8c360c83e70f84b7b57d2b75f49cce27c833b22e..4644221bc6b0b1eb401473eefbb85e76b2e2c00a 100644 (file)
@@ -301,8 +301,10 @@ def package_qa_check_arch(path,name,d, elf, messages):
 
     # Check the architecture and endiannes of the binary
     is_32 = (("virtual/kernel" in provides) or bb.data.inherits_class("module", d)) and \
-            (target_os == "linux-gnux32" or target_os == "linux-muslx32" or target_os == "linux-gnu_ilp32" or re.match('mips64.*32', d.getVar('DEFAULTTUNE')))
-    if not ((machine == elf.machine()) or is_32):
+            (target_os == "linux-gnux32" or target_os == "linux-muslx32" or \
+            target_os == "linux-gnu_ilp32" or re.match('mips64.*32', d.getVar('DEFAULTTUNE')))
+    is_bpf = (oe.qa.elf_machine_to_string(elf.machine()) == "BPF")
+    if not ((machine == elf.machine()) or is_32 or is_bpf):
         package_qa_add_message(messages, "arch", "Architecture did not match (%s, expected %s) on %s" % \
                  (oe.qa.elf_machine_to_string(elf.machine()), oe.qa.elf_machine_to_string(machine), package_qa_clean_path(path,d)))
     elif not ((bits == elf.abiSize()) or is_32):
index 3231e60ceada2989c671f0e5162a2d57a7729233..59c72ce5807aa76faca0a6714edaf815058a8be9 100644 (file)
@@ -158,7 +158,8 @@ def elf_machine_to_string(machine):
             0x2A: "SuperH",
             0x32: "IA-64",
             0x3E: "x86-64",
-            0xB7: "AArch64"
+            0xB7: "AArch64",
+            0xF7: "BPF"
         }[machine]
     except:
         return "Unknown (%s)" % repr(machine)
index 74ee6a11cc79ba7ba52d7190bc1582cf11053e39..15c03f4609f484ab47cf8305155c71f7018ea4b3 100644 (file)
@@ -15,6 +15,7 @@ class TestElf(TestCase):
         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(0xF7), "BPF")
 
         self.assertEqual(oe.qa.elf_machine_to_string(0x00), "Unknown (0)")
         self.assertEqual(oe.qa.elf_machine_to_string(0xDEADBEEF), "Unknown (3735928559)")