Blame SOURCES/gdb-rhbz1320945-power9-12of38.patch

2c2fa1
commit 6346d5ca43719ba6fc3176c29fd58a83d439f011
2c2fa1
Author: Alan Modra <amodra@gmail.com>
2c2fa1
Date:   Mon Jan 19 10:36:26 2015 +1030
2c2fa1
2c2fa1
    Fallout from recent bfd_reloc_outofrange changes
2c2fa1
    
2c2fa1
    Commit ec93045b and cd21f5da introduced a large number of tic4x and
2c2fa1
    tic54x regressions, due to the new checks being wrong for targets
2c2fa1
    with octets_per_byte != 1.  To fix that I introduced a new
2c2fa1
    bfd_get_section_limit_octets and performed the check on octets rather
2c2fa1
    than byte adresses, reducing the number of bfd_octets_per_byte calls.
2c2fa1
    bfd_octets_per_byte is rather expensive..
2c2fa1
    
2c2fa1
    I then wondered why the same bfd_reloc_outofrange check added to
2c2fa1
    bfd_perform_relocation wasn't also added to bfd_install_relocation.
2c2fa1
    The two functions are virtually identical and ought to remain that
2c2fa1
    way.  However, adding the same check to bfd_install_relocation
2c2fa1
    resulted in ld-elf "FAIL Link eh-group.o to eh-group" on many ELF
2c2fa1
    targets, including x64_64-linux.  The reason being that eh-group.o
2c2fa1
    has NONE relocs at the end of a section, and most targets give NONE
2c2fa1
    relocs a non-zero size.  So if we are to keep the new outofrange
2c2fa1
    check it appears that NONE relocs must have a zero size.
2c2fa1
    
2c2fa1
            * bfd-in.h (bfd_get_section_limit_octets): New define, extracted from..
2c2fa1
            (bfd_get_section_limit): ..here.
2c2fa1
            * reloc.c (bfd_perform_relocation): Correct bfd_reloc_outofrange check.
2c2fa1
            (bfd_install_relocation, _bfd_final_link_relocate): Add same check here.
2c2fa1
            * elf32-sh.c (sh_elf_reloc): Correct bfd_reloc_outofrange check.
2c2fa1
            * elf32-ppc.c (ppc_elf_addr16_ha_reloc): Remove duplicated
2c2fa1
            bfd_reloc_outofrange check.
2c2fa1
            * bfd-in2.h: Regenerate.
2c2fa1
    
2c2fa1
            * cpu-ns32k.c (_bfd_do_ns32k_reloc_contents): Return bfd_reloc_ok
2c2fa1
            on zero size relocs.
2c2fa1
            * ecoff.c (ecoff_reloc_link_order): Likewise.
2c2fa1
            * elf32-nds32.c (nds32_relocate_contents): Likewise.
2c2fa1
            * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise.
2c2fa1
    
2c2fa1
            * reloc.c (_bfd_relocate_contents): Don't bomb on zero size relocs.
2c2fa1
            (_bfd_clear_contents): Likewise.
2c2fa1
            * elfxx-mips.c (mips_elf_obtain_contents): Likewise.
2c2fa1
            (mips_elf_perform_relocation): Likewise.
2c2fa1
    
2c2fa1
            * aoutx.h (aout_link_reloc_link_order): Allow for NULL return
2c2fa1
            from malloc on zero size alloc.
2c2fa1
            * cofflink.c (_bfd_coff_reloc_link_order): Likewise.
2c2fa1
            * elflink.c (elf_reloc_link_order): Likewise.
2c2fa1
            * linker.c (_bfd_generic_reloc_link_order): Likewise.
2c2fa1
            * pdp11.c (aout_link_reloc_link_order): Likewise.
2c2fa1
            * xcofflink.c (xcoff_reloc_link_order): Likewise.
2c2fa1
    
2c2fa1
            * aoutx.h (howto_table_ext): Ensure NONE relocs have size 3,
2c2fa1
            bitsize 0, and complain_overflow_dont.
2c2fa1
            * coff-sparc.c (coff_sparc_howto_table): Likewise.
2c2fa1
            * elf-hppa.h (elf_hppa_howto_table): Likewise.
2c2fa1
            * elf-m10200.c (elf_mn10200_howto_table): Likewise.
2c2fa1
            * elf-m10300.c (elf_mn10300_howto_table): Likewise.
2c2fa1
            * elf32-arc.c (elf_arc_howto_table): Likewise.
2c2fa1
            * elf32-arm.c (elf32_arm_howto_table_1): Likewise.
2c2fa1
            * elf32-avr.c (elf_avr_howto_table): Likewise.
2c2fa1
            * elf32-bfin.c (bfin_howto_table): Likewise.
2c2fa1
            * elf32-cr16.c (cr16_elf_howto_table): Likewise.
2c2fa1
            * elf32-cris.c (cris_elf_howto_table): Likewise.
2c2fa1
            * elf32-crx.c (crx_elf_howto_table): Likewise.
2c2fa1
            * elf32-d10v.c (elf_d10v_howto_table): Likewise.
2c2fa1
            * elf32-d30v.c (elf_d30v_howto_table): Likewise.
2c2fa1
            * elf32-dlx.c (dlx_elf_howto_table): Likewise.
2c2fa1
            * elf32-epiphany.c (epiphany_elf_howto_table): Likewise.
2c2fa1
            * elf32-fr30.c (fr30_elf_howto_table): Likewise.
2c2fa1
            * elf32-frv.c (elf32_frv_howto_table): Likewise.
2c2fa1
            * elf32-h8300.c (h8_elf_howto_table): Likewise.
2c2fa1
            * elf32-i370.c (i370_elf_howto_raw): Likewise.
2c2fa1
            * elf32-i386.c (elf_howto_table): Likewise.
2c2fa1
            * elf32-i860.c (elf32_i860_howto_table): Likewise.
2c2fa1
            * elf32-i960.c (elf32_i960_relocate): Likewise.
2c2fa1
            * elf32-ip2k.c (ip2k_elf_howto_table): Likewise.
2c2fa1
            * elf32-iq2000.c (iq2000_elf_howto_table): Likewise.
2c2fa1
            * elf32-lm32.c (lm32_elf_howto_table): Likewise.
2c2fa1
            * elf32-m32c.c (m32c_elf_howto_table): Likewise.
2c2fa1
            * elf32-m32r.c (m32r_elf_howto_table): Likewise.
2c2fa1
            * elf32-m68hc11.c (elf_m68hc11_howto_table): Likewise.
2c2fa1
            * elf32-m68hc12.c (elf_m68hc11_howto_table): Likewise.
2c2fa1
            * elf32-m68k.c (howto_table): Likewise.
2c2fa1
            * elf32-mcore.c (mcore_elf_howto_raw): Likewise.
2c2fa1
            * elf32-mep.c (mep_elf_howto_table): Likewise.
2c2fa1
            * elf32-metag.c (elf_metag_howto_table): Likewise.
2c2fa1
            * elf32-microblaze.c (microblaze_elf_howto_raw): Likewise.
2c2fa1
            * elf32-mips.c (elf_mips_howto_table_rel): Likewise.
2c2fa1
            * elf32-moxie.c (moxie_elf_howto_table): Likewise.
2c2fa1
            * elf32-msp430.c (elf_msp430_howto_table): Likewise.
2c2fa1
            * elf32-mt.c (mt_elf_howto_table): Likewise.
2c2fa1
            * elf32-nds32.c (nds32_elf_howto_table): Likewise.
2c2fa1
            * elf32-nios2.c (elf_nios2_howto_table_rel): Likewise.
2c2fa1
            * elf32-or1k.c (or1k_elf_howto_table): Likewise.
2c2fa1
            * elf32-pj.c (pj_elf_howto_table): Likewise.
2c2fa1
            * elf32-ppc.c (ppc_elf_howto_raw): Likewise.
2c2fa1
            * elf32-rl78.c (rl78_elf_howto_table): Likewise.
2c2fa1
            * elf32-rx.c (rx_elf_howto_table): Likewise.
2c2fa1
            * elf32-s390.c (elf_howto_table): Likewise.
2c2fa1
            * elf32-score.c (elf32_score_howto_table): Likewise.
2c2fa1
            * elf32-score7.c (elf32_score_howto_table): Likewise.
2c2fa1
            * elf32-sh-relocs.h (R_SH_NONE): Likewise.
2c2fa1
            * elf32-spu.c (elf_howto_table): Likewise.
2c2fa1
            * elf32-tic6x.c (elf32_tic6x_howto_table): Likewise.
2c2fa1
            * elf32-tilepro.c (tilepro_elf_howto_table): Likewise.
2c2fa1
            * elf32-v850.c (v850_elf_howto_table): Likewise.
2c2fa1
            * elf32-vax.c (howto_table): Likewise.
2c2fa1
            * elf32-visium.c (visium_elf_howto_table): Likewise.
2c2fa1
            * elf32-xc16x.c (xc16x_elf_howto_table): Likewise.
2c2fa1
            * elf32-xgate.c (elf_xgate_howto_table): Likewise.
2c2fa1
            * elf32-xstormy16.c (xstormy16_elf_howto_table): Likewise.
2c2fa1
            * elf32-xtensa.c (elf_howto_table): Likewise.
2c2fa1
            * elf64-alpha.c (elf64_alpha_howto_table): Likewise.
2c2fa1
            * elf64-mips.c (mips_elf64_howto_table_rel): Likewise.
2c2fa1
            * elf64-mmix.c (elf_mmix_howto_table): Likewise.
2c2fa1
            * elf64-ppc.c (ppc64_elf_howto_raw): Likewise.
2c2fa1
            * elf64-s390.c (elf_howto_table): Likewise.
2c2fa1
            * elf64-sh64.c (sh_elf64_howto_table): Likewise.
2c2fa1
            * elf64-x86-64.c (x86_64_elf_howto_table): Likewise.
2c2fa1
            * elfn32-mips.c (elf_mips_howto_table_rel): Likewise.
2c2fa1
            * elfnn-aarch64.c (elfNN_aarch64_howto_table): Likewise.
2c2fa1
            (elfNN_aarch64_howto_none): Likewise.
2c2fa1
            * elfxx-ia64.c (ia64_howto_table): Likewise.
2c2fa1
            * elfxx-sparc.c (_bfd_sparc_elf_howto_table): Likewise.
2c2fa1
            * elfxx-tilegx.c (tilegx_elf_howto_table): Likewise.
2c2fa1
            * nlm32-sparc.c (nlm32_sparc_howto_table): Likewise.
