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

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [ld/] [emultempl/] [ppc64elf.em] - Diff between revs 145 and 157

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

Rev 145 Rev 157
Line 59... Line 59...
static int no_multi_toc = 0;
static int no_multi_toc = 0;
 
 
/* Whether to sort input toc and got sections.  */
/* Whether to sort input toc and got sections.  */
static int no_toc_sort = 0;
static int no_toc_sort = 0;
 
 
 
/* Set if PLT call stubs should load r11.  */
 
static int plt_static_chain = 0;
 
 
/* Whether to emit symbols for stubs.  */
/* Whether to emit symbols for stubs.  */
static int emit_stub_syms = -1;
static int emit_stub_syms = -1;
 
 
static asection *toc_section = 0;
static asection *toc_section = 0;
 
 
Line 498... Line 501...
 
 
          if (!ppc64_elf_check_init_fini (&link_info))
          if (!ppc64_elf_check_init_fini (&link_info))
            einfo ("%P: .init/.fini fragments use differing TOC pointers\n");
            einfo ("%P: .init/.fini fragments use differing TOC pointers\n");
 
 
          /* Call into the BFD backend to do the real work.  */
          /* Call into the BFD backend to do the real work.  */
          if (!ppc64_elf_size_stubs (&link_info, group_size))
          if (!ppc64_elf_size_stubs (&link_info, group_size, plt_static_chain))
            einfo ("%X%P: can not size stub section: %E\n");
            einfo ("%X%P: can not size stub section: %E\n");
        }
        }
    }
    }
 
 
  if (need_laying_out != -1)
  if (need_laying_out != -1)
Line 647... Line 650...
fi
fi
 
 
# Define some shell vars to insert bits of code into the standard elf
# Define some shell vars to insert bits of code into the standard elf
# parse_args and list_options functions.
# parse_args and list_options functions.
#
#
PARSE_AND_LIST_PROLOGUE='
PARSE_AND_LIST_PROLOGUE=${PARSE_AND_LIST_PROLOGUE}'
#define OPTION_STUBGROUP_SIZE           301
#define OPTION_STUBGROUP_SIZE           321
#define OPTION_STUBSYMS                 (OPTION_STUBGROUP_SIZE + 1)
#define OPTION_PLT_STATIC_CHAIN         (OPTION_STUBGROUP_SIZE + 1)
 
#define OPTION_NO_PLT_STATIC_CHAIN      (OPTION_PLT_STATIC_CHAIN + 1)
 
