* elf32-hppa.c (clobber_millicode_symbols): Don't do anything if
authorAlan Modra <amodra@gmail.com>
Fri, 7 Dec 2001 02:00:57 +0000 (02:00 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 7 Dec 2001 02:00:57 +0000 (02:00 +0000)
already forced local.

bfd/ChangeLog
bfd/elf32-hppa.c

index 6d4a5bb..0086e7b 100644 (file)
@@ -1,3 +1,8 @@
+2001-12-07  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf32-hppa.c (clobber_millicode_symbols): Don't do anything if
+       already forced local.
+
 2001-12-05  Nick Clifton  <nickc@cambridge.redhat.com>
 
        * elf32-arm.h (elf32_arm_merge_private_bfd_data): Combine
index 45cc479..0aaf346 100644 (file)
@@ -2209,19 +2209,19 @@ clobber_millicode_symbols (h, info)
      struct elf_link_hash_entry *h;
      struct bfd_link_info *info;
 {
-  /* We only want to remove these from the dynamic symbol table.
-     Therefore we do not leave ELF_LINK_FORCED_LOCAL set.  */
-  if (h->type == STT_PARISC_MILLI)
+  if (h->type == STT_PARISC_MILLI
+      && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
     {
       struct elf32_hppa_link_hash_table *htab;
-      unsigned short oldflags = h->elf_link_hash_flags;
 
       h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL;
       elf32_hppa_hide_symbol (info, h);
       htab = hppa_link_hash_table (info);
       _bfd_elf_strtab_delref (htab->elf.dynstr, h->dynstr_index);
+
+      /* ?!? We only want to remove these from the dynamic symbol table.
+        Therefore we do not leave ELF_LINK_FORCED_LOCAL set.  */
       h->elf_link_hash_flags &= ~ELF_LINK_FORCED_LOCAL;
-      h->elf_link_hash_flags |= oldflags & ELF_LINK_FORCED_LOCAL;
     }
   return true;
 }