* elf32-spu.c (needs_ovl_stub): Respect .brinfo lrlive bits

also for calls.
This commit is contained in:
Ulrich Weigand 2009-06-16 13:44:00 +00:00
parent 6de2ae4a2a
commit be3e406de8
2 changed files with 11 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2009-06-16 Ulrich Weigand <uweigand@de.ibm.com>
* elf32-spu.c (needs_ovl_stub): Respect .brinfo lrlive bits
also for calls.
2009-06-16 H.J. Lu <hongjiu.lu@intel.com>
* configure.in (elf): Add elf-ifunc.lo.

View File

@ -1014,18 +1014,14 @@ needs_ovl_stub (struct elf_link_hash_entry *h,
if (spu_elf_section_data (sym_sec->output_section)->u.o.ovl_index
!= spu_elf_section_data (input_section->output_section)->u.o.ovl_index)
{
if (call || sym_type == STT_FUNC)
unsigned int lrlive = 0;
if (branch)
lrlive = (contents[1] & 0x70) >> 4;
if (!lrlive && (call || sym_type == STT_FUNC))
ret = call_ovl_stub;
else
{
ret = br000_ovl_stub;
if (branch)
{
unsigned int lrlive = (contents[1] & 0x70) >> 4;
ret += lrlive;
}
}
ret = br000_ovl_stub + lrlive;
}
/* If this insn isn't a branch then we are possibly taking the