doc: Fix copy-pasto in Z0 packet documentation
[deliverable/binutils-gdb.git] / ld / lexsup.c
index 87341f93dcc41a5529f4258cf8d2ea0eff327c58..effa277b16d1a29fa027e9fa675e800b0fcb70f6 100644 (file)
@@ -1,5 +1,5 @@
 /* Parse options for the GNU linker.
-   Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   Copyright (C) 1991-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Binutils.
 
@@ -112,6 +112,9 @@ static const struct ld_option ld_options[] =
     'd', NULL, N_("Force common symbols to be defined"), ONE_DASH },
   { {"dp", no_argument, NULL, 'd'},
     '\0', NULL, NULL, ONE_DASH },
+  { {"force-group-allocation", no_argument, NULL,
+     OPTION_FORCE_GROUP_ALLOCATION},
+    '\0', NULL, N_("Force group members out of groups"), TWO_DASHES },
   { {"entry", required_argument, NULL, 'e'},
     'e', N_("ADDRESS"), N_("Set start address"), TWO_DASHES },
   { {"export-dynamic", no_argument, NULL, OPTION_EXPORT_DYNAMIC},
@@ -164,6 +167,8 @@ static const struct ld_option ld_options[] =
     'o', N_("FILE"), N_("Set output file name"), EXACTLY_TWO_DASHES },
   { {NULL, required_argument, NULL, '\0'},
     'O', NULL, N_("Optimize output file"), ONE_DASH },
+  { {"out-implib", required_argument, NULL, OPTION_OUT_IMPLIB},
+    '\0', N_("FILE"), N_("Generate import library"), TWO_DASHES },
 #ifdef ENABLE_PLUGINS
   { {"plugin", required_argument, NULL, OPTION_PLUGIN},
     '\0', N_("PLUGIN"), N_("Load named plugin"), ONE_DASH },
@@ -333,6 +338,9 @@ static const struct ld_option ld_options[] =
   { {"no-print-gc-sections", no_argument, NULL, OPTION_NO_PRINT_GC_SECTIONS},
     '\0', NULL, N_("Do not list removed unused sections"),
     TWO_DASHES },
+  { {"gc-keep-exported", no_argument, NULL, OPTION_GC_KEEP_EXPORTED},
+    '\0', NULL, N_("Keep exported symbols when removing unused sections"),
+    TWO_DASHES },
   { {"hash-size=<NUMBER>", required_argument, NULL, OPTION_HASH_SIZE},
     '\0', NULL, N_("Set default hash table size close to <NUMBER>"),
     TWO_DASHES },
@@ -705,6 +713,7 @@ parse_args (unsigned argc, char **argv)
 
        default:
          einfo (_("%P%F: use the --help option for usage information\n"));
+         break;
 
        case 1:                 /* File name.  */
          lang_add_input_file (optarg, lang_input_file_is_file_enum, NULL);
@@ -761,6 +770,9 @@ parse_args (unsigned argc, char **argv)
        case 'd':
          command_line.force_common_definition = TRUE;
          break;
+        case OPTION_FORCE_GROUP_ALLOCATION:
+          command_line.force_group_allocation = TRUE;
+          break;
        case OPTION_DEFSYM:
          lex_string = optarg;
          lex_redirect (optarg, "--defsym", ++defsym_count);
@@ -858,6 +870,9 @@ parse_args (unsigned argc, char **argv)
        case OPTION_PRINT_GC_SECTIONS:
          link_info.print_gc_sections = TRUE;
          break;
+       case OPTION_GC_KEEP_EXPORTED:
+         link_info.gc_keep_exported = TRUE;
+         break;
        case OPTION_HELP:
          help ();
          xexit (0);
@@ -893,7 +908,7 @@ parse_args (unsigned argc, char **argv)
          input_flags.dynamic = FALSE;
          break;
        case OPTION_NO_DEFINE_COMMON:
-         command_line.inhibit_common_definition = TRUE;
+         link_info.inhibit_common_definition = TRUE;
          break;
        case OPTION_NO_DEMANGLE:
          demangling = FALSE;
@@ -1004,6 +1019,9 @@ parse_args (unsigned argc, char **argv)
        case OPTION_OFORMAT:
          lang_add_output_format (optarg, NULL, NULL, 0);
          break;