2c2fa1
2c2fa1
### a/bfd/ChangeLog
2c2fa1
### b/bfd/ChangeLog
2c2fa1
## -1,3 +1,109 @@
2c2fa1
+2015-01-19  Alan Modra  <amodra@gmail.com>
2c2fa1
+
2c2fa1
+	* bfd-in.h (bfd_get_section_limit_octets): New define, extracted from..
2c2fa1
+	(bfd_get_section_limit): ..here.
2c2fa1
+	* reloc.c (bfd_perform_relocation): Correct bfd_reloc_outofrange check.
2c2fa1
+	(bfd_install_relocation, _bfd_final_link_relocate): Add same check here.
2c2fa1
+	* elf32-sh.c (sh_elf_reloc): Correct bfd_reloc_outofrange check.
2c2fa1
+	* elf32-ppc.c (ppc_elf_addr16_ha_reloc): Remove duplicated
2c2fa1
+	bfd_reloc_outofrange check.
2c2fa1
+	* bfd-in2.h: Regenerate.
2c2fa1
+
2c2fa1
+	* cpu-ns32k.c (_bfd_do_ns32k_reloc_contents): Return bfd_reloc_ok
2c2fa1
+	on zero size relocs.
2c2fa1
+	* ecoff.c (ecoff_reloc_link_order): Likewise.
2c2fa1
+	* elf32-nds32.c (nds32_relocate_contents): Likewise.
2c2fa1
+	* elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise.
2c2fa1
+
2c2fa1
+	* reloc.c (_bfd_relocate_contents): Don't bomb on zero size relocs.
2c2fa1
+	(_bfd_clear_contents): Likewise.
2c2fa1
+	* elfxx-mips.c (mips_elf_obtain_contents): Likewise.
2c2fa1
+	(mips_elf_perform_relocation): Likewise.
2c2fa1
+
2c2fa1
+	* aoutx.h (aout_link_reloc_link_order): Allow for NULL return
2c2fa1
+	from malloc on zero size alloc.
2c2fa1
+	* cofflink.c (_bfd_coff_reloc_link_order): Likewise.
2c2fa1
+	* elflink.c (elf_reloc_link_order): Likewise.
2c2fa1
+	* linker.c (_bfd_generic_reloc_link_order): Likewise.
2c2fa1
+	* pdp11.c (aout_link_reloc_link_order): Likewise.
2c2fa1
+	* xcofflink.c (xcoff_reloc_link_order): Likewise.
2c2fa1
+
2c2fa1
+	* aoutx.h (howto_table_ext): Ensure NONE relocs have size 3,
2c2fa1
+	bitsize 0, and complain_overflow_dont.
2c2fa1
+	* coff-sparc.c (coff_sparc_howto_table): Likewise.
2c2fa1
+	* elf-hppa.h (elf_hppa_howto_table): Likewise.
2c2fa1
+	* elf-m10200.c (elf_mn10200_howto_table): Likewise.
2c2fa1
+	* elf-m10300.c (elf_mn10300_howto_table): Likewise.
2c2fa1
+	* elf32-arc.c (elf_arc_howto_table): Likewise.
2c2fa1
+	* elf32-arm.c (elf32_arm_howto_table_1): Likewise.
2c2fa1
+	* elf32-avr.c (elf_avr_howto_table): Likewise.
2c2fa1
+	* elf32-bfin.c (bfin_howto_table): Likewise.
2c2fa1
+	* elf32-cr16.c (cr16_elf_howto_table): Likewise.
2c2fa1
+	* elf32-cris.c (cris_elf_howto_table): Likewise.
2c2fa1
+	* elf32-crx.c (crx_elf_howto_table): Likewise.
2c2fa1
+	* elf32-d10v.c (elf_d10v_howto_table): Likewise.
2c2fa1
+	* elf32-d30v.c (elf_d30v_howto_table): Likewise.
2c2fa1
+	* elf32-dlx.c (dlx_elf_howto_table): Likewise.
2c2fa1
+	* elf32-epiphany.c (epiphany_elf_howto_table): Likewise.
2c2fa1
+	* elf32-fr30.c (fr30_elf_howto_table): Likewise.
2c2fa1
+	* elf32-frv.c (elf32_frv_howto_table): Likewise.
2c2fa1
+	* elf32-h8300.c (h8_elf_howto_table): Likewise.
2c2fa1
+	* elf32-i370.c (i370_elf_howto_raw): Likewise.
2c2fa1
+	* elf32-i386.c (elf_howto_table): Likewise.
2c2fa1
+	* elf32-i860.c (elf32_i860_howto_table): Likewise.
2c2fa1
+	* elf32-i960.c (elf32_i960_relocate): Likewise.
2c2fa1
+	* elf32-ip2k.c (ip2k_elf_howto_table): Likewise.
2c2fa1
+	* elf32-iq2000.c (iq2000_elf_howto_table): Likewise.
2c2fa1
+	* elf32-lm32.c (lm32_elf_howto_table): Likewise.
2c2fa1
+	* elf32-m32c.c (m32c_elf_howto_table): Likewise.
2c2fa1
+	* elf32-m32r.c (m32r_elf_howto_table): Likewise.
2c2fa1
+	* elf32-m68hc11.c (elf_m68hc11_howto_table): Likewise.
2c2fa1
+	* elf32-m68hc12.c (elf_m68hc11_howto_table): Likewise.
2c2fa1
+	* elf32-m68k.c (howto_table): Likewise.
2c2fa1
+	* elf32-mcore.c (mcore_elf_howto_raw): Likewise.
2c2fa1
+	* elf32-mep.c (mep_elf_howto_table): Likewise.
2c2fa1
+	* elf32-metag.c (elf_metag_howto_table): Likewise.
2c2fa1
+	* elf32-microblaze.c (microblaze_elf_howto_raw): Likewise.
2c2fa1
+	* elf32-mips.c (elf_mips_howto_table_rel): Likewise.
2c2fa1
+	* elf32-moxie.c (moxie_elf_howto_table): Likewise.
2c2fa1
+	* elf32-msp430.c (elf_msp430_howto_table): Likewise.
2c2fa1
+	* elf32-mt.c (mt_elf_howto_table): Likewise.
2c2fa1
+	* elf32-nds32.c (nds32_elf_howto_table): Likewise.
2c2fa1
+	* elf32-nios2.c (elf_nios2_howto_table_rel): Likewise.
2c2fa1
+	* elf32-or1k.c (or1k_elf_howto_table): Likewise.
2c2fa1
+	* elf32-pj.c (pj_elf_howto_table): Likewise.
2c2fa1
+	* elf32-ppc.c (ppc_elf_howto_raw): Likewise.
2c2fa1
+	* elf32-rl78.c (rl78_elf_howto_table): Likewise.
2c2fa1
+	* elf32-rx.c (rx_elf_howto_table): Likewise.
2c2fa1
+	* elf32-s390.c (elf_howto_table): Likewise.
2c2fa1
+	* elf32-score.c (elf32_score_howto_table): Likewise.
2c2fa1
+	* elf32-score7.c (elf32_score_howto_table): Likewise.
2c2fa1
+	* elf32-sh-relocs.h (R_SH_NONE): Likewise.
2c2fa1
+	* elf32-spu.c (elf_howto_table): Likewise.
2c2fa1
+	* elf32-tic6x.c (elf32_tic6x_howto_table): Likewise.
2c2fa1
+	* elf32-tilepro.c (tilepro_elf_howto_table): Likewise.
2c2fa1
+	* elf32-v850.c (v850_elf_howto_table): Likewise.
2c2fa1
+	* elf32-vax.c (howto_table): Likewise.
2c2fa1
+	* elf32-visium.c (visium_elf_howto_table): Likewise.
2c2fa1
+	* elf32-xc16x.c (xc16x_elf_howto_table): Likewise.
2c2fa1
+	* elf32-xgate.c (elf_xgate_howto_table): Likewise.
2c2fa1
+	* elf32-xstormy16.c (xstormy16_elf_howto_table): Likewise.
2c2fa1
+	* elf32-xtensa.c (elf_howto_table): Likewise.
2c2fa1
+	* elf64-alpha.c (elf64_alpha_howto_table): Likewise.
2c2fa1
+	* elf64-mips.c (mips_elf64_howto_table_rel): Likewise.
2c2fa1
+	* elf64-mmix.c (elf_mmix_howto_table): Likewise.
2c2fa1
+	* elf64-ppc.c (ppc64_elf_howto_raw): Likewise.
2c2fa1
+	* elf64-s390.c (elf_howto_table): Likewise.
2c2fa1
+	* elf64-sh64.c (sh_elf64_howto_table): Likewise.
2c2fa1
+	* elf64-x86-64.c (x86_64_elf_howto_table): Likewise.
2c2fa1
+	* elfn32-mips.c (elf_mips_howto_table_rel): Likewise.
2c2fa1
+	* elfnn-aarch64.c (elfNN_aarch64_howto_table): Likewise.
2c2fa1
+	(elfNN_aarch64_howto_none): Likewise.
2c2fa1
+	* elfxx-ia64.c (ia64_howto_table): Likewise.
2c2fa1
+	* elfxx-sparc.c (_bfd_sparc_elf_howto_table): Likewise.
2c2fa1
+	* elfxx-tilegx.c (tilegx_elf_howto_table): Likewise.
2c2fa1
+	* nlm32-sparc.c (nlm32_sparc_howto_table): Likewise.
2c2fa1
+
2c2fa1
 2015-01-15  H.J. Lu  <hongjiu.lu@intel.com>
2c2fa1
 
2c2fa1
 	PR ld/17847
2c2fa1
--- a/bfd/aoutx.h
2c2fa1
+++ b/bfd/aoutx.h
2c2fa1
@@ -203,8 +203,8 @@ reloc_howto_type howto_table_ext[] =
2c2fa1
   HOWTO (RELOC_GLOB_DAT,0,  2,	0,  FALSE, 0, complain_overflow_bitfield, 0, "GLOB_DAT",    FALSE, 0, 0x00000000, FALSE),
2c2fa1
   HOWTO (RELOC_JMP_SLOT,0,  2,	0,  FALSE, 0, complain_overflow_bitfield, 0, "JMP_SLOT",    FALSE, 0, 0x00000000, FALSE),
2c2fa1
   HOWTO (RELOC_RELATIVE,0,  2,	0,  FALSE, 0, complain_overflow_bitfield, 0, "RELATIVE",    FALSE, 0, 0x00000000, FALSE),
2c2fa1
-  HOWTO (0,             0,  0,  0,  FALSE, 0, complain_overflow_dont,     0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE),
2c2fa1
-  HOWTO (0,             0,  0,  0,  FALSE, 0, complain_overflow_dont,     0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE),
2c2fa1
+  HOWTO (0,             0,  3,  0,  FALSE, 0, complain_overflow_dont,     0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE),
2c2fa1
+  HOWTO (0,             0,  3,  0,  FALSE, 0, complain_overflow_dont,     0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE),
2c2fa1
 #define RELOC_SPARC_REV32 RELOC_WDISP19
