* config/tc-rl78.c (rl78_cons_fix_new): Handle user-specified
relocs in .word/.etc statements.
This commit is contained in:
parent
8d9878a4ca
commit
392ca75208
@ -3098,9 +3098,15 @@ rx_elf_object_p (bfd * abfd)
|
||||
{
|
||||
Elf_Internal_Shdr *sec = elf_tdata(abfd)->elf_sect_ptr[u];
|
||||
|
||||
<<<<<<< elf32-rx.c
|
||||
if (phdr[i].p_offset <= (bfd_vma) sec->sh_offset
|
||||
&& (bfd_vma)sec->sh_offset <= phdr[i].p_offset + (phdr[i].p_filesz - 1)
|
||||
&& sec->sh_size > 0)
|
||||
=======
|
||||
if (phdr[i].p_filesz
|
||||
&& phdr[i].p_offset <= (bfd_vma) sec->sh_offset
|
||||
&& (bfd_vma)sec->sh_offset <= phdr[i].p_offset + (phdr[i].p_filesz - 1))
|
||||
>>>>>>> 1.20
|
||||
{
|
||||
/* Found one! The difference between the two addresses,
|
||||
plus the difference between the two file offsets, is
|
||||
@ -3113,7 +3119,7 @@ rx_elf_object_p (bfd * abfd)
|
||||
The correct LMA for the section is fffc0140 + (2050-2010).
|
||||
*/
|
||||
|
||||
phdr[i].p_vaddr = sec->sh_addr + (sec->sh_offset - phdr[i].p_offset);
|
||||
phdr[i].p_vaddr = sec->sh_addr - (sec->sh_offset - phdr[i].p_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -3123,9 +3129,15 @@ rx_elf_object_p (bfd * abfd)
|
||||
bsec = abfd->sections;
|
||||
while (bsec)
|
||||
{
|
||||
<<<<<<< elf32-rx.c
|
||||
if (bsec->flags & (SEC_LOAD | SEC_ALLOC)
|
||||
&& phdr[i].p_offset <= (bfd_vma) bsec->filepos
|
||||
&& (bfd_vma) bsec->filepos <= phdr[i].p_offset + (phdr[i].p_filesz - 1))
|
||||
=======
|
||||
if (phdr[i].p_filesz
|
||||
&& phdr[i].p_vaddr <= bsec->vma
|
||||
&& bsec->vma <= phdr[i].p_vaddr + (phdr[i].p_filesz - 1))
|
||||
>>>>>>> 1.20
|
||||
{
|
||||
bsec->lma = phdr[i].p_paddr + (bsec->vma - phdr[i].p_vaddr);
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2013-01-29 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* config/tc-rl78.c (rl78_cons_fix_new): Handle user-specified
|
||||
relocs in .word/.etc statements.
|
||||
|
||||
2013-01-29 Roland McGrath <mcgrathr@google.com>
|
||||
|
||||
* config/tc-arm.c (md_apply_fix): Use as_bad_where for "bad
|
||||
|
@ -554,6 +554,23 @@ rl78_cons_fix_new (fragS * frag,
|
||||
return;
|
||||
}
|
||||
|
||||
switch (exp->X_md)
|
||||
{
|
||||
case BFD_RELOC_RL78_LO16:
|
||||
case BFD_RELOC_RL78_HI16:
|
||||
if (size != 2)
|
||||
as_bad (_("%%hi16/%%lo16 only applies to .short or .hword"));
|
||||
type = exp->X_md;
|
||||
break;
|
||||
case BFD_RELOC_RL78_HI8:
|
||||
if (size != 1)
|
||||
as_bad (_("%%hi8 only applies to .byte"));
|
||||
type = exp->X_md;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (exp->X_op == O_subtract && exp->X_op_symbol)
|
||||
{
|
||||
if (size != 4 && size != 2 && size != 1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user