* emultempl/xtensaelf.em (is_inconsistent_linkonce_section): Add space
authorBob Wilson <bob.wilson@acm.org>
Tue, 25 Jul 2006 00:20:09 +0000 (00:20 +0000)
committerBob Wilson <bob.wilson@acm.org>
Tue, 25 Jul 2006 00:20:09 +0000 (00:20 +0000)
in dep_sec_name for null terminator.  Make sure dep_sec_name has a
".t" linkonce tag.

ld/ChangeLog
ld/emultempl/xtensaelf.em

index f227698162233e7520b16c0bd2857f2c28b24b07..727e777cb89c7ff175992f6ed94ec01d378155c2 100644 (file)
@@ -1,3 +1,9 @@
+2006-07-24  Bob Wilson  <bob.wilson@acm.org>
+
+       * emultempl/xtensaelf.em (is_inconsistent_linkonce_section): Add space
+       in dep_sec_name for null terminator.  Make sure dep_sec_name has a
+       ".t" linkonce tag.
+
 2006-07-14  Michael Wetherell  <mike.wetherell@ntlworld.com>
 
        * emulparams/elf_x86_64.sh (LIBPATH_SUFFIX, ELF_INTERPRETER_NAME):
index f5d2ba9ceae538e3fb87bf3dcb3fa69be1d97a8d..20ac2f2b615c7317ca0fd3e0452b383e8ee118de 100644 (file)
@@ -1200,7 +1200,7 @@ is_inconsistent_linkonce_section (asection *sec)
 {
   bfd *abfd = sec->owner;
   const char *sec_name = bfd_get_section_name (abfd, sec);
-  char *prop_tag = 0;
+  const char *name = 0;
 
   if ((bfd_get_section_flags (abfd, sec) & SEC_LINK_ONCE) == 0
       || strncmp (sec_name, ".gnu.linkonce.", linkonce_len) != 0)
@@ -1208,20 +1208,20 @@ is_inconsistent_linkonce_section (asection *sec)
 
   /* Check if this is an Xtensa property section.  */
   if (strncmp (sec_name + linkonce_len, "p.", 2) == 0)
-    prop_tag = "p.";
+    name = sec_name + linkonce_len + 2;
   else if (strncmp (sec_name + linkonce_len, "prop.", 5) == 0)
-    prop_tag = "prop.";
-  if (prop_tag)
+    name = strchr (sec_name + linkonce_len + 5, '.') + 1;
+
+  if (name)
     {
-      int tag_len = strlen (prop_tag);
-      char *dep_sec_name = xmalloc (strlen (sec_name));
+      char *dep_sec_name = xmalloc (strlen (sec_name) + 1);
       asection *dep_sec;
 
       /* Get the associated linkonce text section and check if it is
         included in the link.  If not, this section is inconsistent
         and should be stripped.  */
-      strcpy (dep_sec_name, ".gnu.linkonce.");
-      strcat (dep_sec_name, sec_name + linkonce_len + tag_len);
+      strcpy (dep_sec_name, ".gnu.linkonce.t.");
+      strcat (dep_sec_name, name);
       dep_sec = bfd_get_section_by_name (abfd, dep_sec_name);
       if (dep_sec == NULL || ! input_section_linked (dep_sec))
        {