Delete NEWHOWTO and tidy some uses of reloc_howto_struct
authorAlan Modra <amodra@gmail.com>
Mon, 20 Aug 2018 10:06:05 +0000 (19:36 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 21 Aug 2018 05:29:53 +0000 (14:59 +0930)
NEWHOWTO was promised way back in 1991 (git commit e5683622186).
I doubt it's ever going to be implemented.  This patch removes it,
and tidies some reloc howtos.  I was going to make some changes to
reloc_howto_struct, so I think it's important that all relocs howtos
are initialized with HOWTO.

* reloc.c (HOWTO): Revise comment.
(NEWHOWTO, HOWTO_PREPARE): Delete.
* coff-arm.c (coff_arm_reloc_type_lookup): Replace const struc
reloc_howto_struct with reloc_howto_type.
* ns32knetbsd.c (MY_bfd_reloc_type_lookup): Likewise.
* vms-alpha.c (alpha_vms_bfd_reloc_type_lookup): Likewise.
* elf-hppa.h (HOW): Define.
(elf_hppa_howto_table): Use it to simplify this table, correcting
name of R_PARISC_LTOFF16WF, R_PARISC_LTOFF_FPTR64, and
R_PARISC_LTOFF_FPTR16DF.
* elf32-mep.c (MEPREL): Use HOWTO.
* bfd-in2.h: Regenerate.

bfd/ChangeLog
bfd/bfd-in2.h
bfd/coff-arm.c
bfd/elf-hppa.h
bfd/elf32-mep.c
bfd/ns32knetbsd.c
bfd/reloc.c
bfd/vms-alpha.c

index 2af1fc04e9ad20b546dfe45d059d06bc37c2970d..f6dfda92b063a443f2e12ab99edca81500bffa09 100644 (file)
@@ -1,3 +1,18 @@
+2018-08-21  Alan Modra  <amodra@gmail.com>
+
+       * reloc.c (HOWTO): Revise comment.
+       (NEWHOWTO, HOWTO_PREPARE): Delete.
+       * coff-arm.c (coff_arm_reloc_type_lookup): Replace const struc
+       reloc_howto_struct with reloc_howto_type.
+       * ns32knetbsd.c (MY_bfd_reloc_type_lookup): Likewise.
+       * vms-alpha.c (alpha_vms_bfd_reloc_type_lookup): Likewise.
+       * elf-hppa.h (HOW): Define.
+       (elf_hppa_howto_table): Use it to simplify this table, correcting
+       name of R_PARISC_LTOFF16WF, R_PARISC_LTOFF_FPTR64, and
+       R_PARISC_LTOFF_FPTR16DF.
+       * elf32-mep.c (MEPREL): Use HOWTO.
+       * bfd-in2.h: Regenerate.
+
 2018-08-20  Alan Modra  <amodra@gmail.com>
 
        * mmo.c (valid_mmo_symbol_character_set): Initialize and make
index 58afff24c9f61b8af1d36a86f31a78f3c7be1cb0..617f2c9e04d4cd046c0440cfc12384d48a045dcd 100644 (file)
@@ -2660,29 +2660,10 @@ struct reloc_howto_struct
 
 #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
   { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
-#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
-  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
-         NAME, FALSE, 0, 0, IN)
-
 #define EMPTY_HOWTO(C) \
   HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
          NULL, FALSE, 0, 0, FALSE)
 
-#define HOWTO_PREPARE(relocation, symbol)              \
-  {                                                    \
-    if (symbol != NULL)                                \
-      {                                                \
-        if (bfd_is_com_section (symbol->section))      \
-          {                                            \
-            relocation = 0;                            \
-          }                                            \
-        else                                           \
-          {                                            \
-            relocation = symbol->value;                \
-          }                                            \
-      }                                                \
-  }
-
 unsigned int bfd_get_reloc_size (reloc_howto_type *);
 
 typedef struct relent_chain
index f0e3e30128a003447809d0d27b7efff9b51de216..a07fc64febb1a5691af9cfcbcf6822f1268f6326 100644 (file)
@@ -814,7 +814,7 @@ coff_thumb_pcrel_12 (bfd *abfd,
                                  b12);
 }
 
