From a4a51292bb5739e23dc1e16866139e00a2578c06 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 30 Oct 2023 12:17:53 +0000 Subject: [PATCH] Accept and ignore the R_BPF_64_NODLYD32 relocation. --- bfd/ChangeLog | 4 ++++ bfd/bpf-reloc.def | 17 +++++++++++++++++ include/ChangeLog | 5 +++++ include/elf/bpf.h | 4 ++-- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1b9d13add25..2b12eb35d27 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,7 @@ +2023-10-30 Nick Clifton + + * bpf-reloc.def (R_BPF_64_NODLD32): Add entry. + 2023-10-16 Nick Clifton PR 28910 diff --git a/bfd/bpf-reloc.def b/bfd/bpf-reloc.def index 31f761d291d..7e7497892fa 100644 --- a/bfd/bpf-reloc.def +++ b/bfd/bpf-reloc.def @@ -87,3 +87,20 @@ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ true) /* pcrel_offset */ + + /* R_BPF_64_NODYLD32 is not used by GNU tools - but it is generated by LLVM. + We provide an entry here so that tools like strip can safely handle BPF + binaries generated by other tools. */ + BPF_HOWTO (R_BPF_64_NODYLD32, /* type */ + 0, /* rightshift */ + 0, /* size */ + 0, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bpf_elf_generic_reloc, /* special_function */ + "R_BPF_64_NODYLD32", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false) /* pcrel_offset */ diff --git a/include/ChangeLog b/include/ChangeLog index 90ee73650c3..e0f0cb3edf4 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2023-10-30 Nick Clifton + + * elf/bpf.h (R_BPF_64_NODYLD32): Add a note that this reloc is + generated by other tools, eg LLVM. + 2023-09-28 Frederic Cambus * elf/common.h (PT_OPENBSD_NOBTCFI): Define. diff --git a/include/elf/bpf.h b/include/elf/bpf.h index e4d416290a7..1ad074f3d0e 100644 --- a/include/elf/bpf.h +++ b/include/elf/bpf.h @@ -30,8 +30,8 @@ START_RELOC_NUMBERS (elf_bpf_reloc_type) RELOC_NUMBER (R_BPF_64_64, 1) RELOC_NUMBER (R_BPF_64_ABS64, 2) RELOC_NUMBER (R_BPF_64_ABS32, 3) -/* R_BPF_64_NODYLD32 is not used by GNU tools. - * It is kept in this file to remind that the value is already taken. */ +/* R_BPF_64_NODYLD32 is not used by GNU tools - but it is generated by LLVM. + It is kept in this file to remind that the value is already taken. */ RELOC_NUMBER (R_BPF_64_NODYLD32, 4) RELOC_NUMBER (R_BPF_64_32, 10) RELOC_NUMBER (R_BPF_GNU_64_16, 256) -- 2.30.2