Use signed data type for R_XTENSA_DIFF* relocation offsets.
authorVolodymyr Arbatov <arbatov@cadence.com>
Mon, 6 May 2013 17:43:21 +0000 (09:43 -0800)
committerMax Filippov <jcmvbkbc@gmail.com>
Wed, 7 May 2014 21:55:41 +0000 (01:55 +0400)
commit1058c7532d0b012ac329219264ddad59049fb6e6
treee8157b82f9c24e689593040445ee60ba6a4b939b
parente59bc75b6546db04b0f3e1d760567f83ffc801f3
Use signed data type for R_XTENSA_DIFF* relocation offsets.

R_XTENSA_DIFF relocation offsets are in fact signed. Treat them as such.
Add testcase that examines ld behaviour on R_XTENSA_DIFF relocation
changing sign during relaxation.

2014-05-02  Volodymyr Arbatov  <arbatov@cadence.com>
    David Weatherford  <weath@cadence.com>
    Max Filippov  <jcmvbkbc@gmail.com>

bfd/
  * elf32-xtensa.c (relax_section): treat R_XTENSA_DIFF* relocations as
  signed.

gas/
  * config/tc-xtensa.c (md_apply_fix): mark BFD_RELOC_XTENSA_DIFF*
  fixups as signed.

ld/testsuite/
  * ld-xtensa/diff_overflow.exp, * ld-xtensa/diff_overflow1.s,
  * ld-xtensa/diff_overflow2.s: Add test for DIFF* relocation
  signedness and overflow checking.
bfd/ChangeLog
bfd/elf32-xtensa.c
gas/ChangeLog
gas/config/tc-xtensa.c
ld/testsuite/ChangeLog
ld/testsuite/ld-xtensa/diff_overflow.exp [new file with mode: 0644]
ld/testsuite/ld-xtensa/diff_overflow1.s [new file with mode: 0644]
ld/testsuite/ld-xtensa/diff_overflow2.s [new file with mode: 0644]