2c2fa1
   HOWTO (RELOC_SPARC_REV32, 0, 2, 32, FALSE, 0, complain_overflow_dont,   0,"R_SPARC_REV32",FALSE, 0, 0xffffffff, FALSE),
2c2fa1
 };
2c2fa1
@@ -3816,7 +3816,7 @@ aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
2c2fa1
 
2c2fa1
 	  size = bfd_get_reloc_size (howto);
2c2fa1
 	  buf = (bfd_byte *) bfd_zmalloc (size);
2c2fa1
-	  if (buf == NULL)
2c2fa1
+	  if (buf == NULL && size != 0)
2c2fa1
 	    return FALSE;
2c2fa1
 	  r = MY_relocate_contents (howto, flaginfo->output_bfd,
2c2fa1
 				    (bfd_vma) pr->addend, buf);
2c2fa1
--- a/bfd/bfd-in.h
2c2fa1
+++ b/bfd/bfd-in.h
2c2fa1
@@ -292,10 +292,13 @@ typedef struct bfd_section *sec_ptr;
2c2fa1
 
2c2fa1
 #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
2c2fa1
 
2c2fa1
+#define bfd_get_section_limit_octets(bfd, sec)			\
2c2fa1
+  ((bfd)->direction != write_direction && (sec)->rawsize != 0	\
2c2fa1
+   ? (sec)->rawsize : (sec)->size)
2c2fa1
+
2c2fa1
 /* Find the address one past the end of SEC.  */
2c2fa1
 #define bfd_get_section_limit(bfd, sec) \
2c2fa1
-  (((bfd)->direction != write_direction && (sec)->rawsize != 0	\
2c2fa1
-    ? (sec)->rawsize : (sec)->size) / bfd_octets_per_byte (bfd))
2c2fa1
+  (bfd_get_section_limit_octets(bfd, sec) / bfd_octets_per_byte (bfd))
2c2fa1
 
2c2fa1
 /* Return TRUE if input section SEC has been discarded.  */
2c2fa1
 #define discarded_section(sec)				\
2c2fa1
--- a/bfd/bfd-in2.h
2c2fa1
+++ b/bfd/bfd-in2.h
2c2fa1
@@ -299,10 +299,13 @@ typedef struct bfd_section *sec_ptr;
2c2fa1
 
2c2fa1
 #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
2c2fa1
 
2c2fa1
+#define bfd_get_section_limit_octets(bfd, sec)			\
2c2fa1
+  ((bfd)->direction != write_direction && (sec)->rawsize != 0	\
2c2fa1
+   ? (sec)->rawsize : (sec)->size)
2c2fa1
+
2c2fa1
 /* Find the address one past the end of SEC.  */
2c2fa1
 #define bfd_get_section_limit(bfd, sec) \
2c2fa1
-  (((bfd)->direction != write_direction && (sec)->rawsize != 0	\
2c2fa1
-    ? (sec)->rawsize : (sec)->size) / bfd_octets_per_byte (bfd))
2c2fa1
+  (bfd_get_section_limit_octets(bfd, sec) / bfd_octets_per_byte (bfd))
2c2fa1
 
2c2fa1
 /* Return TRUE if input section SEC has been discarded.  */
2c2fa1
 #define discarded_section(sec)				\
