From 5e27d42770ef937b86823315224cbbff12d7c856 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 17 May 2005 17:23:37 +0000 Subject: [PATCH] 2005-05-17 H.J. Lu * elfxx-ia64.c (elfNN_ia64_relax_br): Keep the original predicate on slot 0 only if slot 0 isn't br. --- bfd/ChangeLog | 5 +++++ bfd/elfxx-ia64.c | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e60fbd6..8fb261f 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,10 @@ 2005-05-17 H.J. Lu + * elfxx-ia64.c (elfNN_ia64_relax_br): Keep the original + predicate on slot 0 only if slot 0 isn't br. + +2005-05-17 H.J. Lu + PR 797 * elf32-i386.c (elf_i386_size_dynamic_sections): Also remove empty sdynbss section. 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 -- 2.7.4