#define OPTION_STUBSYMS                 (OPTION_NO_PLT_STATIC_CHAIN + 1)
#define OPTION_NO_STUBSYMS              (OPTION_STUBSYMS + 1)
#define OPTION_NO_STUBSYMS              (OPTION_STUBSYMS + 1)
#define OPTION_DOTSYMS                  (OPTION_NO_STUBSYMS + 1)
#define OPTION_DOTSYMS                  (OPTION_NO_STUBSYMS + 1)
#define OPTION_NO_DOTSYMS               (OPTION_DOTSYMS + 1)
#define OPTION_NO_DOTSYMS               (OPTION_DOTSYMS + 1)
#define OPTION_NO_TLS_OPT               (OPTION_NO_DOTSYMS + 1)
#define OPTION_NO_TLS_OPT               (OPTION_NO_DOTSYMS + 1)
#define OPTION_NO_TLS_GET_ADDR_OPT      (OPTION_NO_TLS_OPT + 1)
#define OPTION_NO_TLS_GET_ADDR_OPT      (OPTION_NO_TLS_OPT + 1)
Line 662... Line 667...
#define OPTION_NO_MULTI_TOC             (OPTION_NO_TOC_OPT + 1)
#define OPTION_NO_MULTI_TOC             (OPTION_NO_TOC_OPT + 1)
#define OPTION_NO_TOC_SORT              (OPTION_NO_MULTI_TOC + 1)
#define OPTION_NO_TOC_SORT              (OPTION_NO_MULTI_TOC + 1)
#define OPTION_NON_OVERLAPPING_OPD      (OPTION_NO_TOC_SORT + 1)
#define OPTION_NON_OVERLAPPING_OPD      (OPTION_NO_TOC_SORT + 1)
'
'
 
 
PARSE_AND_LIST_LONGOPTS='
PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
  { "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE },
  { "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE },
 
  { "plt-static-chain", no_argument, NULL, OPTION_PLT_STATIC_CHAIN },
 
  { "no-plt-static-chain", no_argument, NULL, OPTION_NO_PLT_STATIC_CHAIN },
  { "emit-stub-syms", no_argument, NULL, OPTION_STUBSYMS },
  { "emit-stub-syms", no_argument, NULL, OPTION_STUBSYMS },
  { "no-emit-stub-syms", no_argument, NULL, OPTION_NO_STUBSYMS },
  { "no-emit-stub-syms", no_argument, NULL, OPTION_NO_STUBSYMS },
  { "dotsyms", no_argument, NULL, OPTION_DOTSYMS },
  { "dotsyms", no_argument, NULL, OPTION_DOTSYMS },
  { "no-dotsyms", no_argument, NULL, OPTION_NO_DOTSYMS },
  { "no-dotsyms", no_argument, NULL, OPTION_NO_DOTSYMS },
  { "no-tls-optimize", no_argument, NULL, OPTION_NO_TLS_OPT },
  { "no-tls-optimize", no_argument, NULL, OPTION_NO_TLS_OPT },
Line 677... Line 684...
  { "no-multi-toc", no_argument, NULL, OPTION_NO_MULTI_TOC },
  { "no-multi-toc", no_argument, NULL, OPTION_NO_MULTI_TOC },
  { "no-toc-sort", no_argument, NULL, OPTION_NO_TOC_SORT },
  { "no-toc-sort", no_argument, NULL, OPTION_NO_TOC_SORT },
  { "non-overlapping-opd", no_argument, NULL, OPTION_NON_OVERLAPPING_OPD },
  { "non-overlapping-opd", no_argument, NULL, OPTION_NON_OVERLAPPING_OPD },
'
'
 
 
PARSE_AND_LIST_OPTIONS='
PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
  fprintf (file, _("\
  fprintf (file, _("\
  --stub-group-size=N         Maximum size of a group of input sections that\n\
  --stub-group-size=N         Maximum size of a group of input sections that\n\
                                can be handled by one stub section.  A negative\n\
                                can be handled by one stub section.  A negative\n\
                                value locates all stubs before their branches\n\
                                value locates all stubs before their branches\n\
                                (with a group size of -N), while a positive\n\
                                (with a group size of -N), while a positive\n\
Line 689... Line 696...
                                before, and one after each stub section.\n\
                                before, and one after each stub section.\n\
                                Values of +/-1 indicate the linker should\n\
                                Values of +/-1 indicate the linker should\n\
                                choose suitable defaults.\n"
                                choose suitable defaults.\n"
                   ));
                   ));
  fprintf (file, _("\
  fprintf (file, _("\
 
  --plt-static-chain          PLT call stubs should load r11.\n"
 
                   ));
 
  fprintf (file, _("\
 
  --no-plt-static-chain       PLT call stubs should not load r11. (default)\n"
 
                   ));
 
  fprintf (file, _("\
  --emit-stub-syms            Label linker stubs with a symbol.\n"
  --emit-stub-syms            Label linker stubs with a symbol.\n"
                   ));
                   ));
  fprintf (file, _("\
  fprintf (file, _("\
  --no-emit-stub-syms         Don'\''t label linker stubs with a symbol.\n"
  --no-emit-stub-syms         Don'\''t label linker stubs with a symbol.\n"
                   ));
                   ));
Line 727... Line 740...
  --non-overlapping-opd       Canonicalize .opd, so that there are no\n\
  --non-overlapping-opd       Canonicalize .opd, so that there are no\n\
                                overlapping .opd entries.\n"
                                overlapping .opd entries.\n"
                   ));
                   ));
'
'
 
 
PARSE_AND_LIST_ARGS_CASES='
PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
    case OPTION_STUBGROUP_SIZE:
    case OPTION_STUBGROUP_SIZE:
      {
      {
        const char *end;
        const char *end;
        group_size = bfd_scan_vma (optarg, &end, 0);
        group_size = bfd_scan_vma (optarg, &end, 0);
        if (*end)
        if (*end)
          einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
          einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
      }
      }
      break;
      break;
 
 
 
    case OPTION_PLT_STATIC_CHAIN:
 
      plt_static_chain = 1;
 
      break;
 
 
 
    case OPTION_NO_PLT_STATIC_CHAIN:
 
      plt_static_chain = 0;
 
      break;
 
 
    case OPTION_STUBSYMS:
    case OPTION_STUBSYMS:
      emit_stub_syms = 1;
      emit_stub_syms = 1;
      break;
      break;
 
 
    case OPTION_NO_STUBSYMS:
    case OPTION_NO_STUBSYMS:

powered by: WebSVN 2.1.0

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