binutils-gdb/include/elf
Alan Modra 7ba71655a4 PowerPC addpcis fix
This came up because I was looking at ld/tmpdir/addpcis.o and noticed
the odd addends on REL16DX_HA.  They ought to both be -4.  The error
crept in due REL16DX_HA howto being pc-relative (as indeed it should
be), and code at gas/write.c:1001 after this comment
	      /* Make it pc-relative.  If the back-end code has not
		 selected a pc-relative reloc, cancel the adjustment
		 we do later on all pc-relative relocs.  */
*not* cancelling the pc-relative adjustment.  So I've made a dummy
non-relative split reloc so that the generic code handles this, rather
than attempting to add hacks later in md_apply_fix which would not be
very robust.  Having the new internal reloc also makes it easy to
support

 addpcis rx,sym@ha

as an equivalent to

 addpcis rx,(sym-0f)@ha
0:

The patch also fixes overflow checking, which must test whether the
addi will overflow too since @l relocs don't have any overflow check.

Lastly, since I was poking at md_apply_fix, I arranged to have the
generic gas/write.c code emit errors for subtraction expressions where
we lack reloc support.

include/
	* elf/ppc64.h (R_PPC64_16DX_HA): New.  Expand fake reloc comment.
	* elf/ppc.h (R_PPC_16DX_HA): Likewise.
bfd/
	* reloc.c (BFD_RELOC_PPC_16DX_HA): New.
	* elf64-ppc.c (ppc64_elf_howto_raw <R_PPC64_16DX_HA>): New howto.
	(ppc64_elf_reloc_type_lookup): Translate new bfd reloc.
	(ppc64_elf_ha_reloc): Correct overflow test on REL16DX_HA.
	(ppc64_elf_relocate_section): Likewise.
	* elf32-ppc.c (ppc_elf_howto_raw <R_PPC_16DX_HA>): New howto.
	(ppc_elf_reloc_type_lookup): Translate new bfd reloc.
	(ppc_elf_check_relocs): Handle R_PPC_16DX_HA to pacify gcc.
	* libbfd.h: Regenerate.
	* bfd-in2.h: Regenerate.
gas/
	* config/tc-ppc.c (md_assemble): Use BFD_RELOC_PPC_16DX_HA for addpcis.
	(md_apply_fix): Remove fx_subsy check.  Move code converting to
	pcrel reloc earlier and handle BFD_RELOC_PPC_16DX_HA.  Remove code
	emiiting errors on seeing fx_pcrel set on unexpected relocs, as
	that is done now by the generic code via..
	* config/tc-ppc.h (TC_FORCE_RELOCATION_SUB_LOCAL): ..this. Define.
	(TC_VALIDATE_FIX_SUB): Define.
ld/
	* testsuite/ld-powerpc/addpcis.d: Define ext1 and ext2 at
	limits of addpcis range.
2017-02-28 11:59:47 +10:30
..
aarch64.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
alpha.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
arc-reloc.def Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
arc.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
arm.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
avr.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
bfin.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
ChangeLog-0415 binutils ChangeLog rotation 2016-01-01 22:59:17 +10:30
ChangeLog-9103
common.h [PATCH] Add NT_ARM_SVE 2017-01-24 10:38:24 +00:00
cr16.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
cr16c.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
cris.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
crx.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
d10v.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
d30v.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
dlx.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
dwarf.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
epiphany.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
external.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
fr30.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
frv.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
ft32.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
h8.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
hppa.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
i370.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
i386.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
i860.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
i960.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
ia64.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
internal.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
ip2k.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
iq2000.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
lm32.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
m32c.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
m32r.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
m68hc11.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
m68k.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
mcore.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
mep.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
metag.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
microblaze.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
mips.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
mmix.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
mn10200.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
mn10300.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
moxie.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
msp430.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
mt.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
nds32.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
nios2.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
or1k.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
pj.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
ppc64.h PowerPC addpcis fix 2017-02-28 11:59:47 +10:30
ppc.h PowerPC addpcis fix 2017-02-28 11:59:47 +10:30
pru.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
reloc-macros.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
riscv.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
rl78.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
rx.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
s390.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
score.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
sh.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
sparc.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
spu.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
tic6x-attrs.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
tic6x.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
tilegx.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
tilepro.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
v850.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
vax.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
visium.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
vxworks.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
x86-64.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
xc16x.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
xgate.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
xstormy16.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
xtensa.h Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30