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

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [ld/] [ldmain.c] - Diff between revs 157 and 163

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

Rev 157 Rev 163
Line 295... Line 295...
  parse_args (argc, argv);
  parse_args (argc, argv);
 
 
  if (config.hash_table_size != 0)
  if (config.hash_table_size != 0)
    bfd_hash_set_default_size (config.hash_table_size);
    bfd_hash_set_default_size (config.hash_table_size);
 
 
  ldemul_set_symbols ();
#ifdef ENABLE_PLUGINS
 
  /* Now all the plugin arguments have been gathered, we can load them.  */
 
  if (plugin_load_plugins ())
 
    einfo (_("%P%F: %s: error loading plugin\n"), plugin_error_plugin ());
 
#endif /* ENABLE_PLUGINS */
 
 
  if (link_info.relocatable)
  ldemul_set_symbols ();
    {
 
      if (command_line.check_section_addresses < 0)
 
        command_line.check_section_addresses = 0;
 
      if (link_info.shared)
 
        einfo (_("%P%F: -r and -shared may not be used together\n"));
 
    }
 
 
 
  /* We may have -Bsymbolic, -Bsymbolic-functions, --dynamic-list-data,
 
     --dynamic-list-cpp-new, --dynamic-list-cpp-typeinfo and
 
     --dynamic-list FILE.  -Bsymbolic and -Bsymbolic-functions are
 
     for shared libraries.  -Bsymbolic overrides all others and vice
 
     versa.  */
 
  switch (command_line.symbolic)
 
    {
 
    case symbolic_unset:
 
      break;
 
    case symbolic:
 
      /* -Bsymbolic is for shared library only.  */
 
      if (link_info.shared)
 
        {
 
          link_info.symbolic = TRUE;
 
          /* Should we free the unused memory?  */
 
          link_info.dynamic_list = NULL;
 
          command_line.dynamic_list = dynamic_list_unset;
 
        }
 
      break;
 
    case symbolic_functions:
 
      /* -Bsymbolic-functions is for shared library only.  */
 
      if (link_info.shared)
 
        command_line.dynamic_list = dynamic_list_data;
 
      break;
 
    }
 
 
 
  switch (command_line.dynamic_list)
 
    {
 
    case dynamic_list_unset:
 
      break;
 
    case dynamic_list_data:
 
      link_info.dynamic_data = TRUE;
 
    case dynamic_list:
 
      link_info.dynamic = TRUE;
 
      break;
 
    }
 
 
 
  if (! link_info.shared)
 
    {
 
      if (command_line.filter_shlib)
 
        einfo (_("%P%F: -F may not be used without -shared\n"));
 
      if (command_line.auxiliary_filters)
 
        einfo (_("%P%F: -f may not be used without -shared\n"));
 
    }
 
 
 
  if (! link_info.shared || link_info.pie)
 
    link_info.executable = TRUE;
 
 
 
  /* Treat ld -r -s as ld -r -S -x (i.e., strip all local symbols).  I
 
     don't see how else this can be handled, since in this case we
 
     must preserve all externally visible symbols.  */
 
  if (link_info.relocatable && link_info.strip == strip_all)
 
    {
 
      link_info.strip = strip_debugger;
 
      if (link_info.discard == discard_sec_merge)
 
        link_info.discard = discard_all;
 
    }
 
 
 
  /* If we have not already opened and parsed a linker script,
  /* If we have not already opened and parsed a linker script,
     try the default script from command line first.  */
     try the default script from command line first.  */
  if (saved_script_handle == NULL
  if (saved_script_handle == NULL
      && command_line.default_script != NULL)
      && command_line.default_script != NULL)
Line 806... Line 746...
  /* Save the original data for trace files/tries below, as plugins
  /* Save the original data for trace files/tries below, as plugins
     (if enabled) may possibly alter it to point to a replacement
     (if enabled) may possibly alter it to point to a replacement
     BFD, but we still want to output the original BFD filename.  */
     BFD, but we still want to output the original BFD filename.  */
  orig_input = *input;
  orig_input = *input;
#ifdef ENABLE_PLUGINS
#ifdef ENABLE_PLUGINS
  if (bfd_my_archive (abfd) != NULL
  if (plugin_active_plugins_p () && !no_more_claiming)
      && plugin_active_plugins_p ()
 
      && !no_more_claiming)
 
    {
    {
      /* We must offer this archive member to the plugins to claim.  */
      /* We must offer this archive member to the plugins to claim.  */
      int fd = open (bfd_my_archive (abfd)->filename, O_RDONLY | O_BINARY);
      const char *filename = (bfd_my_archive (abfd) != NULL
 
                              ? bfd_my_archive (abfd)->filename : abfd->filename);
 
      int fd = open (filename, O_RDONLY | O_BINARY);
      if (fd >= 0)
      if (fd >= 0)
        {
        {
          struct ld_plugin_input_file file;
          struct ld_plugin_input_file file;
 
 
          /* Offset and filesize must refer to the individual archive
          /* Offset and filesize must refer to the individual archive
             member, not the whole file, and must exclude the header.
             member, not the whole file, and must exclude the header.
             Fortunately for us, that is how the data is stored in the
             Fortunately for us, that is how the data is stored in the
             origin field of the bfd and in the arelt_data.  */
             origin field of the bfd and in the arelt_data.  */
          file.name = bfd_my_archive (abfd)->filename;
          file.name = filename;
          file.offset = abfd->origin;
          file.offset = abfd->origin;
          file.filesize = arelt_size (abfd);
          file.filesize = arelt_size (abfd);
          file.fd = fd;
          file.fd = fd;
          plugin_maybe_claim (&file, input);
          plugin_maybe_claim (&file, input);
          if (input->claimed)
          if (input->claimed)

powered by: WebSVN 2.1.0

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