+       case OPTION_OUT_IMPLIB:
+         command_line.out_implib_filename = xstrdup (optarg);
+         break;
        case OPTION_PRINT_SYSROOT:
          if (*ld_sysroot)
            puts (ld_sysroot);
@@ -1275,7 +1293,7 @@ parse_args (unsigned argc, char **argv)
          break;
        case OPTION_TASK_LINK:
          link_info.task_link = TRUE;
-         /* Fall through - do an implied -r option.  */
+         /* Fall through.  */
        case OPTION_UR:
          if (bfd_link_pic (&link_info))
            einfo (_("%P%F: -r and %s may not be used together\n"),
@@ -1586,15 +1604,14 @@ parse_args (unsigned argc, char **argv)
   /* 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.  */
+     for PIC outputs.  -Bsymbolic overrides all others and vice versa.  */
   switch (command_line.symbolic)
     {
     case symbolic_unset:
       break;
     case symbolic:
-      /* -Bsymbolic is for shared library only.  */
-      if (bfd_link_dll (&link_info))
+      /* -Bsymbolic is for PIC output only.  */
+      if (bfd_link_pic (&link_info))
        {
          link_info.symbolic = TRUE;
          /* Should we free the unused memory?  */
@@ -1603,8 +1620,8 @@ parse_args (unsigned argc, char **argv)
        }
       break;
     case symbolic_functions:
-      /* -Bsymbolic-functions is for shared library only.  */
-      if (bfd_link_dll (&link_info))
+      /* -Bsymbolic-functions is for PIC output only.  */
+      if (bfd_link_pic (&link_info))
        command_line.dynamic_list = dynamic_list_data;
       break;
     }
@@ -1615,6 +1632,7 @@ parse_args (unsigned argc, char **argv)
       break;
     case dynamic_list_data:
       link_info.dynamic_data = TRUE;
+      /* Fall through.  */
     case dynamic_list:
       link_info.dynamic = TRUE;
       break;
@@ -1687,6 +1705,7 @@ set_segment_start (const char *section, char *valstr)
     if (strcmp (seg->name, name) == 0)
       {
        seg->value = val;
+       lang_section_start (section, exp_intop (val), seg);
        return;
       }
   /* There was no existing value so we must create a new segment
@@ -1719,6 +1738,8 @@ elf_shlib_list_options (FILE *file)
   fprintf (file, _("\
   --eh-frame-hdr              Create .eh_frame_hdr section\n"));
   fprintf (file, _("\
+  --no-eh-frame-hdr           Do not create .eh_frame_hdr section\n"));
+  fprintf (file, _("\
   --exclude-libs=LIBS         Make all symbols in LIBS hidden\n"));
   fprintf (file, _("\
   --hash-style=STYLE          Set hash style to sysv, gnu or both\n"));
@@ -1755,12 +1776,23 @@ elf_shlib_list_options (FILE *file)
   fprintf (file, _("\
   -z origin                   Mark object requiring immediate $ORIGIN\n\
                                processing at runtime\n"));
+#if DEFAULT_LD_Z_RELRO
   fprintf (file, _("\
-  -z relro                    Create RELRO program header\n"));
+  -z relro                    Create RELRO program header (default)\n"));
   fprintf (file, _("\
   -z norelro                  Don't create RELRO program header\n"));
+#else
+  fprintf (file, _("\
+  -z relro                    Create RELRO program header\n"));
+  fprintf (file, _("\
+  -z norelro                  Don't create RELRO program header (default)\n"));
+#endif
+  fprintf (file, _("\
+  -z common                   Generate common symbols with STT_COMMON type\n"));
+  fprintf (file, _("\
+  -z nocommon                 Generate common symbols with STT_OBJECT type\n"));
   fprintf (file, _("\
-  -z stacksize=SIZE           Set size of stack segment\n"));
+  -z stack-size=SIZE          Set size of stack segment\n"));
   fprintf (file, _("\
   -z text                     Treat DT_TEXTREL in shared object as error\n"));
   fprintf (file, _("\
This page took 0.036447 seconds and 4 git commands to generate.