OSDN Git Service

2005-05-17 H.J. Lu <hongjiu.lu@intel.com>
authorhjl <hjl>
Tue, 17 May 2005 17:23:32 +0000 (17:23 +0000)
committerhjl <hjl>
Tue, 17 May 2005 17:23:32 +0000 (17:23 +0000)
* elfxx-ia64.c (elfNN_ia64_relax_br): Keep the original
predicate on slot 0 only if slot 0 isn't br.

bfd/ChangeLog
bfd/elfxx-ia64.c

index e60fbd6..8fb261f 100644 (file)
@@ -1,5 +1,10 @@
 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.
+
+2005-05-17  H.J. Lu  <hongjiu.lu@intel.com>
+
        PR 797
        * elf32-i386.c (elf_i386_size_dynamic_sections): Also remove
        empty sdynbss section.
index cc8e5be..0a906ec 100644 (file)
@@ -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