Omit section dynsyms for any linker created section
authorAlan Modra <amodra@gmail.com>
Thu, 15 Jan 2015 08:37:33 +0000 (19:07 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 15 Jan 2015 13:09:39 +0000 (23:39 +1030)
This is a simplification, and fixes a testcase I had where an empty
powerpc64 .branch_lt section was chosen for the data_index_section
dynamic symbol and thus wasn't removed.

* elflink.c (_bfd_elf_link_omit_section_dynsym): Return true for
any output section matching a linker created dynobj section.

bfd/ChangeLog
bfd/elflink.c

index 7dbb29995ab6e91c6b92415a923ccb653fd06868..d0542826c39fbdbe4d609f141d604d12d74820d3 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-15  Alan Modra  <amodra@gmail.com>
+
+       * elflink.c (_bfd_elf_link_omit_section_dynsym): Return true for
+       any output section matching a linker created dynobj section.
+
 2015-01-15  Alan Modra  <amodra@gmail.com>
 
        PR 17842
index 4378bb2ace367f743e835776104aa56351b04973..6e7726515c50268d63cfe6b42ebf284c703004eb 100644 (file)
@@ -762,6 +762,7 @@ _bfd_elf_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
                                   asection *p)
 {
   struct elf_link_hash_table *htab;
+  asection *ip;
 
   switch (elf_section_data (p)->this_hdr.sh_type)
     {
@@ -777,18 +778,9 @@ _bfd_elf_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
       if (htab->text_index_section != NULL)
        return p != htab->text_index_section && p != htab->data_index_section;
 
-      if (strcmp (p->name, ".got") == 0
-         || strcmp (p->name, ".got.plt") == 0
-         || strcmp (p->name, ".plt") == 0)
-       {
-         asection *ip;
-
-         if (htab->dynobj != NULL
+      return (htab->dynobj != NULL
              && (ip = bfd_get_linker_section (htab->dynobj, p->name)) != NULL
-             && ip->output_section == p)
-           return TRUE;
-       }
-      return FALSE;
+             && ip->output_section == p);
 
       /* There shouldn't be section relative relocations
         against any other section.  */