* elflink.c (elf_link_output_extsym): Strip defined plugin symbols
authorAlan Modra <amodra@gmail.com>
Fri, 7 Oct 2011 23:06:09 +0000 (23:06 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 7 Oct 2011 23:06:09 +0000 (23:06 +0000)
even when strip_discarded is false.

bfd/ChangeLog
bfd/elflink.c

index 7e858e2..e2d28e6 100644 (file)
@@ -1,3 +1,8 @@
+2011-10-08  Alan Modra  <amodra@gmail.com>
+
+       * elflink.c (elf_link_output_extsym): Strip defined plugin symbols
+       even when strip_discarded is false.
+
 2011-10-05  Kai Tietz  <ktietz@redhat.com>
 
        * coffgen.c (coff_write_alien_symbol): Don't write
index 5d181f7..3ae4350 100644 (file)
@@ -8679,10 +8679,12 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
           && bfd_hash_lookup (finfo->info->keep_hash,
                               h->root.root.string, FALSE, FALSE) == NULL)
     strip = TRUE;
-  else if (finfo->info->strip_discarded
-          && (h->root.type == bfd_link_hash_defined
-              || h->root.type == bfd_link_hash_defweak)
-          && elf_discarded_section (h->root.u.def.section))
+  else if ((h->root.type == bfd_link_hash_defined
+           || h->root.type == bfd_link_hash_defweak)
+          && ((finfo->info->strip_discarded
+               && elf_discarded_section (h->root.u.def.section))
+              || (h->root.u.def.section->owner != NULL
+                  && (h->root.u.def.section->owner->flags & BFD_PLUGIN) != 0)))
     strip = TRUE;
   else if ((h->root.type == bfd_link_hash_undefined
            || h->root.type == bfd_link_hash_undefweak)