2023-03-16 16:39:52 +08:00
|
|
|
/* This reloc does nothing. */
|
|
|
|
BPF_HOWTO (R_BPF_NONE, /* 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_NONE", /* name */
|
|
|
|
false, /* partial_inplace */
|
|
|
|
0, /* src_mask */
|
|
|
|
0, /* dst_mask */
|
|
|
|
false) /* pcrel_offset */
|
|
|
|
|
|
|
|
/* 64-immediate in LDDW instruction. */
|
|
|
|
BPF_HOWTO (R_BPF_64_64, /* type */
|
|
|
|
0, /* rightshift */
|
|
|
|
8, /* size */
|
|
|
|
64, /* bitsize */
|
|
|
|
false, /* pc_relative */
|
|
|
|
32, /* bitpos */
|
|
|
|
complain_overflow_signed, /* complain_on_overflow */
|
|
|
|
bpf_elf_generic_reloc, /* special_function */
|
|
|
|
"R_BPF_64_64", /* name */
|
|
|
|
true, /* partial_inplace */
|
|
|
|
MINUS_ONE, /* src_mask */
|
|
|
|
MINUS_ONE, /* dst_mask */
|
|
|
|
true) /* pcrel_offset */
|
|
|
|
|
|
|
|
/* 32-bit data. */
|
|
|
|
BPF_HOWTO (R_BPF_64_ABS32, /* type */
|
|
|
|
0, /* rightshift */
|
|
|
|
4, /* size */
|
|
|
|
32, /* bitsize */
|
|
|
|
false, /* pc_relative */
|
|
|
|
0, /* bitpos */
|
|
|
|
complain_overflow_bitfield, /* complain_on_overflow */
|
|
|
|
bpf_elf_generic_reloc, /* special_function */
|
|
|
|
"R_BPF_64_ABS32", /* name */
|
2024-01-11 07:05:36 +08:00
|
|
|
true, /* partial_inplace */
|
2023-03-16 16:39:52 +08:00
|
|
|
0xffffffff, /* src_mask */
|
|
|
|
0xffffffff, /* dst_mask */
|
|
|
|
true) /* pcrel_offset */
|
|
|
|
|
|
|
|
/* 64-bit data. */
|
|
|
|
BPF_HOWTO (R_BPF_64_ABS64, /* type */
|
|
|
|
0, /* rightshift */
|
|
|
|
8, /* size */
|
|
|
|
64, /* bitsize */
|
|
|
|
false, /* pc_relative */
|
|
|
|
0, /* bitpos */
|
|
|
|
complain_overflow_bitfield, /* complain_on_overflow */
|
|
|
|
bpf_elf_generic_reloc, /* special_function */
|
|
|
|
"R_BPF_64_ABS64", /* name */
|
2024-01-11 07:05:36 +08:00
|
|
|
true, /* partial_inplace */
|
2023-03-16 16:39:52 +08:00
|
|
|
0, /* src_mask */
|
|
|
|
MINUS_ONE, /* dst_mask */
|
|
|
|
true) /* pcrel_offset */
|
|
|
|
|
|
|
|
/* 32-bit PC-relative address in call instructions. */
|
|
|
|
BPF_HOWTO (R_BPF_64_32, /* type */
|
|
|
|
0, /* rightshift */
|
|
|
|
4, /* size */
|
|
|
|
32, /* bitsize */
|
|
|
|
true, /* pc_relative */
|
|
|
|
32, /* bitpos */
|
|
|
|
complain_overflow_signed, /* complain_on_overflow */
|
|
|
|
bpf_elf_generic_reloc, /* special_function */
|
|
|
|
"R_BPF_64_32", /* name */
|
|
|
|
true, /* partial_inplace */
|
|
|
|
0xffffffff, /* src_mask */
|
|
|
|
0xffffffff, /* dst_mask */
|
|
|
|
true) /* pcrel_offset */
|
2023-08-02 19:06:23 +08:00
|
|
|
|
|
|
|
/* 16-bit PC-relative address in load instructions. */
|
|
|
|
BPF_HOWTO (R_BPF_GNU_64_16, /* type */
|
|
|
|
0, /* rightshift */
|
|
|
|
2, /* size */
|
|
|
|
16, /* bitsize */
|
|
|
|
true, /* pc_relative */
|
|
|
|
16, /* bitpos */
|
|
|
|
complain_overflow_signed, /* complain_on_overflow */
|
|
|
|
bpf_elf_generic_reloc, /* special_function */
|
|
|
|
"R_BPF_GNU_64_16", /* name */
|
|
|
|
true, /* partial_inplace */
|
|
|
|
0xffff, /* src_mask */
|
|
|
|
0xffff, /* dst_mask */
|
|
|
|
true) /* pcrel_offset */
|
2023-10-30 20:17:53 +08:00
|
|
|
|
|
|
|
/* 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
|
2023-12-20 20:24:03 +08:00
|
|
|
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. */
|
2023-10-30 20:17:53 +08:00
|
|
|
BPF_HOWTO (R_BPF_64_NODYLD32, /* type */
|
|
|
|
0, /* rightshift */
|
2023-12-20 20:24:03 +08:00
|
|
|
4, /* size */
|
|
|
|
32, /* bitsize */
|
2023-10-30 20:17:53 +08:00
|
|
|
false, /* pc_relative */
|
|
|
|
0, /* bitpos */
|
2023-12-20 20:24:03 +08:00
|
|
|
complain_overflow_bitfield, /* complain_on_overflow */
|
2023-10-30 20:17:53 +08:00
|
|
|
bpf_elf_generic_reloc, /* special_function */
|
|
|
|
"R_BPF_64_NODYLD32", /* name */
|
2024-01-11 07:05:36 +08:00
|
|
|
true, /* partial_inplace */
|
2023-12-20 20:24:03 +08:00
|
|
|
0xffffffff, /* src_mask */
|
|
|
|
0xffffffff, /* dst_mask */
|
|
|
|
true) /* pcrel_offset */
|