binutils: add support for eBPF
authorJose E. Marchesi <jose.marchesi@oracle.com>
Thu, 23 May 2019 17:06:17 +0000 (19:06 +0200)
committerJose E. Marchesi <jose.marchesi@oracle.com>
Thu, 23 May 2019 17:34:21 +0000 (19:34 +0200)
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  <jose.marchesi@oracle.com>

* 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
binutils/readelf.c
binutils/testsuite/binutils-all/nm.exp

index 9905cf6a905cfa6ae667504e87378ec63d85b195..046d61271911e795683c7462138bd4b17484472f 100644 (file)
@@ -1,3 +1,12 @@
+2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+       * 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  <tamar.christina@arm.com>
 
        * dwarf.c (dwarf_regnames_aarch64): Add SVE registers.
index c31a5c1266b7bb62a485895b01b49e1f832ade35..9d2810437e444fa58aced109561c52483269d262 100644 (file)
 #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:
index 64a969e19116e91ae377b82606f7852e09e5cd1e..5dbdcbfd35485744c6d278c3bad58755fb725c68 100644 (file)
@@ -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"