1 /* This reloc does nothing. */ 2 BPF_HOWTO (R_BPF_NONE, /* type */ 3 0, /* rightshift */ 4 0, /* size */ 5 0, /* bitsize */ 6 false, /* pc_relative */ 7 0, /* bitpos */ 8 complain_overflow_dont, /* complain_on_overflow */ 9 bpf_elf_generic_reloc, /* special_function */ 10 "R_BPF_NONE", /* name */ 11 false, /* partial_inplace */ 12 0, /* src_mask */ 13 0, /* dst_mask */ 14 false) /* pcrel_offset */ 15 16 /* 64-immediate in LDDW instruction. */ 17 BPF_HOWTO (R_BPF_64_64, /* type */ 18 0, /* rightshift */ 19 8, /* size */ 20 64, /* bitsize */ 21 false, /* pc_relative */ 22 32, /* bitpos */ 23 complain_overflow_signed, /* complain_on_overflow */ 24 bpf_elf_generic_reloc, /* special_function */ 25 "R_BPF_64_64", /* name */ 26 true, /* partial_inplace */ 27 MINUS_ONE, /* src_mask */ 28 MINUS_ONE, /* dst_mask */ 29 true) /* pcrel_offset */ 30 31 /* 32-bit data. */ 32 BPF_HOWTO (R_BPF_64_ABS32, /* type */ 33 0, /* rightshift */ 34 4, /* size */ 35 32, /* bitsize */ 36 false, /* pc_relative */ 37 0, /* bitpos */ 38 complain_overflow_bitfield, /* complain_on_overflow */ 39 bpf_elf_generic_reloc, /* special_function */ 40 "R_BPF_64_ABS32", /* name */ 41 true, /* partial_inplace */ 42 0xffffffff, /* src_mask */ 43 0xffffffff, /* dst_mask */ 44 true) /* pcrel_offset */ 45 46 /* 64-bit data. */ 47 BPF_HOWTO (R_BPF_64_ABS64, /* type */ 48 0, /* rightshift */ 49 8, /* size */ 50 64, /* bitsize */ 51 false, /* pc_relative */ 52 0, /* bitpos */ 53 complain_overflow_bitfield, /* complain_on_overflow */ 54 bpf_elf_generic_reloc, /* special_function */ 55 "R_BPF_64_ABS64", /* name */ 56 true, /* partial_inplace */ 57 0, /* src_mask */ 58 MINUS_ONE, /* dst_mask */ 59 true) /* pcrel_offset */ 60 61 /* 32-bit PC-relative address in call instructions. */ 62 BPF_HOWTO (R_BPF_64_32, /* type */ 63 0, /* rightshift */ 64 4, /* size */ 65 32, /* bitsize */ 66 true, /* pc_relative */ 67 32, /* bitpos */ 68 complain_overflow_signed, /* complain_on_overflow */ 69 bpf_elf_generic_reloc, /* special_function */ 70 "R_BPF_64_32", /* name */ 71 true, /* partial_inplace */ 72 0xffffffff, /* src_mask */ 73 0xffffffff, /* dst_mask */ 74 true) /* pcrel_offset */ 75 76 /* 16-bit PC-relative address in load instructions. */ 77 BPF_HOWTO (R_BPF_GNU_64_16, /* type */ 78 0, /* rightshift */ 79 2, /* size */ 80 16, /* bitsize */ 81 true, /* pc_relative */ 82 16, /* bitpos */ 83 complain_overflow_signed, /* complain_on_overflow */ 84 bpf_elf_generic_reloc, /* special_function */ 85 "R_BPF_GNU_64_16", /* name */ 86 true, /* partial_inplace */ 87 0xffff, /* src_mask */ 88 0xffff, /* dst_mask */ 89 true) /* pcrel_offset */ 90 91 /* R_BPF_64_NODYLD32 is not used by GNU tools - but it is generated by LLVM. 92 We provide an entry here so that tools like strip can safely handle BPF 93 binaries generated by other tools. 94 R_BPF_64_NODYLD32 should be fixed at linker like a R_BPF_64_ABS32. 95 The difference to ABS32 is that LLVM execution engine does not resolve 96 R_BPF_64_NODYLD32 relocations. */ 97 BPF_HOWTO (R_BPF_64_NODYLD32, /* type */ 98 0, /* rightshift */ 99 4, /* size */ 100 32, /* bitsize */ 101 false, /* pc_relative */ 102 0, /* bitpos */ 103 complain_overflow_bitfield, /* complain_on_overflow */ 104 bpf_elf_generic_reloc, /* special_function */ 105 "R_BPF_64_NODYLD32", /* name */ 106 true, /* partial_inplace */ 107 0xffffffff, /* src_mask */ 108 0xffffffff, /* dst_mask */ 109 true) /* pcrel_offset */ 110