Lines Matching refs:howto
41 @* howto manager::
58 typedef arelent, howto manager, Relocations, Relocations
113 . reloc_howto_type *howto;
152 the howto. For example, on the 68k the code:
234 o <<howto>>
236 The <<howto>> field can be imagined as a
242 but it would be possible to create each howto field on demand.
374 The HOWTO Macro
377 The HOWTO macro fills in a reloc_howto_type (a typedef for
382 .#define HOWTO(type, right, size, bits, pcrel, left, ovf, func, name, \
389 This is used to fill in an empty howto entry in an array.
392 . HOWTO ((C), 0, 1, 0, false, 0, complain_overflow_dont, NULL, \
396 .bfd_get_reloc_size (reloc_howto_type *howto)
398 . return howto->size;
507 (reloc_howto_type *howto,
513 Returns TRUE if the reloc described by @var{HOWTO} can be
518 /* HOWTO describes a relocation, at offset OCTET. Return whether the
522 bfd_reloc_offset_in_range (reloc_howto_type *howto,
528 bfd_size_type reloc_size = bfd_get_reloc_size (howto);
537 integer (bfd_vma). The number of bytes read is given by the HOWTO. */
540 read_reloc (bfd *abfd, bfd_byte *data, reloc_howto_type *howto)
542 switch (bfd_get_reloc_size (howto))
571 bytes written is given by the HOWTO. */
574 write_reloc (bfd *abfd, bfd_vma val, bfd_byte *data, reloc_howto_type *howto)
576 switch (bfd_get_reloc_size (howto))
609 HOWTO. */
612 apply_reloc (bfd *abfd, bfd_byte *data, reloc_howto_type *howto,
615 bfd_vma val = read_reloc (abfd, data, howto);
617 if (howto->negate)
620 val = ((val & ~howto->dst_mask)
621 | (((val & howto->src_mask) + relocation) & howto->dst_mask));
623 write_reloc (abfd, val, data, howto);
669 reloc_howto_type *howto = reloc_entry->howto;
686 if (howto && howto->special_function)
694 cont = howto->special_function (abfd, reloc_entry, symbol, data,
709 if (howto == NULL)
714 if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
729 if ((output_bfd && ! howto->partial_inplace)
750 if (howto->pc_relative)
783 if (howto->pcrel_offset)
789 if (! howto->partial_inplace)
897 if (howto->complain_on_overflow != complain_overflow_dont
899 flag = bfd_check_overflow (howto->complain_on_overflow,
900 howto->bitsize,
901 howto->rightshift,
932 relocation >>= (bfd_vma) howto->rightshift;
935 relocation <<= (bfd_vma) howto->bitpos;
971 apply_reloc (abfd, data, howto, relocation);
1009 reloc_howto_type *howto = reloc_entry->howto;
1019 if (howto && howto->special_function)
1027 cont = howto->special_function (abfd, reloc_entry, symbol,
1036 if (howto->install_addend)
1055 if (! howto->partial_inplace)
1073 if (howto->pc_relative)
1077 if (howto->pcrel_offset && howto->partial_inplace)
1082 if (!howto->partial_inplace)
1088 if (!howto->install_addend
1103 if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
1111 if (howto->complain_on_overflow != complain_overflow_dont)
1112 flag = bfd_check_overflow (howto->complain_on_overflow,
1113 howto->bitsize,
1114 howto->rightshift,
1118 relocation >>= (bfd_vma) howto->rightshift;
1121 relocation <<= (bfd_vma) howto->bitpos;
1124 apply_reloc (abfd, data, howto, relocation);
1138 FIXME: This routine ignores any special_function in the HOWTO,
1142 HOWTO is the reloc howto information.
1151 _bfd_final_link_relocate (reloc_howto_type *howto,
1164 if (!bfd_reloc_offset_in_range (howto, input_bfd, input_section, octets))
1183 if (howto->pc_relative)
1187 if (howto->pcrel_offset)
1191 return _bfd_relocate_contents (howto, input_bfd, relocation,
1195 /* Relocate a given location using a given value and howto. */
1198 _bfd_relocate_contents (reloc_howto_type *howto,
1205 unsigned int rightshift = howto->rightshift;
1206 unsigned int bitpos = howto->bitpos;
1208 if (howto->negate)
1212 x = read_reloc (input_bfd, location, howto);
1219 if (howto->complain_on_overflow != complain_overflow_dont)
1228 fieldmask = N_ONES (howto->bitsize);
1233 b = (x & howto->src_mask & addrmask) >> bitpos;
1236 switch (howto->complain_on_overflow)
1261 ss = ((~howto->src_mask) >> 1) & howto->src_mask;
1314 x = ((x & ~howto->dst_mask)
1315 | (((x & howto->src_mask) + relocation) & howto->dst_mask));
1318 write_reloc (input_bfd, x, location, howto);
1322 /* Clear a given location using a given howto, by applying a fixed relocation
1328 _bfd_clear_contents (reloc_howto_type *howto,
1337 if (!bfd_reloc_offset_in_range (howto, input_bfd, input_section, off))
1342 x = read_reloc (input_bfd, location, howto);
1345 x &= ~howto->dst_mask;
1350 && (howto->dst_mask & 1) != 0)
1354 write_reloc (input_bfd, x, location, howto);
1361 howto manager, , typedef arelent, Relocations
1364 The howto manager
1380 return a howto pointer.
1383 enumerator value; you can't get a howto pointer from a random set
6649 BFD_RELOC_N and they were added to assist the indexing of the howto
6659 and they were added to assist the indexing of the howto table.
8072 Return a pointer to a howto structure which, when
8090 HOWTO (0, 00, 4, 32, false, 0, complain_overflow_dont, 0, "VRT32", false, 0xffffffff, 0xffffffff, true);
8307 = HOWTO (0, 0, 0, 0, false, 0, complain_overflow_dont, NULL,
8312 _bfd_clear_contents ((*parent)->howto, input_bfd,
8316 (*parent)->howto = &none_howto;
8481 reloc_entry->howto->name, reloc_entry->addend,