-static const struct reloc_howto_struct *
+static reloc_howto_type *
 coff_arm_reloc_type_lookup (bfd * abfd, bfd_reloc_code_real_type code)
 {
 #define ASTD(i,j)       case i: return aoutarm_std_reloc_howto + j
index 5eac12996d1b8b9049db3f0fe5a5800b475247c5..9f34a030cc8c0ca292bc57addeab43426ee105ca 100644 (file)
 
 static reloc_howto_type elf_hppa_howto_table[ELF_HOWTO_TABLE_SIZE] =
 {
-  { R_PARISC_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_NONE", FALSE, 0, 0, FALSE },
+#define HOW(type, size, bitsize, pc_rel, complain, mask) \
+  HOWTO (type, 0, size, bitsize, pc_rel, 0, complain_overflow_ ## complain, \
+        bfd_elf_generic_reloc, #type, FALSE, 0, mask, FALSE)
 
   /* The values in DIR32 are to placate the check in
      _bfd_stab_section_find_nearest_line.  */
-  { R_PARISC_DIR32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR32", FALSE, 0, 0xffffffff, FALSE },
-  { R_PARISC_DIR21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_DIR17R, 0, 2, 17, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR17R", FALSE, 0, 0, FALSE },
-  { R_PARISC_DIR17F, 0, 2, 17, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR17F", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DIR14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_DIR14F, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR14F", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_NONE,          3,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_DIR32,         2, 32, FALSE, bitfield, 0xffffffff),
+  HOW (R_PARISC_DIR21L,                2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR17R,                2, 17, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR17F,                2, 17, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR14R,                2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR14F,                2, 14, FALSE, bitfield, 0),
   /* 8 */
-  { R_PARISC_PCREL12F, 0, 2, 12, TRUE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL12F", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL32, 0, 2, 32, TRUE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL32", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL21L, 0, 2, 21, TRUE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL17R, 0, 2, 17, TRUE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL17R", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL17F, 0, 2, 17, TRUE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL17F", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL17C, 0, 2, 17, TRUE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL17C", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL14R, 0, 2, 14, TRUE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL14F, 0, 2, 14, TRUE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL14F", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_PCREL12F,      2, 12,  TRUE, bitfield, 0),
+  HOW (R_PARISC_PCREL32,       2, 32,  TRUE, bitfield, 0),
+  HOW (R_PARISC_PCREL21L,      2, 21,  TRUE, bitfield, 0),
+  HOW (R_PARISC_PCREL17R,      2, 17,  TRUE, bitfield, 0),
+  HOW (R_PARISC_PCREL17F,      2, 17,  TRUE, bitfield, 0),
+  HOW (R_PARISC_PCREL17C,      2, 17,  TRUE, bitfield, 0),
+  HOW (R_PARISC_PCREL14R,      2, 14,  TRUE, bitfield, 0),
+  HOW (R_PARISC_PCREL14F,      2, 14,  TRUE, bitfield, 0),
   /* 16 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DPREL21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DPREL21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_DPREL14WR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DPREL14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_DPREL14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DPREL14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DPREL14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DPREL14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_DPREL14F, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DPREL14F", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DPREL21L,      2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_DPREL14WR,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_DPREL14DR,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DPREL14R,      2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_DPREL14F,      2, 14, FALSE, bitfield, 0),
   /* 24 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTREL21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTREL21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTREL14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTREL14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTREL14F, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTREL14F", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTREL21L,     2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTREL14R,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTREL14F,     2, 14, FALSE, bitfield, 0),
   /* 32 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTIND21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTIND21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTIND14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTIND14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTIND14F, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTIND14F", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTIND21L,     2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTIND14R,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTIND14F,     2, 14, FALSE, bitfield, 0),
   /* 40 */
-  { R_PARISC_SETBASE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_SETBASE", FALSE, 0, 0, FALSE },
-  { R_PARISC_SECREL32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_SECREL32", FALSE, 0, 0xffffffff, FALSE },
-  { R_PARISC_BASEREL21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_BASEREL21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_BASEREL17R, 0, 2, 17, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_BASEREL17R", FALSE, 0, 0, FALSE },
-  { R_PARISC_BASEREL17F, 0, 2, 17, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_BASEREL17F", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_BASEREL14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_BASEREL14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_BASEREL14F, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_BASEREL14F", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_SETBASE,       0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_SECREL32,      2, 32, FALSE, bitfield, 0xffffffff),
+  HOW (R_PARISC_BASEREL21L,    2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_BASEREL17R,    2, 17, FALSE, bitfield, 0),
+  HOW (R_PARISC_BASEREL17F,    2, 17, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_BASEREL14R,    2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_BASEREL14F,    2, 14, FALSE, bitfield, 0),
   /* 48 */
-  { R_PARISC_SEGBASE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_SEGBASE", FALSE, 0, 0, FALSE },
-  { R_PARISC_SEGREL32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_SEGREL32", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLTOFF21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLTOFF21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLTOFF14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLTOFF14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLTOFF14F, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLTOFF14F", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_SEGBASE,       0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_SEGREL32,      2, 32, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLTOFF21L,     2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLTOFF14R,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLTOFF14F,     2, 14, FALSE, bitfield, 0),
   /* 56 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_FPTR32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR32", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_FPTR21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_FPTR14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR32,  2, 32, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR21L, 2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR14R, 2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 64 */
-  { R_PARISC_FPTR64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_FPTR64", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLABEL32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLABEL32", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLABEL21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLABEL21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLABEL14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLABEL14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_FPTR64,                4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLABEL32,      2, 32, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLABEL21L,     2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLABEL14R,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 72 */
-  { R_PARISC_PCREL64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL64", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL22C, 0, 2, 22, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL22C", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL22F, 0, 2, 22, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL22F", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL14WR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL16F, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL16F", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL16WF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL16WF", FALSE, 0, 0, FALSE },
-  { R_PARISC_PCREL16DF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PCREL16DF", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_PCREL64,       4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_PCREL22C,      2, 22, FALSE, bitfield, 0),
+  HOW (R_PARISC_PCREL22F,      2, 22, FALSE, bitfield, 0),
+  HOW (R_PARISC_PCREL14WR,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_PCREL14DR,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_PCREL16F,      2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_PCREL16WF,     2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_PCREL16DF,     2, 16, FALSE, bitfield, 0),
   /* 80 */
-  { R_PARISC_DIR64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR64", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DIR14WR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_DIR14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_DIR16F, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR16F", FALSE, 0, 0, FALSE },
-  { R_PARISC_DIR16WF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR16WF", FALSE, 0, 0, FALSE },
-  { R_PARISC_DIR16DF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DIR16DF", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_DIR64,         4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR14WR,       2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR14DR,       2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR16F,                2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR16WF,       2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR16DF,       2, 16, FALSE, bitfield, 0),
   /* 88 */
-  { R_PARISC_GPREL64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_GPREL64", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTREL14WR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTREL14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTREL14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTREL14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_GPREL16F, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_GPREL16F", FALSE, 0, 0, FALSE },
-  { R_PARISC_GPREL16WF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_GPREL16WF", FALSE, 0, 0, FALSE },
-  { R_PARISC_GPREL16DF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_GPREL16DF", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_GPREL64,       4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTREL14WR,    2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTREL14DR,    2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_GPREL16F,      2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_GPREL16WF,     2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_GPREL16DF,     2, 16, FALSE, bitfield, 0),
   /* 96 */
-  { R_PARISC_LTOFF64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF64", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTIND14WR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTIND14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_DLTIND14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_DLTIND14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF16F, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF16F", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF16WF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF16DF", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF16DF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF16DF", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_LTOFF64,       4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTIND14WR,    2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_DLTIND14DR,    2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF16F,      2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF16WF,     2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF16DF,     2, 16, FALSE, bitfield, 0),
   /* 104 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_BASEREL14WR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_BASEREL14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_BASEREL14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_BASEREL14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_BASEREL14WR,   2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_BASEREL14DR,   2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 112 */
-  { R_PARISC_SEGREL64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_SEGREL64", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLTOFF14WR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLTOFF14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLTOFF14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLTOFF14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLTOFF16F, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLTOFF16F", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLTOFF16WF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLTOFF16WF", FALSE, 0, 0, FALSE },
-  { R_PARISC_PLTOFF16DF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_PLTOFF16DF", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_SEGREL64,      4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLTOFF14WR,    2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLTOFF14DR,    2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLTOFF16F,     2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLTOFF16WF,    2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_PLTOFF16DF,    2, 16, FALSE, bitfield, 0),
   /* 120 */
-  { R_PARISC_LTOFF_FPTR64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_FPTR14WR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_FPTR14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_FPTR16F, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR16F", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_FPTR16WF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_FPTR16WF", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_FPTR16DF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_LTOFF_FPTR64,  4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR14WR,        2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR14DR,        2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR16F, 2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR16WF,        2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR16DF,        2, 16, FALSE, bitfield, 0),
   /* 128 */
-  { R_PARISC_COPY, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_COPY", FALSE, 0, 0, FALSE },
-  { R_PARISC_IPLT, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_IPLT", FALSE, 0, 0, FALSE },
-  { R_PARISC_EPLT, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_EPLT", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_COPY,          0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_IPLT,          0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_EPLT,          0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 136 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 144 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
   /* 152 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_TPREL32, 0, 2, 32, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_TPREL32", FALSE, 0, 0, FALSE },
-  { R_PARISC_TPREL21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TPREL21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_TPREL14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TPREL14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_TPREL32,       2, 32, FALSE,     dont, 0),
+  HOW (R_PARISC_TPREL21L,      2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_TPREL14R,      2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
   /* 160 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_TP21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_TP14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_TP14F, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14F", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_LTOFF_TP21L,   2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP14R,   2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP14F,   2, 14, FALSE, bitfield, 0),
   /* 168 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 176 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 184 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
   /* 192 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 200 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 208 */
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
   /* 216 */
-  { R_PARISC_TPREL64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TPREL64", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_TPREL14WR, 0, 2, 14, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_TPREL14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_TPREL14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TPREL14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_TPREL16F, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TPREL16F", FALSE, 0, 0, FALSE },
-  { R_PARISC_TPREL16WF, 0, 2, 16, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_TPREL16WF", FALSE, 0, 0, FALSE },
-  { R_PARISC_TPREL16DF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TPREL16DF", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_TPREL64,       4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_TPREL14WR,     2, 14, FALSE,     dont, 0),
+  HOW (R_PARISC_TPREL14DR,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_TPREL16F,      2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_TPREL16WF,     2, 16, FALSE,     dont, 0),
+  HOW (R_PARISC_TPREL16DF,     2, 16, FALSE, bitfield, 0),
   /* 224 */
-  { R_PARISC_LTOFF_TP64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP64", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_UNIMPLEMENTED, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_UNIMPLEMENTED", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_TP14WR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14WR", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_TP14DR, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP14DR", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_TP16F, 0, 2, 16, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP16F", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_TP16WF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP16WF", FALSE, 0, 0, FALSE },
-  { R_PARISC_LTOFF_TP16DF, 0, 2, 16, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP16DF", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_LTOFF_TP64,    4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED, 0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP14WR,  2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP14DR,  2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP16F,   2, 16, FALSE,     dont, 0),
+  HOW (R_PARISC_LTOFF_TP16WF,  2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP16DF,  2, 16, FALSE, bitfield, 0),
   /* 232 */
-  { R_PARISC_GNU_VTENTRY, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_GNU_VTENTRY", FALSE, 0, 0, FALSE },
-  { R_PARISC_GNU_VTINHERIT, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_GNU_VTINHERIT", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_GD21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_GD21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_GD14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_GD14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_GDCALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_GDCALL", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_LDM21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_LDM21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_LDM14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_LDM14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_LDMCALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_LDMCALL", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_GNU_VTENTRY,   0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_GNU_VTINHERIT, 0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_TLS_GD21L,     2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_TLS_GD14R,     2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_TLS_GDCALL,    0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_TLS_LDM21L,    2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_TLS_LDM14R,    2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_TLS_LDMCALL,   0,  0, FALSE,     dont, 0),
   /* 240 */
-  { R_PARISC_TLS_LDO21L, 0, 2, 21, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_LDO21L", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_LDO14R, 0, 2, 14, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_LDO14R", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_DTPMOD32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_DTPMOD32", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_DTPMOD64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_DTPMOD64", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_DTPOFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_DTPOFF32", FALSE, 0, 0, FALSE },
-  { R_PARISC_TLS_DTPOFF64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-    bfd_elf_generic_reloc, "R_PARISC_TLS_DTPOFF64", FALSE, 0, 0, FALSE },
+  HOW (R_PARISC_TLS_LDO21L,    2, 21, FALSE, bitfield, 0),
+  HOW (R_PARISC_TLS_LDO14R,    2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_TLS_DTPMOD32,  2, 32, FALSE, bitfield, 0),
+  HOW (R_PARISC_TLS_DTPMOD64,  4, 64, FALSE, bitfield, 0),
+  HOW (R_PARISC_TLS_DTPOFF32,  2, 32, FALSE, bitfield, 0),
+  HOW (R_PARISC_TLS_DTPOFF64,  4, 64, FALSE, bitfield, 0)
+#undef HOW
 };
 
 #define OFFSET_14R_FROM_21L 4
index 5224d9abfa0050393a9db1ed6abf740baa142edf..473e84c1c1f1a4624e43bf4ff9d3f478ec548329 100644 (file)
@@ -30,7 +30,7 @@
 /* Private relocation functions.  */
 \f
 #define MEPREL(type, size, bits, right, left, pcrel, overflow, mask) \
-  {(unsigned)type, right, size, bits, pcrel, left, overflow, bfd_elf_generic_reloc, #type, FALSE, 0, mask, 0 }
+  HOWTO (type, right, size, bits, pcrel, left, overflow, bfd_elf_generic_reloc, #type, FALSE, 0, mask, 0)
 
 #define N complain_overflow_dont
 #define S complain_overflow_signed
index cc6871c7e104f7cdf3696574d64cbfce1fa20f62..09d3323602ae4f57fcc941956a4d9a2378764a41 100644 (file)
@@ -48,6 +48,6 @@
 #include "sysdep.h"
 #include "bfd.h"               /* To ensure following declaration is OK.  */
 
-const struct reloc_howto_struct * MY_bfd_reloc_type_lookup (bfd *, bfd_reloc_code_real_type);
+reloc_howto_type * MY_bfd_reloc_type_lookup (bfd *, bfd_reloc_code_real_type);
 
 #include "netbsd.h"
index aaf3a801fdd88f073d71e531580727fda7d74f30..ec58a7e4af989baf862a1c8323e2ed5a045654c0 100644 (file)
@@ -372,20 +372,12 @@ FUNCTION
        The HOWTO Macro
 
 DESCRIPTION
-       The HOWTO define is horrible and will go away.
+       The HOWTO macro fills in a reloc_howto_type (a typedef for
+       const struct reloc_howto_struct).
 
 .#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
 .  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
 
-DESCRIPTION
-       And will be replaced with the totally magic way. But for the
-       moment, we are compatible, so do it this way.
-
-.#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
-.  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
-.        NAME, FALSE, 0, 0, IN)
-.
-
 DESCRIPTION
        This is used to fill in an empty howto entry in an array.
 
@@ -393,25 +385,6 @@ DESCRIPTION
 .  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
 .        NULL, FALSE, 0, 0, FALSE)
 .
-
-DESCRIPTION
-       Helper routine to turn a symbol into a relocation value.
-
-.#define HOWTO_PREPARE(relocation, symbol)             \
-.  {                                                   \
-.    if (symbol != NULL)                               \
-.      {                                               \
-.       if (bfd_is_com_section (symbol->section))      \
-.         {                                            \
-.           relocation = 0;                            \
-.         }                                            \
-.       else                                           \
-.         {                                            \
-.           relocation = symbol->value;                \
-.         }                                            \
-.      }                                               \
-.  }
-.
 */
 
 /*
index 11817cfbec1f5c80deaf1cf1d1d82c3bea72d0ef..fc45260e49b4e784893e44243dfa8cd36cd6aa87 100644 (file)
@@ -5601,7 +5601,7 @@ static reloc_howto_type alpha_howto_table[] =
 /* Return a pointer to a howto structure which, when invoked, will perform
    the relocation code on data from the architecture noted.  */
 
-static const struct reloc_howto_struct *
+static reloc_howto_type *
 alpha_vms_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
                                 bfd_reloc_code_real_type code)
 {