Home | History | Annotate | Line # | Download | only in bfd
      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