* elf32-sparc.c (elf32_sparc_omit_section_dynsym): New function.
authorEric Botcazou <ebotcazou@libertysurf.fr>
Sun, 9 Jan 2005 09:26:55 +0000 (09:26 +0000)
committerEric Botcazou <ebotcazou@libertysurf.fr>
Sun, 9 Jan 2005 09:26:55 +0000 (09:26 +0000)
(elf_backend_omit_section_dynsym): Define to it.
* elf64-sparc.c (sparc64_elf_omit_section_dynsym): New function.
(elf_backend_omit_section_dynsym): Define to it.

bfd/ChangeLog
bfd/elf32-sparc.c
bfd/elf64-sparc.c

index 309f84b00d969fea073106189286814e4fc63f82..4f25e962932c6b258e2342bc66b8fcf9529e795f 100644 (file)
@@ -1,3 +1,10 @@
+2005-01-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       * elf32-sparc.c (elf32_sparc_omit_section_dynsym): New function.
+       (elf_backend_omit_section_dynsym): Define to it.
+       * elf64-sparc.c (sparc64_elf_omit_section_dynsym): New function.
+       (elf_backend_omit_section_dynsym): Define to it.
+
 2005-01-07  Jakub Jelinek  <jakub@redhat.com>
 
        * bfd/elf.c (INCLUDE_SECTION_IN_SEGMENT): Don't put empty sections into
index 378f14db4ba08e8f7a32d57cf29e0fd14af72208..be3dfae3e1acb47e8a51071b76f90b769dcd661a 100644 (file)
@@ -39,6 +39,8 @@ static bfd_boolean allocate_dynrelocs
   PARAMS ((struct elf_link_hash_entry *, PTR));
 static bfd_boolean readonly_dynrelocs
   PARAMS ((struct elf_link_hash_entry *, PTR));
+static bfd_boolean elf32_sparc_omit_section_dynsym
+  PARAMS ((bfd *, struct bfd_link_info *, asection *));
 static bfd_boolean elf32_sparc_size_dynamic_sections
   PARAMS ((bfd *, struct bfd_link_info *));
 static bfd_boolean elf32_sparc_new_section_hook
@@ -1814,6 +1816,23 @@ readonly_dynrelocs (h, inf)
   return TRUE;
 }
 
+/* Return true if the dynamic symbol for a given section should be
+   omitted when creating a shared library.  */
+
+static bfd_boolean
+elf32_sparc_omit_section_dynsym (bfd *output_bfd,
+                                struct bfd_link_info *info,
+                                asection *p)
+{
+  /* We keep the .got section symbol so that explicit relocations
+     against the _GLOBAL_OFFSET_TABLE_ symbol emitted in PIC mode
+     can be turned into relocations against the .got symbol.  */
+  if (strcmp (p->name, ".got") == 0)
+    return FALSE;
+
+  return _bfd_elf_link_omit_section_dynsym (output_bfd, info, p);
+}
+
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -3448,6 +3467,7 @@ elf32_sparc_plt_sym_val (bfd_vma i ATTRIBUTE_UNUSED,
 #define elf_backend_check_relocs       elf32_sparc_check_relocs
 #define elf_backend_adjust_dynamic_symbol \
                                        elf32_sparc_adjust_dynamic_symbol
+#define elf_backend_omit_section_dynsym        elf32_sparc_omit_section_dynsym
 #define elf_backend_size_dynamic_sections \
                                        elf32_sparc_size_dynamic_sections
 #define elf_backend_relocate_section   elf32_sparc_relocate_section
index 6ffad929a70880b0abf779ef32ed89081405f622..c7c9c4dd97ae81511ea023d709c262859d268d95 100644 (file)
@@ -56,6 +56,8 @@ static bfd_boolean sparc64_elf_check_relocs
           const Elf_Internal_Rela *));
 static bfd_boolean sparc64_elf_adjust_dynamic_symbol
   PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
+static bfd_boolean sparc64_elf_omit_section_dynsym
+  PARAMS ((bfd *, struct bfd_link_info *, asection *));
 static bfd_boolean sparc64_elf_size_dynamic_sections
   PARAMS ((bfd *, struct bfd_link_info *));
 static int sparc64_elf_get_symbol_type
@@ -1760,6 +1762,23 @@ sparc64_elf_adjust_dynamic_symbol (info, h)
   return TRUE;
 }
 
+/* Return true if the dynamic symbol for a given section should be
+   omitted when creating a shared library.  */
+
+static bfd_boolean
+sparc64_elf_omit_section_dynsym (bfd *output_bfd,
+                                struct bfd_link_info *info,
+                                asection *p)
+{
+  /* We keep the .got section symbol so that explicit relocations
+     against the _GLOBAL_OFFSET_TABLE_ symbol emitted in PIC mode
+     can be turned into relocations against the .got symbol.  */
+  if (strcmp (p->name, ".got") == 0)
+    return FALSE;
+
+  return _bfd_elf_link_omit_section_dynsym (output_bfd, info, p);
+}
+
 /* Set the sizes of the dynamic sections.  */
 
 static bfd_boolean
@@ -3198,6 +3217,8 @@ const struct elf_size_info sparc64_elf_size_info =
   sparc64_elf_check_relocs
 #define elf_backend_adjust_dynamic_symbol \
   sparc64_elf_adjust_dynamic_symbol
+#define elf_backend_omit_section_dynsym \
+  sparc64_elf_omit_section_dynsym
 #define elf_backend_size_dynamic_sections \
   sparc64_elf_size_dynamic_sections
 #define elf_backend_relocate_section \