bpf: Added linker support for R_BPF_64_NODYLD32.
This patch adds linker support to patch R_BPF_64_NODYLD32 relocations. The implementation was based on comments and code in LLVM, as the GNU toolchain does not uses this relocation type.
This commit is contained in:
parent
30a9c613df
commit
ad4e57ab11
@ -90,17 +90,20 @@
|
||||
|
||||
/* 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. */
|
||||
binaries generated by other tools.
|
||||
R_BPF_64_NODYLD32 should be fixed at linker like a R_BPF_64_ABS32.
|
||||
The difference to ABS32 is that LLVM execution engine does not resolve
|
||||
R_BPF_64_NODYLD32 relocations. */
|
||||
BPF_HOWTO (R_BPF_64_NODYLD32, /* type */
|
||||
0, /* rightshift */
|
||||
0, /* size */
|
||||
0, /* bitsize */
|
||||
4, /* size */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
complain_overflow_bitfield, /* 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 */
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
true) /* pcrel_offset */
|
||||
|
@ -276,6 +276,7 @@ bpf_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
case R_BPF_64_ABS64:
|
||||
case R_BPF_64_ABS32:
|
||||
case R_BPF_64_NODYLD32:
|
||||
{
|
||||
addend = bfd_get (howto->bitsize, input_bfd, where);
|
||||
relocation += addend;
|
||||
|
Loading…
x
Reference in New Issue
Block a user