* elflink.c (is_reloc_section): Remove function.
authorBernd Schmidt <bernds@codesourcery.com>
Wed, 2 Mar 2011 17:07:03 +0000 (17:07 +0000)
committerBernd Schmidt <bernds@codesourcery.com>
Wed, 2 Mar 2011 17:07:03 +0000 (17:07 +0000)
(get_dynamic_reloc_section_name): Construct string manually.

bfd/ChangeLog
bfd/elflink.c

index e99450e..407738e 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-02  Bernd Schmidt  <bernds@codesourcery.com>
+
+        * elflink.c (is_reloc_section): Remove function.
+        (get_dynamic_reloc_section_name): Construct string manually.
+
 2011-02-28  Kai Tietz  <kai.tietz@onevision.com>
 
        * archive.c (_bfd_find_nested_archive): Use filename_(n)cmp.
index dffe0ae..983d5e0 100644 (file)
@@ -12597,20 +12597,6 @@ _bfd_elf_default_got_elt_size (bfd *abfd,
 
 /* Routines to support the creation of dynamic relocs.  */
 
-/* Return true if NAME is a name of a relocation
-   section associated with section S.  */
-
-static bfd_boolean
-is_reloc_section (bfd_boolean rela, const char * name, asection * s)
-{
-  if (rela)
-    return CONST_STRNEQ (name, ".rela")
-      && strcmp (bfd_get_section_name (NULL, s), name + 5) == 0;
-
-  return CONST_STRNEQ (name, ".rel")
-    && strcmp (bfd_get_section_name (NULL, s), name + 4) == 0;
-}
-
 /* Returns the name of the dynamic reloc section associated with SEC.  */
 
 static const char *
@@ -12618,26 +12604,15 @@ get_dynamic_reloc_section_name (bfd *       abfd,
                                asection *  sec,
                                bfd_boolean is_rela)
 {
-  const char * name;
-  unsigned int strndx = elf_elfheader (abfd)->e_shstrndx;
-  unsigned int shnam = _bfd_elf_single_rel_hdr (sec)->sh_name;
+  char *name;
+  const char *old_name = bfd_get_section_name (NULL, sec);
+  const char *prefix = is_rela ? ".rela" : ".rel";
 
-  name = bfd_elf_string_from_elf_section (abfd, strndx, shnam);
-  if (name == NULL)
+  if (old_name == NULL)
     return NULL;
 
-  if (! is_reloc_section (is_rela, name, sec))
-    {
-      static bfd_boolean complained = FALSE;
-
-      if (! complained)
-       {
-         (*_bfd_error_handler)
-           (_("%B: bad relocation section name `%s\'"),  abfd, name);
-         complained = TRUE;
-       }
-      name = NULL;
-    }
+  name = bfd_alloc (abfd, strlen (prefix) + strlen (old_name) + 1);
+  sprintf (name, "%s%s", prefix, old_name); 
 
   return name;
 }