From be3e406de8a97acffcd445eb0e83a84e510d829a Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Tue, 16 Jun 2009 13:44:00 +0000 Subject: * elf32-spu.c (needs_ovl_stub): Respect .brinfo lrlive bits also for calls. --- bfd/ChangeLog | 5 +++++ bfd/elf32-spu.c | 16 ++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8a6ad9f..e542819 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 af7afdb..e2449d4 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 -- cgit v1.1