  /* 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 */
	 true,			/* partial_inplace */
	 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 */
	 true,			/* partial_inplace */
	 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 */

  /* 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 */

  /* 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.
     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 */
	 4,			/* size */
	 32,			/* bitsize */
	 false,			/* pc_relative */
	 0,			/* bitpos */
	 complain_overflow_bitfield, /* complain_on_overflow */
	 bpf_elf_generic_reloc, /* special_function */
	 "R_BPF_64_NODYLD32",	/* name */
	 true,			/* partial_inplace */
	 0xffffffff,		/* src_mask */
	 0xffffffff,		/* dst_mask */
	 true)			/* pcrel_offset */
