diff options
author | Jose E. Marchesi <jose.marchesi@oracle.com> | 2019-05-23 19:04:36 +0200 |
---|---|---|
committer | Jose E. Marchesi <jose.marchesi@oracle.com> | 2019-05-23 19:33:56 +0200 |
commit | 79472b45328232b083e897a511d4160a6dde0463 (patch) | |
tree | ff50820cf858918ae1115a0c6e6829633de3fffc /opcodes/disassemble.c | |
parent | ea195bb04cc5c964126aeff0f87d7161a03ca926 (diff) | |
download | fsf-binutils-gdb-79472b45328232b083e897a511d4160a6dde0463.zip fsf-binutils-gdb-79472b45328232b083e897a511d4160a6dde0463.tar.gz fsf-binutils-gdb-79472b45328232b083e897a511d4160a6dde0463.tar.bz2 |
opcodes: add support for eBPF
This patch adds support for the Linux kernel eBPF architecture to the
opcodes. The port is based on CGEN.
opcodes/ChangeLog:
2019-05-23 Jose E. Marchesi <jose.marchesi@oracle.com>
* configure.ac (SHARED_DEPENDENCIES): Add case for bfd_bpf_arch.
* configure: Regenerated.
* Makefile.am: Add rules for the files generated from cpu/bpf.cpu
and cpu/bpf.opc.
(HFILES): Add bpf-desc.h and bpf-opc.h.
(TARGET_LIBOPCODES_CFILES): Add bpf-asm.c, bpf-desc.c, bpf-dis.c,
bpf-ibld.c and bpf-opc.c.
(BPF_DEPS): Define.
* Makefile.in: Regenerated.
* disassemble.c (ARCH_bpf): Define.
(disassembler): Add case for bfd_arch_bpf.
(disassemble_init_for_target): Likewise.
(enum epbf_isa_attr): Define.
* disassemble.h: extern print_insn_bpf.
* bpf-asm.c: Generated.
* bpf-opc.h: Likewise.
* bpf-opc.c: Likewise.
* bpf-ibld.c: Likewise.
* bpf-dis.c: Likewise.
* bpf-desc.h: Likewise.
* bpf-desc.c: Likewise.
Diffstat (limited to 'opcodes/disassemble.c')
-rw-r--r-- | opcodes/disassemble.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/opcodes/disassemble.c b/opcodes/disassemble.c index 1ef8b8f..aef2fd8 100644 --- a/opcodes/disassemble.c +++ b/opcodes/disassemble.c @@ -37,6 +37,7 @@ #define ARCH_d10v #define ARCH_d30v #define ARCH_dlx +#define ARCH_bpf #define ARCH_epiphany #define ARCH_fr30 #define ARCH_frv @@ -106,6 +107,23 @@ #include "m32c-desc.h" #endif +#ifdef ARCH_bpf +/* XXX this should be including bpf-desc.h instead of this hackery, + but at the moment it is not possible to include several CGEN + generated *-desc.h files simultaneously. To be fixed in + CGEN... */ + +# ifdef ARCH_m32c +enum epbf_isa_attr +{ + ISA_EBPFLE, ISA_EBPFBE, ISA_EBPFMAX +}; +# else +# include "bpf-desc.h" +# define ISA_EBPFMAX ISA_MAX +# endif +#endif /* ARCH_bpf */ + disassembler_ftype disassembler (enum bfd_architecture a, bfd_boolean big ATTRIBUTE_UNUSED, @@ -224,6 +242,11 @@ disassembler (enum bfd_architecture a, disassemble = print_insn_ip2k; break; #endif +#ifdef ARCH_bpf + case bfd_arch_bpf: + disassemble = print_insn_bpf; + break; +#endif #ifdef ARCH_epiphany case bfd_arch_epiphany: disassemble = print_insn_epiphany; @@ -641,6 +664,18 @@ disassemble_init_for_target (struct disassemble_info * info) } break; #endif +#ifdef ARCH_bpf + case bfd_arch_bpf: + if (!info->insn_sets) + { + info->insn_sets = cgen_bitset_create (ISA_EBPFMAX); + if (info->endian == BFD_ENDIAN_BIG) + cgen_bitset_set (info->insn_sets, ISA_EBPFBE); + else + cgen_bitset_set (info->insn_sets, ISA_EBPFLE); + } + break; +#endif #ifdef ARCH_pru case bfd_arch_pru: info->disassembler_needs_relocs = TRUE; |