mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-25 04:49:54 +08:00
gas/avr: Prevent incorrect overflow errors for diff fixups.
When fixups are converted to a difference type within md_apply_fix, we previously left the contents of VALP (the value that was initially computed within write.c:fixup_segment) unchanged. This is harmless, except that this value is used within write.c:fixup_segment once we return from md_apply_fix to perform an overflow check. In some cases, the value computed in write.c:fixup_segment is so wrong that an overflow error can be triggered. These errors are incorrect. This patch avoids the overflow errors by adjusting the value in write.c:fixup_segment using the VALP pointer in md_apply_fix. A test for this issue is included. gas/ChangeLog: * config/tc-avr.c (md_apply_fix): Update the contents of VALP for diff fixups. gas/testsuite/ChangeLog: * gas/avr/large-debug-line-table.d: New file. * gas/avr/large-debug-line-table.s: New file.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2015-01-10 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* config/tc-avr.c (md_apply_fix): Update the contents of VALP for
|
||||
diff fixups.
|
||||
|
||||
2015-01-09 Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
|
||||
|
||||
* config/tc-arm.c (arm_cpus): Add support for APM X-Gene 1 and
|
||||
|
@ -1344,6 +1344,7 @@ md_apply_fix (fixS *fixP, valueT * valP, segT seg)
|
||||
|
||||
value = S_GET_VALUE (fixP->fx_addsy) +
|
||||
fixP->fx_offset - S_GET_VALUE (fixP->fx_subsy);
|
||||
*valP = value;
|
||||
|
||||
fixP->fx_subsy = NULL;
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-01-10 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* gas/avr/large-debug-line-table.d: New file.
|
||||
* gas/avr/large-debug-line-table.s: New file.
|
||||
|
||||
2015-01-01 Alan Modra <amodra@gmail.com>
|
||||
|
||||
Update year range in copyright notice of all files.
|
||||
|
15
gas/testsuite/gas/avr/large-debug-line-table.d
Normal file
15
gas/testsuite/gas/avr/large-debug-line-table.d
Normal file
@ -0,0 +1,15 @@
|
||||
#name: AVR, large .debug_line table
|
||||
#as: -mlink-relax -mmcu=avrxmega2
|
||||
#objdump: --dwarf=decodedline
|
||||
#source: large-debug-line-table.s
|
||||
#target: avr-*-*
|
||||
|
||||
.*: file format elf32-avr
|
||||
|
||||
Decoded dump of debug contents of section \.debug_line:
|
||||
|
||||
CU: large-debug-line-table\.c:
|
||||
File name Line number Starting address
|
||||
large-debug-line-table\.c 1 0
|
||||
|
||||
#...
|
16
gas/testsuite/gas/avr/large-debug-line-table.s
Normal file
16
gas/testsuite/gas/avr/large-debug-line-table.s
Normal file
@ -0,0 +1,16 @@
|
||||
.file 1 "large-debug-line-table.c"
|
||||
.text
|
||||
.global _start
|
||||
_start:
|
||||
.rept 4000
|
||||
.loc 1 1
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
.endr
|
Reference in New Issue
Block a user