From aca4efc7a4fc42bac5b7b029c52cbb2a2bc2574b Mon Sep 17 00:00:00 2001 From: "Jose E. Marchesi" Date: Thu, 23 May 2019 19:06:17 +0200 Subject: [PATCH] binutils: add support for eBPF This patch adds support for ELF64 eBPF to readelf, and fixes a `nm' test to run properly in bpf-*-* targets. binutils/ChangeLog: 2019-05-23 Jose E. Marchesi * readelf.c: Include elf/bpf.h. (guess_is_rela): Hanle EM_BPF. (dump_relocations): Likewise. (is_32bit_abs_reloc): Likewise. * testsuite/binutils-all/nm.exp: Add bpf-*-* to the list of ELF targets. --- binutils/ChangeLog | 9 +++++++++ binutils/readelf.c | 8 ++++++++ binutils/testsuite/binutils-all/nm.exp | 3 ++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 9905cf6a905..046d6127191 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,12 @@ +2019-05-23 Jose E. Marchesi + + * readelf.c: Include elf/bpf.h. + (guess_is_rela): Hanle EM_BPF. + (dump_relocations): Likewise. + (is_32bit_abs_reloc): Likewise. + * testsuite/binutils-all/nm.exp: Add bpf-*-* to the list of + ELF targets. + 2019-05-21 Tamar Christina * dwarf.c (dwarf_regnames_aarch64): Add SVE registers. diff --git a/binutils/readelf.c b/binutils/readelf.c index c31a5c1266b..9d2810437e4 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -102,6 +102,7 @@ #include "elf/d10v.h" #include "elf/d30v.h" #include "elf/dlx.h" +#include "elf/bpf.h" #include "elf/epiphany.h" #include "elf/fr30.h" #include "elf/frv.h" @@ -781,6 +782,7 @@ guess_is_rela (unsigned int e_machine) case EM_SCORE: case EM_XGATE: case EM_NFP: + case EM_BPF: return FALSE; /* Targets that use RELA relocations. */ @@ -1482,6 +1484,10 @@ dump_relocations (Filedata * filedata, rtype = elf_visium_reloc_type (type); break; + case EM_BPF: + rtype = elf_bpf_reloc_type (type); + break; + case EM_ADAPTEVA_EPIPHANY: rtype = elf_epiphany_reloc_type (type); break; @@ -12410,6 +12416,8 @@ is_32bit_abs_reloc (Filedata * filedata, unsigned int reloc_type) case EM_AARCH64: return (reloc_type == 258 || reloc_type == 1); /* R_AARCH64_ABS32 || R_AARCH64_P32_ABS32 */ + case EM_BPF: + return reloc_type == 11; /* R_BPF_DATA_32 */ case EM_ADAPTEVA_EPIPHANY: return reloc_type == 3; case EM_ALPHA: diff --git a/binutils/testsuite/binutils-all/nm.exp b/binutils/testsuite/binutils-all/nm.exp index 64a969e1911..5dbdcbfd354 100644 --- a/binutils/testsuite/binutils-all/nm.exp +++ b/binutils/testsuite/binutils-all/nm.exp @@ -160,7 +160,8 @@ if { [is_elf_format] || [istarget *-*-uclinux*] || [istarget ia64-*-*vms*] || [istarget *-*-vxworks*] - || [istarget wasm32-*-*] } { + || [istarget wasm32-*-*] + || [istarget bpf-*-*]} { set nm_1_src "nm-elf-1.s" } else { set nm_1_src "nm-1.s"