binutils-gdb/ld/testsuite
Senthil Kumar Selvaraj 6806377956 Fix PR 13402
Fix incorrect adjustment of diff relocs when relaxing, and thus the
resulting source line to address mismatch.

Fix two issues when adjusting diff relocs to account for
deleted bytes.

1. Don't adjust the difference if the end address is the shrinked
insn's address i.e. use < instead of <=. The relaxation code deletes
count bytes from or after shrinked_insn_address, so the difference
between start_address and end_address should remain unchanged in this
case.

2. Adjust the reloc addend if the difference is to be adjusted and
symval + reloc addend is past the shrinked insn address. This is
because for a typical sym1 - sym2 diff reloc, sym1 is .text +
irel->r_addend, and the addend should be reduced to account for the
shrinked insn.

For example, assume the reloc value is .text + 0x8 with .text = 0, the
diff value in the object file = 0x4, and shrinked_insn_address = 0x4
with count = 0x2. Then the existing code writes 0x2 into the object
file to account for the deleted bytes, as shrinked_insn_address lies
between 0x8 and 0x8 - 0x4 = 0x4, but leaves the addend as is. The next
time the reloc is looked at, the code sees if a shrinked_insn_address
lies between 0x8 and 0x8 - 0x2 = 0x6, instead of 0x6 and 0x4. If there
happens to be one, then the diff value in the object file ends up
getting reduced again.

bfd/

2017-06-27  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

	PR ld/13402
	* elf32-avr.c (elf32_avr_adjust_diff_reloc_value): Adjust
	reloc addend if necessary. Adjust diff only if
	shrinked_insn_address < end_address.

ld/

2017-06-27  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

	PR ld/13402
	* testsuite/ld-avr/pr13402.d: New test.
	* testsuite/ld-avr/pr13402.s: New test.
2017-06-27 14:47:02 +05:30
..
config x86: Add run-time tests for -mtls-dialect=gnu2 2017-04-28 12:42:18 -07:00
ld-aarch64 [AArch64] Use SYMBOL_REFERENCES_LOCAL in one symbol check 2017-06-16 14:20:38 +01:00
ld-alpha
ld-arc [ARC] Fixed TLS for IE model. 2017-06-08 19:00:36 +02:00
ld-arm [ARM] Add linker support for ARMv8-R 2017-06-24 10:48:08 +01:00
ld-auto-import
ld-avr Fix PR 13402 2017-06-27 14:47:02 +05:30
ld-bootstrap
ld-cdtest
ld-checks
ld-cris
ld-crx
ld-cygwin
ld-d10v
ld-discard
ld-elf LD: Fix .startof.SECNAME/.sizeof.SECNAME tests for MIPS/IRIX 2017-06-26 16:15:15 +01:00
ld-elfcomm
ld-elfvers
ld-elfvsb Pass $NOPIE_CFLAGS to ELF visibility tests 2017-06-22 12:53:39 -07:00
ld-elfweak
ld-fastcall
ld-frv
ld-gc Pass $NOPIE_CFLAGS and $NOPIE_LDFLAGS to more ELF tests 2017-06-22 09:53:33 -07:00
ld-h8300
ld-i386 i386: Add hidden weak undefined tests 2017-06-22 15:13:15 -07:00
ld-ia64
ld-ifunc x86: Dump local IFUNC functions in the map file 2017-06-08 03:53:43 -07:00
ld-libs
ld-linkonce
ld-m68hc11
ld-m68k
ld-mep
ld-metag
ld-mips-elf MIPS/LD/testsuite: mips-elf-flags: Add MIPS ABI Flags handling 2017-06-27 02:58:27 +01:00
ld-misc
ld-mmix
ld-mn10300
ld-nds32 Fix address violation when disassembling a corrupt binary. 2017-06-14 16:50:03 +01:00
ld-nios2
ld-pe pe/coff: handle weak defined symbol for gc-sections. 2017-04-07 10:03:17 +02:00
ld-pie
ld-plugin Handle symbol defined in IR and referenced in DSO 2017-04-20 07:48:35 -07:00
ld-powerpc PowerPC64 tocsave testcases 2017-06-21 22:45:15 +09:30
ld-pru
ld-s390
ld-scripts Pass $NOPIE_CFLAGS to NOCROSSREFS tests 2017-06-21 14:57:53 -07:00
ld-selective
ld-sh
ld-shared Pass $NOPIE_CFLAGS and $NOPIE_LDFLAGS to more ELF tests 2017-06-22 09:53:33 -07:00
ld-size Pass $NOPIE_LDFLAGS size tests 2017-06-21 14:45:57 -07:00
ld-sparc ld: fix regressions with rett instructions in sparc tests. 2017-04-24 05:31:31 -07:00
ld-spu
ld-srec Pass $NOPIE_LDFLAGS size tests 2017-06-21 14:45:57 -07:00
ld-tic6x
ld-tilegx
ld-tilepro
ld-undefined Implement -z dynamic-undefined-weak 2017-04-19 20:39:52 +09:30
ld-unique Fix a number of pr21529 testcase failures 2017-06-07 17:56:46 +09:30
ld-v850
ld-vax-elf
ld-versados
ld-visium
ld-vxworks
ld-x86-64 x86: Support Intel Shadow Stack with SHSTK property 2017-06-22 05:50:31 -07:00
ld-xc16x
ld-xstormy16
ld-xtensa
ld-z8k
lib is_underscore_target for ld-elf tests 2017-06-18 11:56:19 +09:30
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015
ChangeLog-9303