From: Ulrich Weigand Date: Tue, 16 Jun 2009 13:44:00 +0000 (+0000) Subject: * elf32-spu.c (needs_ovl_stub): Respect .brinfo lrlive bits X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=be3e406de8a97acffcd445eb0e83a84e510d829a;p=binutils-gdb.git * elf32-spu.c (needs_ovl_stub): Respect .brinfo lrlive bits also for calls. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8a6ad9fc024..e542819f5dd 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2009-06-16 Ulrich Weigand + + * elf32-spu.c (needs_ovl_stub): Respect .brinfo lrlive bits + also for calls. + 2009-06-16 H.J. Lu * configure.in (elf): Add elf-ifunc.lo. diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c index af7afdbc675..e2449d4b8b1 100644 --- a/bfd/elf32-spu.c +++ b/bfd/elf32-spu.c @@ -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