This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Delete NEWHOWTO and tidy some uses of reloc_howto_struct


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.

diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c
index f0e3e30128..a07fc64feb 100644
--- a/bfd/coff-arm.c
+++ b/bfd/coff-arm.c
@@ -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
diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h
index 5eac12996d..9f34a030cc 100644
--- a/bfd/elf-hppa.h
+++ b/bfd/elf-hppa.h
@@ -47,531 +47,289 @@
 
 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
diff --git a/bfd/elf32-mep.c b/bfd/elf32-mep.c
index 5224d9abfa..473e84c1c1 100644
--- a/bfd/elf32-mep.c
+++ b/bfd/elf32-mep.c
@@ -30,7 +30,7 @@
 /* Private relocation functions.  */
 
 #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
diff --git a/bfd/ns32knetbsd.c b/bfd/ns32knetbsd.c
index cc6871c7e1..09d3323602 100644
--- a/bfd/ns32knetbsd.c
+++ b/bfd/ns32knetbsd.c
@@ -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"
diff --git a/bfd/reloc.c b/bfd/reloc.c
index aaf3a801fd..ec58a7e4af 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -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;		\
-.	   }						\
-.      }						\
-.  }
-.
 */
 
 /*
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 11817cfbec..fc45260e49 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -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)
 {

-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]