aboutsummaryrefslogtreecommitdiff
path: root/binutils/readelf.c
diff options
context:
space:
mode:
authorJose E. Marchesi <jose.marchesi@oracle.com>2023-07-30 22:39:30 +0200
committerJose E. Marchesi <jose.marchesi@oracle.com>2023-07-30 22:39:30 +0200
commit1e18ffc9915bb9d3bbcd934d8b3e57ae9fe82f60 (patch)
tree92abdac23f41629b636c939591747e6fe5571ad9 /binutils/readelf.c
parent0346042938539324a5052cc09023c1fe426e8b31 (diff)
downloadbinutils-1e18ffc9915bb9d3bbcd934d8b3e57ae9fe82f60.zip
binutils-1e18ffc9915bb9d3bbcd934d8b3e57ae9fe82f60.tar.gz
binutils-1e18ffc9915bb9d3bbcd934d8b3e57ae9fe82f60.tar.bz2
bpf: include, bfd, opcodes: add EF_BPF_CPUVER ELF header flags
This patch adds support for EF_BPF_CPUVER bits in the ELF machine-dependent header flags. These bits encode the BPF CPU version for which the object file has been compiled for. The BPF assembler is updated so it annotates the object files it generates with these bits. The BPF disassembler is updated so it honors EF_BPF_CPUVER to use the appropriate ISA version if the user didn't specify an explicit ISA version in the command line. Note that a value of zero in EF_BPF_CPUVER is interpreted by the disassembler as "use the later supported version" (the BPF CPU versions start with v1.) The readelf utility is updated to pretty print EF_BPF_CPUVER when it prints out the ELF header: $ readelf -h a.out ELF Header: ... Flags: 0x4, CPU Version: 4 Tested in bpf-unknown-none. include/ChangeLog: 2023-07-30 Jose E. Marchesi <jose.marchesi@oracle.com> * elf/bpf.h (EF_BPF_CPUVER): Define. * opcode/bpf.h (BPF_XBPF): Change from 0xf to 0xff so it fits in EF_BPF_CPUVER. binutils/ChangeLog: 2023-07-30 Jose E. Marchesi <jose.marchesi@oracle.com> * readelf.c (get_machine_flags): Recognize and pretty print BPF machine flags. opcodes/ChangeLog: 2023-07-30 Jose E. Marchesi <jose.marchesi@oracle.com> * bpf-dis.c: Initialize asm_bpf_version to -1. (print_insn_bpf): Set BPF ISA version from the cpu version ELF header flags if no explicit version set in the command line. * disassemble.c (disassemble_init_for_target): Remove unused code. gas/ChangeLog: 2023-07-30 Jose E. Marchesi <jose.marchesi@oracle.com> * config/tc-bpf.h (elf_tc_final_processing): Define. * config/tc-bpf.c (bpf_elf_final_processing): New function.
Diffstat (limited to 'binutils/readelf.c')
-rw-r--r--binutils/readelf.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c
index bb488ef..4ecff4c 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -168,6 +168,7 @@
#include "elf/xtensa.h"
#include "elf/z80.h"
#include "elf/loongarch.h"
+#include "elf/bpf.h"
#include "getopt.h"
#include "libiberty.h"
@@ -4191,6 +4192,11 @@ get_machine_flags (Filedata * filedata, unsigned e_flags, unsigned e_machine)
strcat (buf, ", no delay");
break;
+ case EM_BPF:
+ sprintf (buf + strlen (buf), ", CPU Version: %u",
+ e_flags & EF_BPF_CPUVER);
+ break;
+
case EM_SPARCV9:
if (e_flags & EF_SPARC_32PLUS)
strcat (buf, ", v8+");