dummy commit before egcs merge
[deliverable/binutils-gdb.git] / ld / lexsup.c
index 72537a77cdc6fd074f9baa7ff429619a43dcdd7f..3a03f2038872c2c504c515987249ef1e2f4c66e9 100644 (file)
@@ -111,6 +111,8 @@ int parsing_defsym = 0;
 #define OPTION_WHOLE_ARCHIVE           (OPTION_SPLIT_BY_FILE + 1)
 #define OPTION_WRAP                    (OPTION_WHOLE_ARCHIVE + 1)
 #define OPTION_FORCE_EXE_SUFFIX                (OPTION_WRAP + 1)
+#define OPTION_GC_SECTIONS             (OPTION_FORCE_EXE_SUFFIX + 1)
+#define OPTION_NO_GC_SECTIONS          (OPTION_GC_SECTIONS + 1)
 
 /* The long options.  This structure is used for both the option
    parsing and the help text.  */
@@ -163,6 +165,12 @@ static const struct ld_option ld_options[] =
       'F', N_("SHLIB"), N_("Filter for shared object symbol table"), TWO_DASHES },
   { {NULL, no_argument, NULL, '\0'},
       'g', NULL, N_("Ignored"), ONE_DASH },
+  { {"gc-sections", no_argument, NULL, OPTION_GC_SECTIONS},
+      '\0', NULL, N_("Remove unused sections on certain targets"),
+      TWO_DASHES },
+  { {"no-gc-sections", no_argument, NULL, OPTION_NO_GC_SECTIONS},
+      '\0', NULL, N_("(Don't) Remove unused sections on certain targets"),
+      TWO_DASHES },
   { {"gpsize", required_argument, NULL, 'G'},
       'G', N_("SIZE"), N_("Small data size (if no size, same as --shared)"),
       TWO_DASHES },
@@ -399,7 +407,7 @@ parse_args (argc, argv)
   /* Because we permit long options to start with a single dash, and
      we have a --library option, and the -l option is conventionally
      used with an immediately following argument, we can have bad
-     results of somebody tries to use -l with a library whose name
+     results if somebody tries to use -l with a library whose name
      happens to start with "ibrary", as in -li.  We avoid problems by
      simply turning -l into --library.  This means that users will
      have to use two dashes in order to use --library, which is OK
@@ -575,6 +583,9 @@ parse_args (argc, argv)
        case 'g':
          /* Ignore.  */
          break;
+       case OPTION_GC_SECTIONS:
+         command_line.gc_sections = true;
+         break;
        case OPTION_HELP:
          help ();
          xexit (0);
@@ -604,6 +615,9 @@ parse_args (argc, argv)
          config.magic_demand_paged = false;
          config.dynamic_link = false;
          break;
+       case OPTION_NO_GC_SECTIONS:
+         command_line.gc_sections = false;
+         break;
        case OPTION_NO_KEEP_MEMORY:
          link_info.keep_memory = false;
          break;
@@ -701,7 +715,10 @@ parse_args (argc, argv)
          link_info.strip = strip_all;
          break;
        case OPTION_SHARED:
-         link_info.shared = true;
+         if (config.has_shared)
+           link_info.shared = true;
+         else
+           einfo (_("%P%F: -shared not supported\n"));
          break;
        case 'h':               /* Used on Solaris.  */
        case OPTION_SONAME:
@@ -994,6 +1011,7 @@ help ()
        }
     }
 
+  /* xgettext:c-format */
   printf (_("%s: supported targets:"), program_name);
   targets = bfd_target_list ();
   for (pp = targets; *pp != NULL; pp++)
@@ -1001,8 +1019,15 @@ help ()
   free (targets);
   printf ("\n");
 
+  /* xgettext:c-format */
   printf (_("%s: supported emulations: "), program_name);
   ldemul_list_emulations (stdout);
   printf ("\n");
+
+  /* xgettext:c-format */
+  printf (_("%s: emulation specific options:\n"), program_name);
+  ldemul_list_emulation_options (stdout);
+  printf ("\n");
+  
   printf (_("\nReport bugs to bug-gnu-utils@gnu.org\n"));
 }
This page took 0.024334 seconds and 4 git commands to generate.