Bug 1724350
| Summary: | eu-readelf reports machine type is <unknown> on firmware blobs | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Jeff Bastian <jbastian> |
| Component: | elfutils | Assignee: | Mark Wielaard <mjw> |
| Status: | CLOSED ERRATA | QA Contact: | Martin Cermak <mcermak> |
| Severity: | low | Docs Contact: | |
| Priority: | low | ||
| Version: | 7.7 | CC: | mcermak, mjw |
| Target Milestone: | rc | ||
| Target Release: | 7.8 | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | elfutils-0.176-4.el7 | Doc Type: | No Doc Update |
| Doc Text: |
No Doc Update
|
Story Points: | --- |
| Clone Of: | Environment: | ||
| Last Closed: | 2020-03-31 19:08:15 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
Jeff Bastian
2019-06-26 20:42:52 UTC
Full list of 'unknown' machines:
~]# rpm -ql linux-firmware |
grep -i netronome |
while read f ; do
echo $f
eu-readelf -h $f 2>&1 | egrep -e '(Class|Machine|Data):'
done
/usr/lib/firmware/netronome
/usr/lib/firmware/netronome/bpf
/usr/lib/firmware/netronome/bpf/nic_AMDA0058-0011_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0058-0012_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0078-0011_1x100.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0081-0001_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0081-0001_4x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0096-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0097-0001_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0097-0001_4x10_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0097-0001_8x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0099-0001_1x10_1x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0099-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/bpf/nic_AMDA0099-0001_2x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower
/usr/lib/firmware/netronome/flower/nic_AMDA0058-0011_1x100.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0058-0011_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0058-0011_4x10_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0058-0011_8x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0058-0012_1x100.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0058-0012_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0058-0012_4x10_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0058-0012_8x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0058.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0078-0011_1x100.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0078-0011_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0078-0011_4x10_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0078-0011_8x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0078-0012_1x100.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0078-0012_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0078-0012_4x10_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0078-0012_8x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0081-0001_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0081-0001_4x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0081.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0096-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0096.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0097-0001_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0097-0001_4x10_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0097-0001_8x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0097.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0099-0001_1x10_1x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0099-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0099-0001_2x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/flower/nic_AMDA0099.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic
/usr/lib/firmware/netronome/nic-sriov
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0058-0011_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0058-0012_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0078-0011_1x100.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0081-0001_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0081-0001_4x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0096-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0097-0001_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0097-0001_4x10_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0097-0001_8x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0099-0001_1x10_1x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0099-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic-sriov/nic_AMDA0099-0001_2x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0058-0011_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0058-0012_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0078-0011_1x100.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0081-0001_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0081-0001_4x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0096-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0097-0001_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0097-0001_4x10_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0097-0001_8x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0099-0001_1x10_1x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0099-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic/nic_AMDA0099-0001_2x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0058-0011_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0058-0012_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0078-0011_1x100.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0081-0001_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0081-0001_4x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0096-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0097-0001_2x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0097-0001_4x10_1x40.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0097-0001_8x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0099-0001_1x10_1x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0099-0001_2x10.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/lib/firmware/netronome/nic_AMDA0099-0001_2x25.nffw
Class: ELF64
Data: 2's complement, little endian
Machine: <unknown>
/usr/share/doc/linux-firmware-20190429/LICENCE.Netronome
It certainly doesn't help that it only says "<unknown>". eu-readelf really should show the actual e_machine number. A quick hack showed it is 0x6000 those files. That is not a valid e_machine value (valid values are < 300) I suspect netronome didn't register the value, but just picked something high enough, so that it wouldn't clash with any official number. I can (should) certainly make eu-readelf print something like: Machine: <unknown>: 0x6000 Would that be helpful? Yes, adding the raw value would be helpful. Thanks! Would it also be useful to print a warning that valid values are < 300? Or would that be too verbose? (In reply to Jeff Bastian from comment #5) > Yes, adding the raw value would be helpful. Thanks! Turned out eu-readelf didn't even known about all "known" EM values. So the upstream patch turned out a bit larger than expected, but I did add a testcase to make sure that if new EM values are imported we must make sure to properly recognize them: https://sourceware.org/ml/elfutils-devel/2019-q2/msg00130.html > Would it also be useful to print a warning that valid values are < 300? Or > would that be too verbose? We cannot really. We can know if a value was "official" or not by checking EM_NUM (which is one past the last legal value). But there are some gaps and new number are added over time (then EM_NUM gets increased). Also there are some unofficial numbers in use. So if we warn then it might also mean that the eu-readelf/elfutils official number list is out of date. With the above patch I now get the following list (note that QUALCOMM DSP6 is now recognized): /usr/lib/firmware/netronome/flower/nic_AMDA0081-0001_1x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0081-0001_4x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0081.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0096-0001_2x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0096.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0097-0001_2x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0097-0001_4x10_1x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0097-0001_8x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0097.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0099-0001_1x10_1x25.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0099-0001_2x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0099-0001_2x25.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/flower/nic_AMDA0099.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0058-0011_2x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0058-0012_2x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0078-0011_1x100.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0081-0001_1x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0081-0001_4x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0096-0001_2x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0097-0001_2x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0097-0001_4x10_1x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0097-0001_8x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0099-0001_1x10_1x25.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0099-0001_2x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic/nic_AMDA0099-0001_2x25.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0058-0011_2x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0058-0012_2x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0078-0011_1x100.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0081-0001_1x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0081-0001_4x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0096-0001_2x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0097-0001_2x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0097-0001_4x10_1x40.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0097-0001_8x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0099-0001_1x10_1x25.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0099-0001_2x10.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/netronome/nic_AMDA0099-0001_2x25.nffw Class: ELF64 Data: 2's complement, little endian Machine: <unknown>: 0x6000 /usr/lib/firmware/qcom/a530_zap.b00 Class: ELF32 Data: 2's complement, little endian Machine: QUALCOMM DSP6 /usr/lib/firmware/qcom/a530_zap.mdt Class: ELF32 Data: 2's complement, little endian Machine: QUALCOMM DSP6 /usr/lib/firmware/qcom/venus-1.8/venus.b00 Class: ELF32 Data: 2's complement, little endian Machine: ARM /usr/lib/firmware/qcom/venus-1.8/venus.mdt Class: ELF32 Data: 2's complement, little endian Machine: ARM /usr/lib/firmware/qcom/venus-4.2/venus.b00 Class: ELF32 Data: 2's complement, little endian Machine: ARM /usr/lib/firmware/qcom/venus-4.2/venus.mdt Class: ELF32 Data: 2's complement, little endian Machine: ARM /usr/lib/firmware/qcom/venus-5.2/venus.b00 Class: ELF32 Data: 2's complement, little endian Machine: ARM /usr/lib/firmware/qcom/venus-5.2/venus.mbn Class: ELF32 Data: 2's complement, little endian Machine: ARM /usr/lib/firmware/qcom/venus-5.2/venus.mdt Class: ELF32 Data: 2's complement, little endian Machine: ARM Reproduced with elfutils-0.172-2.el7, verified with elfutils-0.176-4.el7. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2020:0987 |