* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Also clear
authorMaciej W. Rozycki <macro@linux-mips.org>
Tue, 19 Feb 2013 21:58:46 +0000 (21:58 +0000)
committerMaciej W. Rozycki <macro@linux-mips.org>
Tue, 19 Feb 2013 21:58:46 +0000 (21:58 +0000)
STO_MICROMIPS annotation.

bfd/ChangeLog
bfd/elfxx-mips.c

index e440971..d8834bf 100644 (file)
@@ -1,3 +1,8 @@
+2013-02-19  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Also clear
+       STO_MICROMIPS annotation.
+
 2013-02-19  Alan Modra  <amodra@gmail.com>
 
        * configure.in: Bump version to 2.23.52.
index 74a9a51..f5296a4 100644 (file)
@@ -10118,13 +10118,18 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd,
   if (IRIX_COMPAT (output_bfd) == ict_irix6)
     mips_elf_irix6_finish_dynamic_symbol (output_bfd, name, sym);
 
-  /* Keep dynamic MIPS16 symbols odd.  This allows the dynamic linker to
-     treat MIPS16 symbols like any other.  */
+  /* Keep dynamic compressed symbols odd.  This allows the dynamic linker
+     to treat compressed symbols like any other.  */
   if (ELF_ST_IS_MIPS16 (sym->st_other))
     {
       BFD_ASSERT (sym->st_value & 1);
       sym->st_other -= STO_MIPS16;
     }
+  else if (ELF_ST_IS_MICROMIPS (sym->st_other))
+    {
+      BFD_ASSERT (sym->st_value & 1);
+      sym->st_other -= STO_MICROMIPS;
+    }
 
   return TRUE;
 }