* elf32-rl78.c (GET_RELOC): Assert that there are relocs to get.
(rl78_elf_relax_section): Only fetch the next reloc if there is one expected.
This commit is contained in:
parent
2b6759ceee
commit
1122dc88f5
2 changed files with 17 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2013-04-02 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* elf32-rl78.c (GET_RELOC): Assert that there are relocs to get.
|
||||
(rl78_elf_relax_section): Only fetch the next reloc if there is
|
||||
one expected.
|
||||
|
||||
2013-03-30 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR ld/15323
|
||||
|
|
|
@ -2193,6 +2193,7 @@ rl78_elf_relax_section
|
|||
+ srel->r_offset;
|
||||
|
||||
#define GET_RELOC \
|
||||
BFD_ASSERT (nrelocs > 0); \
|
||||
symval = OFFSET_FOR_RELOC (srel, &srel, &scale); \
|
||||
pcrel = symval - pc + srel->r_addend; \
|
||||
nrelocs --;
|
||||
|
@ -2233,7 +2234,13 @@ rl78_elf_relax_section
|
|||
|
||||
if (irel->r_addend & RL78_RELAXA_BRA)
|
||||
{
|
||||
GET_RELOC;
|
||||
/* SKIP opcodes that skip non-branches will have a relax tag
|
||||
but no corresponding symbol to relax against; we just
|
||||
skip those. */
|
||||
if (irel->r_addend & RL78_RELAXA_RNUM)
|
||||
{
|
||||
GET_RELOC;
|
||||
}
|
||||
|
||||
switch (insn[0])
|
||||
{
|
||||
|
@ -2302,6 +2309,9 @@ rl78_elf_relax_section
|
|||
/* For SKIP/BR, we change the BR opcode and delete the
|
||||
SKIP. That way, we don't have to find and change the
|
||||
relocation for the BR. */
|
||||
/* Note that, for the case where we're skipping some
|
||||
other insn, we have no "other" reloc but that's safe
|
||||
here anyway. */
|
||||
switch (insn[1])
|
||||
{
|
||||
case 0xc8: /* SKC */
|
||||
|
|
Loading…
Reference in a new issue