diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2015-01-04 00:03:16 +0000 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2015-01-10 00:04:35 +0000 |
commit | 491793b5cbcc9f42662a2da8427c0022d7b03f9c (patch) | |
tree | 634079837ab2ecd6c164308cc851986692d6557d /gas/testsuite | |
parent | e321dd9a810dd92c5f739e0e4e35ceec2a3e951a (diff) | |
download | gdb-491793b5cbcc9f42662a2da8427c0022d7b03f9c.zip gdb-491793b5cbcc9f42662a2da8427c0022d7b03f9c.tar.gz gdb-491793b5cbcc9f42662a2da8427c0022d7b03f9c.tar.bz2 |
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.
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/avr/large-debug-line-table.d | 15 | ||||
-rw-r--r-- | gas/testsuite/gas/avr/large-debug-line-table.s | 16 |
3 files changed, 36 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 541c329..a547a3b 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -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. diff --git a/gas/testsuite/gas/avr/large-debug-line-table.d b/gas/testsuite/gas/avr/large-debug-line-table.d new file mode 100644 index 0000000..31ca7ed --- /dev/null +++ b/gas/testsuite/gas/avr/large-debug-line-table.d @@ -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 + +#... diff --git a/gas/testsuite/gas/avr/large-debug-line-table.s b/gas/testsuite/gas/avr/large-debug-line-table.s new file mode 100644 index 0000000..8e19ba7 --- /dev/null +++ b/gas/testsuite/gas/avr/large-debug-line-table.s @@ -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 |