PR gas/12049

* write.c (relax_frag): Don't allow forward branches to temporarily
	becomde backward branches.
This commit is contained in:
Alan Modra 2010-10-25 03:03:18 +00:00
parent 4073872ae3
commit e5940dffc5
2 changed files with 13 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2010-10-25 Alan Modra <amodra@gmail.com>
PR gas/12049
* write.c (relax_frag): Don't allow forward branches to temporarily
becomde backward branches.
2010-10-23 Mark Mitchell <mark@codesourcery.com>
* config/obj-elf.c (elf_adjust_symtab): New. Move group section

View File

@ -2163,6 +2163,13 @@ relax_frag (segT segment, fragS *fragP, long stretch)
if (stretch < 0
|| sym_frag->region == fragP->region)
target += stretch;
/* If we get here we know we have a forward branch. This
relax pass may have stretched previous instructions so
far that omitting STRETCH would make the branch
negative. Don't allow this in case the negative reach is
large enough to require a larger branch instruction. */
else if (target < address)
target = fragP->fr_next->fr_address + stretch;
}
}