xtensa: fix signedness of gas relocations
Change 1058c7532d
"Use signed data type for R_XTENSA_DIFF* relocation
offsets." changed signedness of BFD_RELOC_XTENSA_DIFF* relocations
substituted for BFD_RELOC_*. This made it impossible to encode arbitrary
8-, 16- and 32-bit values, which broke e.g. debug info encoding by .loc
directive. Revert this part and add test.
gas/
2016-02-03 Max Filippov <jcmvbkbc@gmail.com>
* config/tc-xtensa.c (md_apply_fix): Mark BFD_RELOC_XTENSA_DIFF*
substitutions for BFD_RELOC_* as unsigned.
* gas/testsuite/gas/xtensa/all.exp: Add loc to list of xtensa
tests.
* gas/testsuite/gas/xtensa/loc.d: New file: loc test result
patterns.
* gas/testsuite/gas/xtensa/loc.s: New file: loc test.
This commit is contained in:
parent
0cb4071ef9
commit
ea173078d2
5 changed files with 31 additions and 3 deletions
|
@ -1,3 +1,13 @@
|
|||
2016-02-03 Max Filippov <jcmvbkbc@gmail.com>
|
||||
|
||||
* config/tc-xtensa.c (md_apply_fix): Mark BFD_RELOC_XTENSA_DIFF*
|
||||
substitutions for BFD_RELOC_* as unsigned.
|
||||
* gas/testsuite/gas/xtensa/all.exp: Add loc to list of xtensa
|
||||
tests.
|
||||
* gas/testsuite/gas/xtensa/loc.d: New file: loc test result
|
||||
patterns.
|
||||
* gas/testsuite/gas/xtensa/loc.s: New file: loc test.
|
||||
|
||||
2016-02-03 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* config/tc-msp430.h (DWARF2_ADDR_SIZE): Set to 4.
|
||||
|
|
|
@ -5961,15 +5961,15 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg)
|
|||
{
|
||||
case BFD_RELOC_8:
|
||||
fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF8;
|
||||
fixP->fx_signed = 1;
|
||||
fixP->fx_signed = 0;
|
||||
break;
|
||||
case BFD_RELOC_16:
|
||||
fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF16;
|
||||
fixP->fx_signed = 1;
|
||||
fixP->fx_signed = 0;
|
||||
break;
|
||||
case BFD_RELOC_32:
|
||||
fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF32;
|
||||
fixP->fx_signed = 1;
|
||||
fixP->fx_signed = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -101,6 +101,7 @@ if [istarget xtensa*-*-*] then {
|
|||
run_dump_test "trampoline"
|
||||
run_dump_test "first_frag_align"
|
||||
run_dump_test "auto-litpools"
|
||||
run_dump_test "loc"
|
||||
}
|
||||
|
||||
if [info exists errorInfo] then {
|
||||
|
|
10
gas/testsuite/gas/xtensa/loc.d
Normal file
10
gas/testsuite/gas/xtensa/loc.d
Normal file
|
@ -0,0 +1,10 @@
|
|||
#as:
|
||||
#objdump: -r
|
||||
#name: .loc directive relocs
|
||||
|
||||
.*: +file format .*xtensa.*
|
||||
|
||||
RELOCATION RECORDS FOR \[\.debug_line\]:
|
||||
#...
|
||||
.*R_XTENSA_DIFF16.*\.text\+0x00009c42
|
||||
#...
|
7
gas/testsuite/gas/xtensa/loc.s
Normal file
7
gas/testsuite/gas/xtensa/loc.s
Normal file
|
@ -0,0 +1,7 @@
|
|||
.text
|
||||
.file 1 "loc.s"
|
||||
.loc 1 3
|
||||
nop
|
||||
.space 40000
|
||||
.loc 1 5
|
||||
nop
|
Loading…
Reference in a new issue