gas/avr: Prevent incorrect overflow errors for diff fixups.
authorAndrew Burgess <andrew.burgess@embecosm.com>
Sun, 4 Jan 2015 00:03:16 +0000 (00:03 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Sat, 10 Jan 2015 00:04:35 +0000 (00:04 +0000)
commit491793b5cbcc9f42662a2da8427c0022d7b03f9c
tree634079837ab2ecd6c164308cc851986692d6557d
parente321dd9a810dd92c5f739e0e4e35ceec2a3e951a
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.
gas/ChangeLog
gas/config/tc-avr.c
gas/testsuite/ChangeLog
gas/testsuite/gas/avr/large-debug-line-table.d [new file with mode: 0644]
gas/testsuite/gas/avr/large-debug-line-table.s [new file with mode: 0644]