2c2fa1
--- a/bfd/coff-sparc.c
2c2fa1
+++ b/bfd/coff-sparc.c
2c2fa1
@@ -74,7 +74,7 @@ bfd_coff_generic_reloc (bfd *abfd ATTRIBUTE_UNUSED,
2c2fa1
 
2c2fa1
 static reloc_howto_type coff_sparc_howto_table[] =
2c2fa1
 {
2c2fa1
-  HOWTO(R_SPARC_NONE,    0,0, 0,FALSE,0,complain_overflow_dont,    bfd_coff_generic_reloc,"R_SPARC_NONE",    FALSE,0,0x00000000,TRUE),
2c2fa1
+  HOWTO(R_SPARC_NONE,    0,3, 0,FALSE,0,complain_overflow_dont,    bfd_coff_generic_reloc,"R_SPARC_NONE",    FALSE,0,0x00000000,TRUE),
2c2fa1
   HOWTO(R_SPARC_8,       0,0, 8,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_8",       FALSE,0,0x000000ff,TRUE),
2c2fa1
   HOWTO(R_SPARC_16,      0,1,16,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_16",      FALSE,0,0x0000ffff,TRUE),
2c2fa1
   HOWTO(R_SPARC_32,      0,2,32,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_32",      FALSE,0,0xffffffff,TRUE),
2c2fa1
--- a/bfd/cofflink.c
2c2fa1
+++ b/bfd/cofflink.c
2c2fa1
@@ -2789,7 +2789,7 @@ _bfd_coff_reloc_link_order (bfd *output_bfd,
2c2fa1
 
2c2fa1
       size = bfd_get_reloc_size (howto);
2c2fa1
       buf = (bfd_byte *) bfd_zmalloc (size);
2c2fa1
-      if (buf == NULL)
2c2fa1
+      if (buf == NULL && size != 0)
2c2fa1
 	return FALSE;
2c2fa1
 
2c2fa1
       rstat = _bfd_relocate_contents (howto, output_bfd,
2c2fa1
--- a/bfd/cpu-ns32k.c
2c2fa1
+++ b/bfd/cpu-ns32k.c
2c2fa1
@@ -585,8 +585,9 @@ _bfd_do_ns32k_reloc_contents (reloc_howto_type *howto,
2c2fa1
   switch (size)
2c2fa1
     {
2c2fa1
     default:
2c2fa1
-    case 0:
2c2fa1
       abort ();
2c2fa1
+    case 0:
2c2fa1
+      return bfd_reloc_ok;
2c2fa1
     case 1:
2c2fa1
     case 2:
2c2fa1
     case 4:
2c2fa1
--- a/bfd/ecoff.c
2c2fa1
+++ b/bfd/ecoff.c
2c2fa1
@@ -3999,7 +3999,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
2c2fa1
 
2c2fa1
       size = bfd_get_reloc_size (rel.howto);
2c2fa1
       buf = (bfd_byte *) bfd_zmalloc (size);
2c2fa1
-      if (buf == NULL)
2c2fa1
+      if (buf == NULL && size != 0)
2c2fa1
 	return FALSE;
2c2fa1
       rstat = _bfd_relocate_contents (rel.howto, output_bfd,
2c2fa1
 				      (bfd_vma) addend, buf);
2c2fa1
--- a/bfd/elf-hppa.h
2c2fa1
+++ b/bfd/elf-hppa.h
2c2fa1
@@ -47,7 +47,7 @@
2c2fa1
 
2c2fa1
 static reloc_howto_type elf_hppa_howto_table[ELF_HOWTO_TABLE_SIZE] =
2c2fa1
 {
2c2fa1
-  { R_PARISC_NONE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
2c2fa1
+  { R_PARISC_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont,
2c2fa1
     bfd_elf_generic_reloc, "R_PARISC_NONE", FALSE, 0, 0, FALSE },
2c2fa1
 
2c2fa1
   /* The values in DIR32 are to placate the check in
2c2fa1
--- a/bfd/elf-m10200.c
2c2fa1
+++ b/bfd/elf-m10200.c
2c2fa1
@@ -46,11 +46,11 @@ static reloc_howto_type elf_mn10200_howto_table[] =
2c2fa1
   /* Dummy relocation.  Does nothing.  */
2c2fa1
   HOWTO (R_MN10200_NONE,
2c2fa1
 	 0,
2c2fa1
-	 2,
2c2fa1
-	 16,
2c2fa1
+	 3,
2c2fa1
+	 0,
2c2fa1
 	 FALSE,
2c2fa1
 	 0,
2c2fa1
-	 complain_overflow_bitfield,
2c2fa1
+	 complain_overflow_dont,
2c2fa1
 	 bfd_elf_generic_reloc,
2c2fa1
 	 "R_MN10200_NONE",
2c2fa1
 	 FALSE,
2c2fa1
--- a/bfd/elf-m10300.c
2c2fa1
+++ b/bfd/elf-m10300.c
2c2fa1
@@ -142,11 +142,11 @@ static reloc_howto_type elf_mn10300_howto_table[] =
2c2fa1
   /* Dummy relocation.  Does nothing.  */
2c2fa1
   HOWTO (R_MN10300_NONE,
2c2fa1
 	 0,
2c2fa1
-	 2,
2c2fa1
-	 16,
2c2fa1
+	 3,
2c2fa1
+	 0,
2c2fa1
 	 FALSE,
2c2fa1
 	 0,
2c2fa1
-	 complain_overflow_bitfield,
2c2fa1
+	 complain_overflow_dont,
2c2fa1
 	 bfd_elf_generic_reloc,
2c2fa1
 	 "R_MN10300_NONE",
2c2fa1
 	 FALSE,
2c2fa1
--- a/bfd/elf32-arc.c
2c2fa1
+++ b/bfd/elf32-arc.c
2c2fa1
@@ -58,8 +58,8 @@ static reloc_howto_type elf_arc_howto_table[] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_ARC_NONE,		/* Type.  */
2c2fa1
 	 0,			/* Rightshift.  */
2c2fa1
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-	 32,			/* Bitsize.  */
2c2fa1
+	 3,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+	 0,			/* Bitsize.  */
2c2fa1
 	 FALSE,			/* PC_relative.  */
2c2fa1
 	 0,			/* Bitpos.  */
2c2fa1
 	 complain_overflow_bitfield, /* Complain_on_overflow.  */
2c2fa1
--- a/bfd/elf32-arm.c
2c2fa1
+++ b/bfd/elf32-arm.c
2c2fa1
@@ -79,7 +79,7 @@ static reloc_howto_type elf32_arm_howto_table_1[] =
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_ARM_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf32-avr.c
2c2fa1
+++ b/bfd/elf32-avr.c
2c2fa1
@@ -121,11 +121,11 @@ static reloc_howto_type elf_avr_howto_table[] =
2c2fa1
 {
2c2fa1
   HOWTO (R_AVR_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_AVR_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-bfin.c
2c2fa1
+++ b/bfd/elf32-bfin.c
2c2fa1
@@ -423,11 +423,11 @@ static reloc_howto_type bfin_howto_table [] =
2c2fa1
   /* This reloc does nothing. .  */
2c2fa1
   HOWTO (R_BFIN_UNUSED0,	/* type.  */
2c2fa1
 	 0,			/* rightshift.  */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-	 32,			/* bitsize.  */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+	 0,			/* bitsize.  */
2c2fa1
 	 FALSE,			/* pc_relative.  */
2c2fa1
 	 0,			/* bitpos.  */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow.  */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow.  */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function.  */
2c2fa1
 	 "R_BFIN_UNUSED0",	/* name.  */
2c2fa1
 	 FALSE,			/* partial_inplace.  */
2c2fa1
@@ -451,11 +451,11 @@ static reloc_howto_type bfin_howto_table [] =
2c2fa1
 
2c2fa1
   HOWTO (R_BFIN_UNUSED1,	/* type.  */
2c2fa1
 	 0,			/* rightshift.  */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-	 32,			/* bitsize.  */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+	 0,			/* bitsize.  */
2c2fa1
 	 FALSE,			/* pc_relative.  */
2c2fa1
 	 0,			/* bitpos.  */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow.  */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow.  */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function.  */
2c2fa1
 	 "R_BFIN_UNUSED1",	/* name.  */
2c2fa1
 	 FALSE,			/* partial_inplace.  */
2c2fa1
@@ -581,8 +581,8 @@ static reloc_howto_type bfin_howto_table [] =
2c2fa1
 
2c2fa1
   HOWTO (R_BFIN_UNUSEDB,	/* type.  */
2c2fa1
 	 0,			/* rightshift.  */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-	 32,			/* bitsize.  */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+	 0,			/* bitsize.  */
2c2fa1
 	 FALSE,			/* pc_relative.  */
2c2fa1
 	 0,			/* bitpos.  */
2c2fa1
 	 complain_overflow_dont, /* complain_on_overflow.  */
2c2fa1
@@ -595,8 +595,8 @@ static reloc_howto_type bfin_howto_table [] =
2c2fa1
 
2c2fa1
   HOWTO (R_BFIN_UNUSEDC,	/* type.  */
2c2fa1
 	 0,			/* rightshift.  */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-	 32,			/* bitsize.  */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+	 0,			/* bitsize.  */
2c2fa1
 	 FALSE,			/* pc_relative.  */
2c2fa1
 	 0,			/* bitpos.  */
2c2fa1
 	 complain_overflow_dont, /* complain_on_overflow.  */
2c2fa1
--- a/bfd/elf32-cr16.c
2c2fa1
+++ b/bfd/elf32-cr16.c
2c2fa1
@@ -115,8 +115,8 @@ static reloc_howto_type cr16_elf_howto_table[] =
2c2fa1
 {
2c2fa1
   HOWTO (R_CR16_NONE,              /* type */
2c2fa1
          0,                        /* rightshift */
2c2fa1
-         2,                        /* size */
2c2fa1
-         32,                       /* bitsize */
2c2fa1
+         3,                        /* size */
2c2fa1
+         0,                        /* bitsize */
2c2fa1
          FALSE,                    /* pc_relative */
2c2fa1
          0,                        /* bitpos */
2c2fa1
          complain_overflow_dont,   /* complain_on_overflow */
2c2fa1
--- a/bfd/elf32-cris.c
2c2fa1
+++ b/bfd/elf32-cris.c
2c2fa1
@@ -40,11 +40,11 @@ static reloc_howto_type cris_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_CRIS_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_CRIS_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-crx.c
2c2fa1
+++ b/bfd/elf32-crx.c
2c2fa1
@@ -82,8 +82,8 @@ static reloc_howto_type crx_elf_howto_table[] =
2c2fa1
 {
2c2fa1
   HOWTO (R_CRX_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
 	 complain_overflow_dont,/* complain_on_overflow */
2c2fa1
--- a/bfd/elf32-d10v.c
2c2fa1
+++ b/bfd/elf32-d10v.c
2c2fa1
@@ -33,8 +33,8 @@ static reloc_howto_type elf_d10v_howto_table[] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_D10V_NONE,		/* Type.  */
2c2fa1
 	 0,			/* Rightshift.  */
2c2fa1
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-	 32,			/* Bitsize.  */
2c2fa1
+	 3,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+	 0,			/* Bitsize.  */
2c2fa1
 	 FALSE,			/* PC_relative.  */
2c2fa1
 	 0,			/* Bitpos.  */
2c2fa1
 	 complain_overflow_dont,/* Complain_on_overflow.  */
2c2fa1
--- a/bfd/elf32-d30v.c
2c2fa1
+++ b/bfd/elf32-d30v.c
2c2fa1
@@ -254,11 +254,11 @@ static reloc_howto_type elf_d30v_howto_table[] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_D30V_NONE,		/* Type.  */
2c2fa1
 	 0,			/* Rightshift.  */
2c2fa1
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-	 32,			/* Bitsize.  */
2c2fa1
+	 3,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+	 0,			/* Bitsize.  */
2c2fa1
 	 FALSE,			/* PC_relative.  */
2c2fa1
 	 0,			/* Bitpos.  */
2c2fa1
-	 complain_overflow_bitfield, /* Complain_on_overflow.  */
2c2fa1
+	 complain_overflow_dont, /* Complain_on_overflow.  */
2c2fa1
 	 bfd_elf_generic_reloc,	/* Special_function.  */
2c2fa1
 	 "R_D30V_NONE",		/* Name.  */
2c2fa1
 	 FALSE,			/* Partial_inplace.  */
2c2fa1
--- a/bfd/elf32-dlx.c
2c2fa1
+++ b/bfd/elf32-dlx.c
2c2fa1
@@ -237,7 +237,7 @@ static reloc_howto_type dlx_elf_howto_table[]=
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_DLX_NONE,            /* Type. */
2c2fa1
 	 0,                     /* Rightshift.  */
2c2fa1
-	 0,                     /* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+	 3,                     /* size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
 	 0,                     /* Bitsize.  */
2c2fa1
 	 FALSE,                 /* PC_relative.  */
2c2fa1
 	 0,                     /* Bitpos.  */
2c2fa1
--- a/bfd/elf32-epiphany.c
2c2fa1
+++ b/bfd/elf32-epiphany.c
2c2fa1
@@ -63,7 +63,7 @@ static reloc_howto_type epiphany_elf_howto_table [] =
2c2fa1
 	  pr)                   /* pcrel_offset */
2c2fa1
 
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
-  AHOW (R_EPIPHANY_NONE,    0, 0,32, FALSE, 0, complain_overflow_dont,     "R_EPIPHANY_NONE",        0,          0),
2c2fa1
+  AHOW (R_EPIPHANY_NONE,    0, 3,0, FALSE, 0, complain_overflow_dont,     "R_EPIPHANY_NONE",        0,          0),
2c2fa1
 
2c2fa1
   /* 8 bit absolute (not likely) */
2c2fa1
   AHOW (R_EPIPHANY_8,       0, 0, 8, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_8",      0x000000ff, 0x000000ff),
2c2fa1
--- a/bfd/elf32-fr30.c
2c2fa1
+++ b/bfd/elf32-fr30.c
2c2fa1
@@ -37,11 +37,11 @@ static reloc_howto_type fr30_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_FR30_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_FR30_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-frv.c
2c2fa1
+++ b/bfd/elf32-frv.c
2c2fa1
@@ -34,11 +34,11 @@ static reloc_howto_type elf32_frv_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_FRV_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_FRV_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-h8300.c
2c2fa1
+++ b/bfd/elf32-h8300.c
2c2fa1
@@ -61,7 +61,7 @@ static reloc_howto_type h8_elf_howto_table[] =
2c2fa1
 #define R_H8_NONE_X 0
2c2fa1
   HOWTO (R_H8_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf32-i370.c
2c2fa1
+++ b/bfd/elf32-i370.c
2c2fa1
@@ -40,11 +40,11 @@ static reloc_howto_type i370_elf_howto_raw[] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_I370_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_I370_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-i386.c
2c2fa1
+++ b/bfd/elf32-i386.c
2c2fa1
@@ -37,7 +37,7 @@
2c2fa1
 
2c2fa1
 static reloc_howto_type elf_howto_table[]=
2c2fa1
 {
2c2fa1
-  HOWTO(R_386_NONE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
2c2fa1
+  HOWTO(R_386_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont,
2c2fa1
 	bfd_elf_generic_reloc, "R_386_NONE",
2c2fa1
 	TRUE, 0x00000000, 0x00000000, FALSE),
2c2fa1
   HOWTO(R_386_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
2c2fa1
--- a/bfd/elf32-i860.c
2c2fa1
+++ b/bfd/elf32-i860.c
2c2fa1
@@ -264,11 +264,11 @@ static reloc_howto_type elf32_i860_howto_table [] =
2c2fa1
   /* This relocation does nothing.  */
2c2fa1
   HOWTO (R_860_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_860_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-i960.c
2c2fa1
+++ b/bfd/elf32-i960.c
2c2fa1
@@ -83,7 +83,7 @@ elf32_i960_relocate (bfd *abfd ATTRIBUTE_UNUSED,
2c2fa1
 
2c2fa1
 static reloc_howto_type elf_howto_table[]=
2c2fa1
 {
2c2fa1
-  HOWTO (R_960_NONE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield,
2c2fa1
+  HOWTO (R_960_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont,
2c2fa1
 	 elf32_i960_relocate, "R_960_NONE", TRUE,
2c2fa1
 	 0x00000000, 0x00000000, FALSE),
2c2fa1
   EMPTY_HOWTO (1),
2c2fa1
--- a/bfd/elf32-ip2k.c
2c2fa1
+++ b/bfd/elf32-ip2k.c
2c2fa1
@@ -141,7 +141,7 @@ static reloc_howto_type ip2k_elf_howto_table [] =
2c2fa1
           pr)                   /* pcrel_offset */
2c2fa1
 
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
-  IP2K_HOWTO (R_IP2K_NONE, 0,2,32, FALSE, 0, "R_IP2K_NONE", 0, 0),
2c2fa1
+  IP2K_HOWTO (R_IP2K_NONE, 0,3,0, FALSE, 0, "R_IP2K_NONE", 0, 0),
2c2fa1
   /* A 16 bit absolute relocation.  */
2c2fa1
   IP2K_HOWTO (R_IP2K_16, 0,1,16, FALSE, 0, "R_IP2K_16", 0, 0xffff),
2c2fa1
   /* A 32 bit absolute relocation.  */
2c2fa1
--- a/bfd/elf32-iq2000.c
2c2fa1
+++ b/bfd/elf32-iq2000.c
2c2fa1
@@ -34,11 +34,11 @@ static reloc_howto_type iq2000_elf_howto_table [] =
2c2fa1
 
2c2fa1
   HOWTO (R_IQ2000_NONE,		     /* type */
2c2fa1
 	 0,			     /* rightshift */
2c2fa1
-	 2,			     /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			     /* bitsize */
2c2fa1
+	 3,			     /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			     /* bitsize */
2c2fa1
 	 FALSE,			     /* pc_relative */
2c2fa1
 	 0,			     /* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont,     /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	     /* special_function */
2c2fa1
 	 "R_IQ2000_NONE",	     /* name */
2c2fa1
 	 FALSE,			     /* partial_inplace */
2c2fa1
--- a/bfd/elf32-lm32.c
2c2fa1
+++ b/bfd/elf32-lm32.c
2c2fa1
@@ -262,11 +262,11 @@ static reloc_howto_type lm32_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_LM32_NONE,               /* type */
2c2fa1
          0,                         /* rightshift */
2c2fa1
-         2,                         /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-         32,                        /* bitsize */
2c2fa1
+         3,                         /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+         0,                         /* bitsize */
2c2fa1
          FALSE,                     /* pc_relative */
2c2fa1
          0,                         /* bitpos */
2c2fa1
-         complain_overflow_bitfield,/* complain_on_overflow */
2c2fa1
+         complain_overflow_dont,    /* complain_on_overflow */
2c2fa1
          bfd_elf_generic_reloc,     /* special_function */
2c2fa1
          "R_LM32_NONE",             /* name */
2c2fa1
          FALSE,                     /* partial_inplace */
2c2fa1
--- a/bfd/elf32-m32c.c
2c2fa1
+++ b/bfd/elf32-m32c.c
2c2fa1
@@ -47,11 +47,11 @@ static reloc_howto_type m32c_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_M32C_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_M32C_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-m32r.c
2c2fa1
+++ b/bfd/elf32-m32r.c
2c2fa1
@@ -474,11 +474,11 @@ static reloc_howto_type m32r_elf_howto_table[] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_M32R_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_M32R_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-m68hc11.c
2c2fa1
+++ b/bfd/elf32-m68hc11.c
2c2fa1
@@ -65,8 +65,8 @@ static reloc_howto_type elf_m68hc11_howto_table[] = {
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_M68HC11_NONE,	/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
 	 complain_overflow_dont,/* complain_on_overflow */
2c2fa1
--- a/bfd/elf32-m68hc12.c
2c2fa1
+++ b/bfd/elf32-m68hc12.c
2c2fa1
@@ -107,8 +107,8 @@ static reloc_howto_type elf_m68hc11_howto_table[] = {
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_M68HC11_NONE,	/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
 	 complain_overflow_dont,/* complain_on_overflow */
2c2fa1
--- a/bfd/elf32-m68k.c
2c2fa1
+++ b/bfd/elf32-m68k.c
2c2fa1
@@ -31,7 +31,7 @@ elf_m68k_discard_copies (struct elf_link_hash_entry *, void *);
2c2fa1
 
2c2fa1
 static reloc_howto_type howto_table[] =
2c2fa1
 {
2c2fa1
-  HOWTO(R_68K_NONE,       0, 0, 0, FALSE,0, complain_overflow_dont,     bfd_elf_generic_reloc, "R_68K_NONE",      FALSE, 0, 0x00000000,FALSE),
2c2fa1
+  HOWTO(R_68K_NONE,       0, 3, 0, FALSE,0, complain_overflow_dont,     bfd_elf_generic_reloc, "R_68K_NONE",      FALSE, 0, 0x00000000,FALSE),
2c2fa1
   HOWTO(R_68K_32,         0, 2,32, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_32",        FALSE, 0, 0xffffffff,FALSE),
2c2fa1
   HOWTO(R_68K_16,         0, 1,16, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_16",        FALSE, 0, 0x0000ffff,FALSE),
2c2fa1
   HOWTO(R_68K_8,          0, 0, 8, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_8",         FALSE, 0, 0x000000ff,FALSE),
2c2fa1
--- a/bfd/elf32-mcore.c
2c2fa1
+++ b/bfd/elf32-mcore.c
2c2fa1
@@ -110,11 +110,11 @@ static reloc_howto_type mcore_elf_howto_raw[] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_MCORE_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield,  /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont,  /* complain_on_overflow */
2c2fa1
 	 NULL,                  /* special_function */
2c2fa1
 	 "R_MCORE_NONE",	/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-mep.c
2c2fa1
+++ b/bfd/elf32-mep.c
2c2fa1
@@ -42,7 +42,7 @@ static bfd_reloc_status_type mep_reloc (bfd *, arelent *, struct bfd_symbol *,
2c2fa1
 static reloc_howto_type mep_elf_howto_table [] =
2c2fa1
 {
2c2fa1
   /* type, size, bits, leftshift, rightshift, pcrel, OD/OS/OU, mask.  */
2c2fa1
-  MEPREL (R_MEP_NONE,     0,  0, 0, 0, 0, N, 0),
2c2fa1
+  MEPREL (R_MEP_NONE,     3,  0, 0, 0, 0, N, 0),
2c2fa1
   MEPREL (R_RELC,         0,  0, 0, 0, 0, N, 0),
2c2fa1
   /* MEPRELOC:HOWTO */
2c2fa1
     /* This section generated from bfd/mep-relocs.pl from include/elf/mep.h.  */
2c2fa1
--- a/bfd/elf32-metag.c
2c2fa1
+++ b/bfd/elf32-metag.c
2c2fa1
@@ -142,7 +142,7 @@ static reloc_howto_type elf_metag_howto_table[] =
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_METAG_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf32-microblaze.c
2c2fa1
+++ b/bfd/elf32-microblaze.c
2c2fa1
@@ -44,11 +44,11 @@ static reloc_howto_type microblaze_elf_howto_raw[] =
2c2fa1
    /* This reloc does nothing.  */
2c2fa1
    HOWTO (R_MICROBLAZE_NONE,	/* Type.  */
2c2fa1
           0,			/* Rightshift.  */
2c2fa1
-          2,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-          32,			/* Bitsize.  */
2c2fa1
+          3,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+          0,			/* Bitsize.  */
2c2fa1
           FALSE,		/* PC_relative.  */
2c2fa1
           0,			/* Bitpos.  */
2c2fa1
-          complain_overflow_bitfield,  /* Complain on overflow.  */
2c2fa1
+          complain_overflow_dont,  /* Complain on overflow.  */
2c2fa1
           NULL,                  /* Special Function.  */
2c2fa1
           "R_MICROBLAZE_NONE", 	/* Name.  */
2c2fa1
           FALSE,		/* Partial Inplace.  */
2c2fa1
@@ -179,11 +179,11 @@ static reloc_howto_type microblaze_elf_howto_raw[] =
2c2fa1
    /* This reloc does nothing.  Used for relaxation.  */
2c2fa1
    HOWTO (R_MICROBLAZE_64_NONE,	/* Type.  */
2c2fa1
           0,			/* Rightshift.  */
2c2fa1
-          2,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-          32,			/* Bitsize.  */
2c2fa1
+          3,			/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+          0,			/* Bitsize.  */
2c2fa1
           TRUE,			/* PC_relative.  */
2c2fa1
           0,			/* Bitpos.  */
2c2fa1
-          complain_overflow_bitfield,  /* Complain on overflow.  */
2c2fa1
+          complain_overflow_dont, /* Complain on overflow.  */
2c2fa1
           NULL,                  /* Special Function.  */
2c2fa1
           "R_MICROBLAZE_64_NONE",/* Name.  */
2c2fa1
           FALSE,		/* Partial Inplace.  */
2c2fa1
--- a/bfd/elf32-mips.c
2c2fa1
+++ b/bfd/elf32-mips.c
2c2fa1
@@ -107,7 +107,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_MIPS_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf32-moxie.c
2c2fa1
+++ b/bfd/elf32-moxie.c
2c2fa1
@@ -34,11 +34,11 @@ static reloc_howto_type moxie_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_MOXIE_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_MOXIE_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
#--- a/bfd/elf32-msp430.c
2c2fa1
#+++ b/bfd/elf32-msp430.c
2c2fa1
#@@ -30,11 +30,11 @@ static reloc_howto_type elf_msp430_howto_table[] =
2c2fa1
# {
2c2fa1
#   HOWTO (R_MSP430_NONE,		/* type */
2c2fa1
# 	 0,			/* rightshift */
2c2fa1
#-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#-	 32,			/* bitsize */
2c2fa1
#+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#+	 0,			/* bitsize */
2c2fa1
# 	 FALSE,			/* pc_relative */
2c2fa1
# 	 0,			/* bitpos */
2c2fa1
#-	 complain_overflow_bitfield,/* complain_on_overflow */
2c2fa1
#+	 complain_overflow_dont,/* complain_on_overflow */
2c2fa1
# 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
# 	 "R_MSP430_NONE",	/* name */
2c2fa1
# 	 FALSE,			/* partial_inplace */
2c2fa1
#@@ -197,11 +197,11 @@ static reloc_howto_type elf_msp430x_howto_table[] =
2c2fa1
# {
2c2fa1
#   HOWTO (R_MSP430_NONE,		/* type */
2c2fa1
# 	 0,			/* rightshift */
2c2fa1
#-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#-	 32,			/* bitsize */
2c2fa1
#+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#+	 0,			/* bitsize */
2c2fa1
# 	 FALSE,			/* pc_relative */
2c2fa1
# 	 0,			/* bitpos */
2c2fa1
#-	 complain_overflow_bitfield,/* complain_on_overflow */
2c2fa1
#+	 complain_overflow_dont,/* complain_on_overflow */
2c2fa1
# 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
# 	 "R_MSP430_NONE",	/* name */
2c2fa1
# 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-mt.c
2c2fa1
+++ b/bfd/elf32-mt.c
2c2fa1
@@ -48,8 +48,8 @@ static reloc_howto_type mt_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_MT_NONE,           /* type */
2c2fa1
           0,                      /* rightshift */
2c2fa1
-          2,                      /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-          32,                     /* bitsize */
2c2fa1
+          3,                      /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+          0,                      /* bitsize */
2c2fa1
           FALSE,                  /* pc_relative */
2c2fa1
           0,                      /* bitpos */
2c2fa1
           complain_overflow_dont, /* complain_on_overflow */
2c2fa1
#--- a/bfd/elf32-nds32.c
2c2fa1
#+++ b/bfd/elf32-nds32.c
2c2fa1
#@@ -321,11 +321,11 @@ static reloc_howto_type nds32_elf_howto_table[] =
2c2fa1
#   /* This reloc does nothing.  */
2c2fa1
#   HOWTO (R_NDS32_NONE,		/* type */
2c2fa1
# 	 0,			/* rightshift */
2c2fa1
#-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#-	 32,			/* bitsize */
2c2fa1
#+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#+	 0,			/* bitsize */
2c2fa1
# 	 FALSE,			/* pc_relative */
2c2fa1
# 	 0,			/* bitpos */
2c2fa1
#-	 complain_overflow_bitfield,	/* complain_on_overflow */
2c2fa1
#+	 complain_overflow_dont,	/* complain_on_overflow */
2c2fa1
# 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
# 	 "R_NDS32_NONE",	/* name */
2c2fa1
# 	 FALSE,			/* partial_inplace */
2c2fa1
#@@ -4186,11 +4186,10 @@ nds32_relocate_contents (reloc_howto_type *howto, bfd *input_bfd,
2c2fa1
#   switch (size)
2c2fa1
#     {
2c2fa1
#     default:
2c2fa1
#-    case 0:
2c2fa1
#-    case 1:
2c2fa1
#-    case 8:
2c2fa1
#       abort ();
2c2fa1
#       break;
2c2fa1
#+    case 0:
2c2fa1
#+      return bfd_reloc_ok;
2c2fa1
#     case 2:
2c2fa1
#       x = bfd_getb16 (location);
2c2fa1
#       break;
2c2fa1
--- a/bfd/elf32-nios2.c
2c2fa1
+++ b/bfd/elf32-nios2.c
2c2fa1
@@ -80,7 +80,7 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = {
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_NIOS2_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
#--- a/bfd/elf32-or1k.c
2c2fa1
#+++ b/bfd/elf32-or1k.c
2c2fa1
#@@ -60,8 +60,8 @@ static reloc_howto_type or1k_elf_howto_table[] =
2c2fa1
#   /* This reloc does nothing.  */
2c2fa1
#   HOWTO (R_OR1K_NONE,           /* type */
2c2fa1
#          0,                     /* rightshift */
2c2fa1
#-         2,                     /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#-         32,                    /* bitsize */
2c2fa1
#+         3,                     /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#+         0,                     /* bitsize */
2c2fa1
#          FALSE,                 /* pc_relative */
2c2fa1
#          0,                     /* bitpos */
2c2fa1
#          complain_overflow_dont, /* complain_on_overflow */
2c2fa1
--- a/bfd/elf32-pj.c
2c2fa1
+++ b/bfd/elf32-pj.c
2c2fa1
@@ -113,7 +113,7 @@ static reloc_howto_type pj_elf_howto_table[] =
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_PJ_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf32-ppc.c
2c2fa1
+++ b/bfd/elf32-ppc.c
2c2fa1
@@ -187,8 +187,8 @@ static reloc_howto_type ppc_elf_howto_raw[] = {
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_PPC_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
 	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
@@ -2066,9 +2066,6 @@ ppc_elf_addr16_ha_reloc (bfd *abfd ATTRIBUTE_UNUSED,
2c2fa1
       return bfd_reloc_ok;
2c2fa1
     }
2c2fa1
 
2c2fa1
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
2c2fa1
-    return bfd_reloc_outofrange;
2c2fa1
-
2c2fa1
   if (bfd_is_com_section (symbol->section))
2c2fa1
     relocation = 0;
2c2fa1
   else
2c2fa1
--- a/bfd/elf32-rl78.c
2c2fa1
+++ b/bfd/elf32-rl78.c
2c2fa1
@@ -37,7 +37,7 @@
2c2fa1
 
2c2fa1
 static reloc_howto_type rl78_elf_howto_table [] =
2c2fa1
 {
2c2fa1
-  RL78REL (NONE,         0,  0, 0, dont,     FALSE),
2c2fa1
+  RL78REL (NONE,         3,  0, 0, dont,     FALSE),
2c2fa1
   RL78REL (DIR32,        2, 32, 0, signed,   FALSE),
2c2fa1
   RL78REL (DIR24S,       2, 24, 0, signed,   FALSE),
2c2fa1
   RL78REL (DIR16,        1, 16, 0, dont,     FALSE),
2c2fa1
--- a/bfd/elf32-rx.c
2c2fa1
+++ b/bfd/elf32-rx.c
2c2fa1
@@ -49,7 +49,7 @@ void rx_dump_symtab (bfd *, void *, void *);
2c2fa1
 
2c2fa1
 static reloc_howto_type rx_elf_howto_table [] =
2c2fa1
 {
2c2fa1
-  RXREL (NONE,         0,  0, 0, dont,     FALSE),
2c2fa1
+  RXREL (NONE,         3,  0, 0, dont,     FALSE),
2c2fa1
   RXREL (DIR32,        2, 32, 0, signed,   FALSE),
2c2fa1
   RXREL (DIR24S,       2, 24, 0, signed,   FALSE),
2c2fa1
   RXREL (DIR16,        1, 16, 0, dont,     FALSE),
2c2fa1
--- a/bfd/elf32-s390.c
2c2fa1
+++ b/bfd/elf32-s390.c
2c2fa1
@@ -39,7 +39,7 @@ static reloc_howto_type elf_howto_table[] =
2c2fa1
 {
2c2fa1
   HOWTO (R_390_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf32-score.c
2c2fa1
+++ b/bfd/elf32-score.c
2c2fa1
@@ -645,7 +645,7 @@ static reloc_howto_type elf32_score_howto_table[] =
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_SCORE_NONE,          /* type */
2c2fa1
          0,                     /* rightshift */
2c2fa1
-         0,                     /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+         3,                     /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
          0,                     /* bitsize */
2c2fa1
          FALSE,                 /* pc_relative */
2c2fa1
          0,                     /* bitpos */
2c2fa1
--- a/bfd/elf32-score7.c
2c2fa1
+++ b/bfd/elf32-score7.c
2c2fa1
@@ -546,7 +546,7 @@ static reloc_howto_type elf32_score_howto_table[] =
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_SCORE_NONE,          /* type */
2c2fa1
          0,                     /* rightshift */
2c2fa1
-         0,                     /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+         3,                     /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
          0,                     /* bitsize */
2c2fa1
          FALSE,                 /* pc_relative */
2c2fa1
          0,                     /* bitpos */
2c2fa1
--- a/bfd/elf32-sh-relocs.h
2c2fa1
+++ b/bfd/elf32-sh-relocs.h
2c2fa1
@@ -20,7 +20,7 @@
2c2fa1
 /* No relocation.  */
2c2fa1
   HOWTO (R_SH_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf32-sh.c
2c2fa1
+++ b/bfd/elf32-sh.c
2c2fa1
@@ -256,10 +256,8 @@ sh_elf_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol_in,
2c2fa1
     return bfd_reloc_undefined;
2c2fa1
 
2c2fa1
   /* PR 17512: file: 9891ca98.  */
2c2fa1
-  if (addr > bfd_get_section_limit (abfd, input_section)
2c2fa1
-      - bfd_get_reloc_size (reloc_entry->howto)
2c2fa1
-      || bfd_get_reloc_size (reloc_entry->howto)
2c2fa1
-      > bfd_get_section_limit (abfd, input_section))
2c2fa1
+  if (addr * bfd_octets_per_byte (abfd) + bfd_get_reloc_size (reloc_entry->howto)
2c2fa1
+      > bfd_get_section_limit_octets (abfd, input_section))
2c2fa1
     return bfd_reloc_outofrange;
2c2fa1
 
2c2fa1
   if (bfd_is_com_section (symbol_in->section))
2c2fa1
--- a/bfd/elf32-spu.c
2c2fa1
+++ b/bfd/elf32-spu.c
2c2fa1
@@ -37,7 +37,7 @@ static bfd_reloc_status_type spu_elf_rel9 (bfd *, arelent *, asymbol *,
2c2fa1
    array, so it must be declared in the order of that type.  */
2c2fa1
 
2c2fa1
 static reloc_howto_type elf_howto_table[] = {
2c2fa1
-  HOWTO (R_SPU_NONE,       0, 0,  0, FALSE,  0, complain_overflow_dont,
2c2fa1
+  HOWTO (R_SPU_NONE,       0, 3,  0, FALSE,  0, complain_overflow_dont,
2c2fa1
 	 bfd_elf_generic_reloc, "SPU_NONE",
2c2fa1
 	 FALSE, 0, 0x00000000, FALSE),
2c2fa1
   HOWTO (R_SPU_ADDR10,     4, 2, 10, FALSE, 14, complain_overflow_bitfield,
2c2fa1
--- a/bfd/elf32-tic6x.c
2c2fa1
+++ b/bfd/elf32-tic6x.c
2c2fa1
@@ -152,7 +152,7 @@ static reloc_howto_type elf32_tic6x_howto_table[] =
2c2fa1
 {
2c2fa1
   HOWTO (R_C6000_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
@@ -820,7 +820,7 @@ static reloc_howto_type elf32_tic6x_howto_table_rel[] =
2c2fa1
 {
2c2fa1
   HOWTO (R_C6000_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf32-tilepro.c
2c2fa1
+++ b/bfd/elf32-tilepro.c
2c2fa1
@@ -34,11 +34,11 @@ static reloc_howto_type tilepro_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_TILEPRO_NONE,	/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_TILEPRO_NONE",	/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-v850.c
2c2fa1
+++ b/bfd/elf32-v850.c
2c2fa1
@@ -895,11 +895,11 @@ static reloc_howto_type v850_elf_howto_table[] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_V850_NONE,			/* Type.  */
2c2fa1
 	 0,				/* Rightshift.  */
2c2fa1
-	 2,				/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
-	 32,				/* Bitsize.  */
2c2fa1
+	 3,				/* Size (0 = byte, 1 = short, 2 = long).  */
2c2fa1
+	 0,				/* Bitsize.  */
2c2fa1
 	 FALSE,				/* PC_relative.  */
2c2fa1
 	 0,				/* Bitpos.  */
2c2fa1
-	 complain_overflow_bitfield,	/* Complain_on_overflow.  */
2c2fa1
+	 complain_overflow_dont,	/* Complain_on_overflow.  */
2c2fa1
 	 bfd_elf_generic_reloc,		/* Special_function.  */
2c2fa1
 	 "R_V850_NONE",			/* Name.  */
2c2fa1
 	 FALSE,				/* Partial_inplace.  */
2c2fa1
--- a/bfd/elf32-vax.c
2c2fa1
+++ b/bfd/elf32-vax.c
2c2fa1
@@ -56,7 +56,7 @@ static bfd_boolean elf32_vax_print_private_bfd_data (bfd *, void *);
2c2fa1
 static reloc_howto_type howto_table[] = {
2c2fa1
   HOWTO (R_VAX_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
#--- a/bfd/elf32-visium.c
2c2fa1
#+++ b/bfd/elf32-visium.c
2c2fa1
#@@ -33,11 +33,11 @@ static reloc_howto_type visium_elf_howto_table[] = {
2c2fa1
#   /* This reloc does nothing.  */
2c2fa1
#   HOWTO (R_VISIUM_NONE,		/* type */
2c2fa1
# 	 0,			/* rightshift */
2c2fa1
#-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#-	 32,			/* bitsize */
2c2fa1
#+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#+	 0,			/* bitsize */
2c2fa1
# 	 FALSE,			/* pc_relative */
2c2fa1
# 	 0,			/* bitpos */
2c2fa1
#-	 complain_overflow_bitfield,	/* complain_on_overflow */
2c2fa1
#+	 complain_overflow_dont,	/* complain_on_overflow */
2c2fa1
# 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
# 	 "R_VISIUM_NONE",	/* name */
2c2fa1
# 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-xc16x.c
2c2fa1
+++ b/bfd/elf32-xc16x.c
2c2fa1
@@ -32,11 +32,11 @@ static reloc_howto_type xc16x_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_XC16X_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 16,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_XC16X_NONE",	/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-xgate.c
2c2fa1
+++ b/bfd/elf32-xgate.c
2c2fa1
@@ -52,8 +52,8 @@ static reloc_howto_type elf_xgate_howto_table[] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_XGATE_NONE, /* type */
2c2fa1
 	 0, /* rightshift */
2c2fa1
-	 2, /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32, /* bitsize */
2c2fa1
+	 3, /* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0, /* bitsize */
2c2fa1
 	 FALSE, /* pc_relative */
2c2fa1
 	 0, /* bitpos */
2c2fa1
 	 complain_overflow_dont,/* complain_on_overflow */
2c2fa1
--- a/bfd/elf32-xstormy16.c
2c2fa1
+++ b/bfd/elf32-xstormy16.c
2c2fa1
@@ -73,11 +73,11 @@ static reloc_howto_type xstormy16_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_XSTORMY16_NONE,	/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_XSTORMY16_NONE",	/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf32-xtensa.c
2c2fa1
+++ b/bfd/elf32-xtensa.c
2c2fa1
@@ -161,7 +161,7 @@ int elf32xtensa_no_literal_movement = 1;
2c2fa1
 
2c2fa1
 static reloc_howto_type elf_howto_table[] =
2c2fa1
 {
2c2fa1
-  HOWTO (R_XTENSA_NONE, 0, 0, 0, FALSE, 0, complain_overflow_dont,
2c2fa1
+  HOWTO (R_XTENSA_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont,
2c2fa1
 	 bfd_elf_xtensa_reloc, "R_XTENSA_NONE",
2c2fa1
 	 FALSE, 0, 0, FALSE),
2c2fa1
   HOWTO (R_XTENSA_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
2c2fa1
--- a/bfd/elf64-alpha.c
2c2fa1
+++ b/bfd/elf64-alpha.c
2c2fa1
@@ -486,8 +486,8 @@ static reloc_howto_type elf64_alpha_howto_table[] =
2c2fa1
 {
2c2fa1
   HOWTO (R_ALPHA_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 8,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 TRUE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
 	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
--- a/bfd/elf64-mips.c
2c2fa1
+++ b/bfd/elf64-mips.c
2c2fa1
@@ -145,7 +145,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_MIPS_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
@@ -908,7 +908,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_MIPS_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf64-mmix.c
2c2fa1
+++ b/bfd/elf64-mmix.c
2c2fa1
@@ -192,11 +192,11 @@ static reloc_howto_type elf_mmix_howto_table[] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_MMIX_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_MMIX_NONE",		/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/elf64-ppc.c
2c2fa1
+++ b/bfd/elf64-ppc.c
2c2fa1
@@ -258,8 +258,8 @@ static reloc_howto_type ppc64_elf_howto_raw[] = {
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_PPC64_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
 	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
--- a/bfd/elf64-s390.c
2c2fa1
+++ b/bfd/elf64-s390.c
2c2fa1
@@ -42,7 +42,7 @@ static reloc_howto_type elf_howto_table[] =
2c2fa1
 {
2c2fa1
   HOWTO (R_390_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf64-sh64.c
2c2fa1
+++ b/bfd/elf64-sh64.c
2c2fa1
@@ -105,7 +105,7 @@ static reloc_howto_type sh_elf64_howto_table[] = {
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_SH_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
--- a/bfd/elf64-x86-64.c
2c2fa1
+++ b/bfd/elf64-x86-64.c
2c2fa1
@@ -54,7 +54,7 @@
2c2fa1
    special_function, name, partial_inplace, src_mask, dst_mask, pcrel_offset.  */
2c2fa1
 static reloc_howto_type x86_64_elf_howto_table[] =
2c2fa1
 {
2c2fa1
-  HOWTO(R_X86_64_NONE, 0, 0, 0, FALSE, 0, complain_overflow_dont,
2c2fa1
+  HOWTO(R_X86_64_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont,
2c2fa1
 	bfd_elf_generic_reloc, "R_X86_64_NONE",	FALSE, 0x00000000, 0x00000000,
2c2fa1
 	FALSE),
2c2fa1
   HOWTO(R_X86_64_64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
2c2fa1
--- a/bfd/elflink.c
2c2fa1
+++ b/bfd/elflink.c
2c2fa1
@@ -10329,7 +10329,7 @@ elf_reloc_link_order (bfd *output_bfd,
2c2fa1
 
2c2fa1
       size = (bfd_size_type) bfd_get_reloc_size (howto);
2c2fa1
       buf = (bfd_byte *) bfd_zmalloc (size);
2c2fa1
-      if (buf == NULL)
2c2fa1
+      if (buf == NULL && size != 0)
2c2fa1
 	return FALSE;
2c2fa1
       rstat = _bfd_relocate_contents (howto, output_bfd, addend, buf);
2c2fa1
       switch (rstat)
2c2fa1
--- a/bfd/elfn32-mips.c
2c2fa1
+++ b/bfd/elfn32-mips.c
2c2fa1
@@ -108,7 +108,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
2c2fa1
   /* No relocation.  */
2c2fa1
   HOWTO (R_MIPS_NONE,		/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
 	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
#--- a/bfd/elfnn-aarch64.c
2c2fa1
#+++ b/bfd/elfnn-aarch64.c
2c2fa1
#@@ -296,7 +296,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
2c2fa1
# #if ARCH_SIZE == 64
2c2fa1
#   HOWTO (R_AARCH64_NULL,	/* type */
2c2fa1
# 	 0,			/* rightshift */
2c2fa1
#-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
# 	 0,			/* bitsize */
2c2fa1
# 	 FALSE,			/* pc_relative */
2c2fa1
# 	 0,			/* bitpos */
2c2fa1
#@@ -310,7 +310,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
2c2fa1
# #else
2c2fa1
#   HOWTO (R_AARCH64_NONE,	/* type */
2c2fa1
# 	 0,			/* rightshift */
2c2fa1
#-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
# 	 0,			/* bitsize */
2c2fa1
# 	 FALSE,			/* pc_relative */
2c2fa1
# 	 0,			/* bitpos */
2c2fa1
#@@ -1377,7 +1377,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
2c2fa1
# static reloc_howto_type elfNN_aarch64_howto_none =
2c2fa1
#   HOWTO (R_AARCH64_NONE,	/* type */
2c2fa1
# 	 0,			/* rightshift */
2c2fa1
#-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
#+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
# 	 0,			/* bitsize */
2c2fa1
# 	 FALSE,			/* pc_relative */
2c2fa1
# 	 0,			/* bitpos */
2c2fa1
#--- a/bfd/elfxx-aarch64.c
2c2fa1
#+++ b/bfd/elfxx-aarch64.c
2c2fa1
#@@ -187,6 +187,8 @@ _bfd_aarch64_elf_put_addend (bfd *abfd,
2c2fa1
#   size = bfd_get_reloc_size (howto);
2c2fa1
#   switch (size)
2c2fa1
#     {
2c2fa1
#+    case 0:
2c2fa1
#+      return status;
2c2fa1
#     case 2:
2c2fa1
#       contents = bfd_get_16 (abfd, address);
2c2fa1
#       break;
2c2fa1
--- a/bfd/elfxx-ia64.c
2c2fa1
+++ b/bfd/elfxx-ia64.c
2c2fa1
@@ -91,7 +91,7 @@ ia64_elf_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc,
2c2fa1
    TYPE field.  */
2c2fa1
 static reloc_howto_type ia64_howto_table[] =
2c2fa1
   {
2c2fa1
-    IA64_HOWTO (R_IA64_NONE,	    "NONE",	   0, FALSE, TRUE),
2c2fa1
+    IA64_HOWTO (R_IA64_NONE,	    "NONE",	   3, FALSE, TRUE),
2c2fa1
 
2c2fa1
     IA64_HOWTO (R_IA64_IMM14,	    "IMM14",	   0, FALSE, TRUE),
2c2fa1
     IA64_HOWTO (R_IA64_IMM22,	    "IMM22",	   0, FALSE, TRUE),
2c2fa1
--- a/bfd/elfxx-mips.c
2c2fa1
+++ b/bfd/elfxx-mips.c
2c2fa1
@@ -6194,11 +6194,13 @@ mips_elf_obtain_contents (reloc_howto_type *howto,
2c2fa1
 			  const Elf_Internal_Rela *relocation,
2c2fa1
 			  bfd *input_bfd, bfd_byte *contents)
2c2fa1
 {
2c2fa1
-  bfd_vma x;
2c2fa1
+  bfd_vma x = 0;
2c2fa1
   bfd_byte *location = contents + relocation->r_offset;
2c2fa1
+  unsigned int size = bfd_get_reloc_size (howto);
2c2fa1
 
2c2fa1
   /* Obtain the bytes.  */
2c2fa1
-  x = bfd_get ((8 * bfd_get_reloc_size (howto)), input_bfd, location);
2c2fa1
+  if (size != 0)
2c2fa1
+    x = bfd_get (8 * size, input_bfd, location);
2c2fa1
 
2c2fa1
   return x;
2c2fa1
 }
2c2fa1
@@ -6223,6 +6225,7 @@ mips_elf_perform_relocation (struct bfd_link_info *info,
2c2fa1
   bfd_vma x;
2c2fa1
   bfd_byte *location;
2c2fa1
   int r_type = ELF_R_TYPE (input_bfd, relocation->r_info);
2c2fa1
+  unsigned int size;
2c2fa1
 
2c2fa1
   /* Figure out where the relocation is occurring.  */
2c2fa1
   location = contents + relocation->r_offset;
2c2fa1
@@ -6316,7 +6319,9 @@ mips_elf_perform_relocation (struct bfd_link_info *info,
2c2fa1
     }
2c2fa1
 
2c2fa1
   /* Put the value into the output.  */
2c2fa1
-  bfd_put (8 * bfd_get_reloc_size (howto), input_bfd, x, location);
2c2fa1
+  size = bfd_get_reloc_size (howto);
2c2fa1
+  if (size != 0)
2c2fa1
+    bfd_put (8 * size, input_bfd, x, location);
2c2fa1
 
2c2fa1
   _bfd_mips_elf_reloc_shuffle (input_bfd, r_type, !info->relocatable,
2c2fa1
 			       location);
2c2fa1
--- a/bfd/elfxx-sparc.c
2c2fa1
+++ b/bfd/elfxx-sparc.c
2c2fa1
@@ -209,7 +209,7 @@ sparc_elf_lox10_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
2c2fa1
 
2c2fa1
 static reloc_howto_type _bfd_sparc_elf_howto_table[] =
2c2fa1
 {
2c2fa1
-  HOWTO(R_SPARC_NONE,      0,0, 0,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_NONE",    FALSE,0,0x00000000,TRUE),
2c2fa1
+  HOWTO(R_SPARC_NONE,      0,3, 0,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_NONE",    FALSE,0,0x00000000,TRUE),
2c2fa1
   HOWTO(R_SPARC_8,         0,0, 8,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_8",       FALSE,0,0x000000ff,TRUE),
2c2fa1
   HOWTO(R_SPARC_16,        0,1,16,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_16",      FALSE,0,0x0000ffff,TRUE),
2c2fa1
   HOWTO(R_SPARC_32,        0,2,32,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_32",      FALSE,0,0xffffffff,TRUE),
2c2fa1
--- a/bfd/elfxx-tilegx.c
2c2fa1
+++ b/bfd/elfxx-tilegx.c
2c2fa1
@@ -72,11 +72,11 @@ static reloc_howto_type tilegx_elf_howto_table [] =
2c2fa1
   /* This reloc does nothing.  */
2c2fa1
   HOWTO (R_TILEGX_NONE,	/* type */
2c2fa1
 	 0,			/* rightshift */
2c2fa1
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
-	 32,			/* bitsize */
2c2fa1
+	 3,			/* size (0 = byte, 1 = short, 2 = long) */
2c2fa1
+	 0,			/* bitsize */
2c2fa1
 	 FALSE,			/* pc_relative */
2c2fa1
 	 0,			/* bitpos */
2c2fa1
-	 complain_overflow_bitfield, /* complain_on_overflow */
2c2fa1
+	 complain_overflow_dont, /* complain_on_overflow */
2c2fa1
 	 bfd_elf_generic_reloc,	/* special_function */
2c2fa1
 	 "R_TILEGX_NONE",	/* name */
2c2fa1
 	 FALSE,			/* partial_inplace */
2c2fa1
--- a/bfd/linker.c
2c2fa1
+++ b/bfd/linker.c
2c2fa1
@@ -2434,7 +2434,7 @@ _bfd_generic_reloc_link_order (bfd *abfd,
2c2fa1
 
2c2fa1
       size = bfd_get_reloc_size (r->howto);
2c2fa1
       buf = (bfd_byte *) bfd_zmalloc (size);
2c2fa1
-      if (buf == NULL)
2c2fa1
+      if (buf == NULL && size != 0)
2c2fa1
 	return FALSE;
2c2fa1
       rstat = _bfd_relocate_contents (r->howto, abfd,
2c2fa1
 				      (bfd_vma) link_order->u.reloc.p->addend,
2c2fa1
--- a/bfd/nlm32-sparc.c
2c2fa1
+++ b/bfd/nlm32-sparc.c
2c2fa1
@@ -49,7 +49,7 @@ enum reloc_type
2c2fa1
 
2c2fa1
 static reloc_howto_type nlm32_sparc_howto_table[] =
2c2fa1
 {
2c2fa1
-  HOWTO (R_SPARC_NONE,    0,0, 0,FALSE,0,complain_overflow_dont,    0,"R_SPARC_NONE",    FALSE,0,0x00000000,TRUE),
2c2fa1
+  HOWTO (R_SPARC_NONE,    0,3, 0,FALSE,0,complain_overflow_dont,    0,"R_SPARC_NONE",    FALSE,0,0x00000000,TRUE),
2c2fa1
   HOWTO (R_SPARC_8,       0,0, 8,FALSE,0,complain_overflow_bitfield,0,"R_SPARC_8",       FALSE,0,0x000000ff,TRUE),
2c2fa1
   HOWTO (R_SPARC_16,      0,1,16,FALSE,0,complain_overflow_bitfield,0,"R_SPARC_16",      FALSE,0,0x0000ffff,TRUE),
2c2fa1
   HOWTO (R_SPARC_32,      0,2,32,FALSE,0,complain_overflow_bitfield,0,"R_SPARC_32",      FALSE,0,0xffffffff,TRUE),
2c2fa1
--- a/bfd/pdp11.c
2c2fa1
+++ b/bfd/pdp11.c
2c2fa1
@@ -3152,7 +3152,7 @@ aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
2c2fa1
 
2c2fa1
       size = bfd_get_reloc_size (howto);
2c2fa1
       buf = bfd_zmalloc (size);
2c2fa1
-      if (buf == NULL)
2c2fa1
+      if (buf == NULL && size != 0)
2c2fa1
 	return FALSE;
2c2fa1
       r = MY_relocate_contents (howto, flaginfo->output_bfd,
2c2fa1
 				pr->addend, buf);
2c2fa1
--- a/bfd/reloc.c
2c2fa1
+++ b/bfd/reloc.c
2c2fa1
@@ -579,7 +579,7 @@ bfd_perform_relocation (bfd *abfd,
2c2fa1
 {
2c2fa1
   bfd_vma relocation;
2c2fa1
   bfd_reloc_status_type flag = bfd_reloc_ok;
2c2fa1
-  bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd);
2c2fa1
+  bfd_size_type octets;
2c2fa1
   bfd_vma output_base = 0;
2c2fa1
   reloc_howto_type *howto = reloc_entry->howto;
2c2fa1
   asection *reloc_target_output_section;
2c2fa1
@@ -618,15 +618,12 @@ bfd_perform_relocation (bfd *abfd,
2c2fa1
 	return cont;
2c2fa1
     }
2c2fa1
 
2c2fa1
-  /* Is the address of the relocation really within the section?  */
2c2fa1
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section)
2c2fa1
-      /* PR 17512: file: c146ab8b.
2c2fa1
-	 PR 17512: file: 46dff27f.
2c2fa1
-	 Include the size of the reloc in the test for out of range addresses.  */
2c2fa1
-      - bfd_get_reloc_size (howto)
2c2fa1
-      /* PR 17512: file: 38e53ebf
2c2fa1
-	 Add make sure that there is enough room for the relocation to be applied.  */
2c2fa1
-      || bfd_get_reloc_size (howto) > bfd_get_section_limit (abfd, input_section))
2c2fa1
+  /* Is the address of the relocation really within the section?
2c2fa1
+     Include the size of the reloc in the test for out of range addresses.
2c2fa1
+     PR 17512: file: c146ab8b, 46dff27f, 38e53ebf.  */
2c2fa1
+  octets = reloc_entry->address * bfd_octets_per_byte (abfd);
2c2fa1
+  if (octets + bfd_get_reloc_size (howto)
2c2fa1
+      > bfd_get_section_limit_octets (abfd, input_section))
2c2fa1
     return bfd_reloc_outofrange;
2c2fa1
 
2c2fa1
   /* Work out which section the relocation is targeted at and the
2c2fa1
@@ -976,7 +973,7 @@ bfd_install_relocation (bfd *abfd,
2c2fa1
 {
2c2fa1
   bfd_vma relocation;
2c2fa1
   bfd_reloc_status_type flag = bfd_reloc_ok;
2c2fa1
-  bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd);
2c2fa1
+  bfd_size_type octets;
2c2fa1
   bfd_vma output_base = 0;
2c2fa1
   reloc_howto_type *howto = reloc_entry->howto;
2c2fa1
   asection *reloc_target_output_section;
2c2fa1
@@ -1009,7 +1006,9 @@ bfd_install_relocation (bfd *abfd,
2c2fa1
     }
2c2fa1
 
2c2fa1
   /* Is the address of the relocation really within the section?  */
2c2fa1
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
2c2fa1
+  octets = reloc_entry->address * bfd_octets_per_byte (abfd);
2c2fa1
+  if (octets + bfd_get_reloc_size (howto)
2c2fa1
+      > bfd_get_section_limit_octets (abfd, input_section))
2c2fa1
     return bfd_reloc_outofrange;
2c2fa1
 
2c2fa1
   /* Work out which section the relocation is targeted at and the
2c2fa1
@@ -1344,9 +1343,11 @@ _bfd_final_link_relocate (reloc_howto_type *howto,
2c2fa1
 			  bfd_vma addend)
2c2fa1
 {
2c2fa1
   bfd_vma relocation;
2c2fa1
+  bfd_size_type octets = address * bfd_octets_per_byte (input_bfd);
2c2fa1
 
2c2fa1
   /* Sanity check the address.  */
2c2fa1
-  if (address > bfd_get_section_limit (input_bfd, input_section))
2c2fa1
+  if (octets + bfd_get_reloc_size (howto)
2c2fa1
+      > bfd_get_section_limit_octets (input_bfd, input_section))
2c2fa1
     return bfd_reloc_outofrange;
2c2fa1
 
2c2fa1
   /* This function assumes that we are dealing with a basic relocation
2c2fa1
@@ -1401,8 +1402,9 @@ _bfd_relocate_contents (reloc_howto_type *howto,
2c2fa1
   switch (size)
2c2fa1
     {
2c2fa1
     default:
2c2fa1
-    case 0:
2c2fa1
       abort ();
2c2fa1
+    case 0:
2c2fa1
+      return bfd_reloc_ok;
2c2fa1
     case 1:
2c2fa1
       x = bfd_get_8 (input_bfd, location);
2c2fa1
       break;
2c2fa1
@@ -1569,8 +1571,9 @@ _bfd_clear_contents (reloc_howto_type *howto,
2c2fa1
   switch (size)
2c2fa1
     {
2c2fa1
     default:
2c2fa1
-    case 0:
2c2fa1
       abort ();
2c2fa1
+    case 0:
2c2fa1
+      return;
2c2fa1
     case 1:
2c2fa1
       x = bfd_get_8 (input_bfd, location);
2c2fa1
       break;
2c2fa1
--- a/bfd/xcofflink.c
2c2fa1
+++ b/bfd/xcofflink.c
2c2fa1
@@ -5738,7 +5738,7 @@ xcoff_reloc_link_order (bfd *output_bfd,
2c2fa1
 
2c2fa1
       size = bfd_get_reloc_size (howto);
2c2fa1
       buf = bfd_zmalloc (size);
2c2fa1
-      if (buf == NULL)
2c2fa1
+      if (buf == NULL && size != 0)
2c2fa1
 	return FALSE;
2c2fa1
 
2c2fa1
       rstat = _bfd_relocate_contents (howto, output_bfd, addend, buf);