From 40f943dd9fb242ce4df8085b8427494586cd4de7 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 14 Jul 1998 14:18:56 +0000 Subject: [PATCH] Improve --help support. From-SVN: r21141 --- gcc/ChangeLog | 6 ++++ gcc/gcc.c | 82 +++++++++++++++++++++++++++++++++++---------------- gcc/toplev.c | 14 +++++++-- 3 files changed, 74 insertions(+), 28 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8495649bf8a..4c94b2778f4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Tue Jul 14 14:15:30 1998 Nick Clifton + + * gcc.c: Remove ANSI-C ism from --help code. + + * toplev.c: Support --help with USE_CPPLIB. + Tue Jul 14 14:46:08 1998 Jeffrey A Law (law@cygnus.com) * mn10300.md (movsi, movsf, movdi, movdf): Remove "x" from I -> a diff --git a/gcc/gcc.c b/gcc/gcc.c index 4fbd7d00014..90da0f010d5 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -2444,9 +2444,9 @@ display_help () printf (" -print-multi-directory Display the root directory for versions of libgcc\n"); printf (" -print-multi-lib Display the mapping between command line options and\n"); printf (" multiple library search directories\n"); - printf (" -Wa, Pass on to the assembler\n"); - printf (" -Wp, Pass on to the preprocessor\n"); - printf (" -Wl, Pass on to the linker\n"); + printf (" -Wa, Pass comma-separated on to the assembler\n"); + printf (" -Wp, Pass comma-separated on to the preprocessor\n"); + printf (" -Wl, Pass comma-separated on to the linker\n"); printf (" -Xlinker Pass on to the linker\n"); printf (" -save-temps Do not delete intermediate files\n"); printf (" -pipe Use pipes rather than intermediate files\n"); @@ -2459,7 +2459,7 @@ display_help () printf (" -S Compile only; do not assemble or link\n"); printf (" -c Compile and assemble, but do not link\n"); printf (" -o Place the output into \n"); - printf (" -x Specifiy the language of the following input files\n"); + printf (" -x Specify the language of the following input files\n"); printf (" Permissable languages include: c c++ assembler none\n"); printf (" 'none' means revert to the default behaviour of\n"); printf (" guessing the language based on the file's extension\n"); @@ -2473,29 +2473,59 @@ display_help () sub-processes. */ } -#define ADD_XXX_OPTION(name) \ -static void \ -add_##name##_option (option, len) \ - char * option; \ - int len; \ -{ \ - n_##name##_options++; \ - \ - if (! ##name##_options) \ - name##_options \ - = (char **) xmalloc (n_##name##_options * sizeof (char **)); \ - else \ - name##_options \ - = (char **) xrealloc (##name##_options, \ - n_##name##_options * sizeof (char **)); \ - \ - name##_options [n_##name##_options - 1] = save_string (option, len); \ +static void +add_preprocessor_option (option, len) + char * option; + int len; +{ + n_preprocessor_options++; + + if (! preprocessor_options) + preprocessor_options + = (char **) xmalloc (n_preprocessor_options * sizeof (char **)); + else + preprocessor_options + = (char **) xrealloc (preprocessor_options, + n_preprocessor_options * sizeof (char **)); + + preprocessor_options [n_preprocessor_options - 1] = save_string (option, len); } - -ADD_XXX_OPTION (preprocessor) -ADD_XXX_OPTION (assembler) -ADD_XXX_OPTION (linker) +static void +add_assembler_option (option, len) + char * option; + int len; +{ + n_assembler_options++; + + if (! assembler_options) + assembler_options + = (char **) xmalloc (n_assembler_options * sizeof (char **)); + else + assembler_options + = (char **) xrealloc (assembler_options, + n_assembler_options * sizeof (char **)); + + assembler_options [n_assembler_options - 1] = save_string (option, len); +} + +static void +add_linker_option (option, len) + char * option; + int len; +{ + n_linker_options++; + + if (! linker_options) + linker_options + = (char **) xmalloc (n_linker_options * sizeof (char **)); + else + linker_options + = (char **) xrealloc (linker_options, + n_linker_options * sizeof (char **)); + + linker_options [n_linker_options - 1] = save_string (option, len); +} /* Create the vector `switches' and its contents. Store its length in `n_switches'. */ @@ -3089,7 +3119,7 @@ process_command (argc, argv) infiles[n_infiles].language = "c"; infiles[n_infiles++].name = "help-dummy"; - /* Preserve the --help switch so that it can bet caught by the + /* Preserve the --help switch so that it can be caught by the cc1 spec string. */ switches[n_switches].part1 = "--help"; switches[n_switches].args = 0; diff --git a/gcc/toplev.c b/gcc/toplev.c index fb6b8593900..266a209f9bf 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -858,7 +858,7 @@ lang_independent_options f_options[] = {"sched-spec-load-dangerous",&flag_schedule_speculative_load_dangerous, 1, "Allow speculative motion of more loads" }, {"branch-count-reg",&flag_branch_on_count_reg, 1, - "Replace add,compare,branch with branch on count register"}, + "Replace add,compare,branch with branch on count reg"}, #endif /* HAIFA */ {"pic", &flag_pic, 1, "Generate position independent code, if possible"}, @@ -1030,6 +1030,7 @@ documented_lang_options[] = /* These are for languages with USE_CPPLIB. */ /* These options are already documented in cpplib.c */ + { "--help", "" }, { "-A", "" }, { "-D", "" }, { "-I", "" }, @@ -3940,8 +3941,10 @@ display_help () long i; char * lang; +#ifndef USE_CPPLIB printf ("Usage: %s input [switches]\n", progname); printf ("Switches:\n"); +#endif printf (" -ffixed- Mark as being unavailable to the compiler\n"); printf (" -fcall-used- Mark as being corrupted by function calls\n"); printf (" -fcall-saved- Mark as being preserved across functions\n"); @@ -3982,7 +3985,7 @@ display_help () #endif printf (" -o Place output into \n"); printf (" -G Put global and static data smaller than \n"); - printf (" bytes into a special section [on some targets]\n"); + printf (" bytes into a special section (on some targets)\n"); for (i = NUM_ELEM (debug_args); i--;) { @@ -4318,6 +4321,13 @@ main (argc, argv, envp) /* If the option is valid for *some* language, treat it as valid even if this language doesn't understand it. */ int strings_processed = lang_decode_option (argc - i, argv + i); + + if (!strcmp (argv[i], "--help")) + { + display_help (); + exit (0); + } + if (strings_processed != 0) i += strings_processed - 1; }