aboutsummaryrefslogtreecommitdiff
path: root/bfd/elfxx-ia64.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2005-05-17 17:23:37 +0000
committerH.J. Lu <hjl.tools@gmail.com>2005-05-17 17:23:37 +0000
commit5e27d42770ef937b86823315224cbbff12d7c856 (patch)
treee6e997683f642b440f2253ddcc90d85988c151c5 /bfd/elfxx-ia64.c
parent75ff45898cb591177506dc60164e167fc8c79c59 (diff)
downloadfsf-binutils-gdb-5e27d42770ef937b86823315224cbbff12d7c856.zip
fsf-binutils-gdb-5e27d42770ef937b86823315224cbbff12d7c856.tar.gz
fsf-binutils-gdb-5e27d42770ef937b86823315224cbbff12d7c856.tar.bz2
2005-05-17 H.J. Lu <hongjiu.lu@intel.com>
* elfxx-ia64.c (elfNN_ia64_relax_br): Keep the original predicate on slot 0 only if slot 0 isn't br.
Diffstat (limited to 'bfd/elfxx-ia64.c')
-rw-r--r--bfd/elfxx-ia64.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c
index cc8e5be..0a906ec 100644
--- a/bfd/elfxx-ia64.c
+++ b/bfd/elfxx-ia64.c
@@ -795,9 +795,12 @@ elfNN_ia64_relax_br (bfd_byte *contents, bfd_vma off)
if (template == 0x16)
{
- /* For BBB, we need to put nop.m in slot 0 and keep the original
- predicate. */
- t0 &= PREDICATE_BITS << 5;
+ /* For BBB, we need to put nop.m in slot 0. We keep the original
+ predicate only if slot 0 isn't br. */
+ if (br_slot == 0)
+ t0 = 0LL;
+ else
+ t0 &= PREDICATE_BITS << 5;
t0 |= 0x1LL << (X4_SHIFT + 5);
}
else