OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [bfd/] [coffgen.c] - Diff between revs 14 and 161

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 14 Rev 161
Line 2398... Line 2398...
    return coff_section_data (abfd, sec)->comdat;
    return coff_section_data (abfd, sec)->comdat;
  else
  else
    return NULL;
    return NULL;
}
}
 
 
 No newline at end of file
 No newline at end of file
 
bfd_boolean
 
_bfd_coff_section_already_linked (bfd *abfd,
 
                                  asection *sec,
 
                                  struct bfd_link_info *info)
 
{
 
  flagword flags;
 
  const char *name, *key;
 
  struct bfd_section_already_linked *l;
 
  struct bfd_section_already_linked_hash_entry *already_linked_list;
 
  struct coff_comdat_info *s_comdat;
 
 
 
  flags = sec->flags;
 
  if ((flags & SEC_LINK_ONCE) == 0)
 
    return FALSE;
 
 
 
  /* The COFF backend linker doesn't support group sections.  */
 
  if ((flags & SEC_GROUP) != 0)
 
    return FALSE;
 
 
 
  name = bfd_get_section_name (abfd, sec);
 
  s_comdat = bfd_coff_get_comdat_section (abfd, sec);
 
 
 
  if (s_comdat != NULL)
 
    key = s_comdat->name;
 
  else
 
    {
 
      if (CONST_STRNEQ (name, ".gnu.linkonce.")
 
          && (key = strchr (name + sizeof (".gnu.linkonce.") - 1, '.')) != NULL)
 
        key++;
 
      else
 
        /* FIXME: gcc as of 2011-09 emits sections like .text$<key>,
 
           .xdata$<key> and .pdata$<key> only the first of which has a
 
           comdat key.  Should these all match the LTO IR key?  */
 
        key = name;
 
    }
 
 
 
  already_linked_list = bfd_section_already_linked_table_lookup (key);
 
 
 
  for (l = already_linked_list->entry; l != NULL; l = l->next)
 
    {
 
      struct coff_comdat_info *l_comdat;
 
 
 
      l_comdat = bfd_coff_get_comdat_section (l->sec->owner, l->sec);
 
 
 
      /* The section names must match, and both sections must be
 
         comdat and have the same comdat name, or both sections must
 
         be non-comdat.  LTO IR plugin sections are an exception.  They
 
         are always named .gnu.linkonce.t.<key> (<key> is some string)
 
         and match any comdat section with comdat name of <key>, and
 
         any linkonce section with the same suffix, ie.
 
         .gnu.linkonce.*.<key>.  */
 
      if (((s_comdat != NULL) == (l_comdat != NULL)
 
           && strcmp (name, l->sec->name) == 0)
 
          || (l->sec->owner->flags & BFD_PLUGIN) != 0)
 
        {
 
          /* The section has already been linked.  See if we should
 
             issue a warning.  */
 
          return _bfd_handle_already_linked (sec, l, info);
 
        }
 
    }
 
 
 
  /* This is the first section with this name.  Record it.  */
 
  if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
 
    info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
 
  return FALSE;
 
}
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.