diff options
Diffstat (limited to 'gcc/f/g77spec.c')
-rw-r--r-- | gcc/f/g77spec.c | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/gcc/f/g77spec.c b/gcc/f/g77spec.c index 50e7738..96621c4 100644 --- a/gcc/f/g77spec.c +++ b/gcc/f/g77spec.c @@ -46,6 +46,7 @@ Boston, MA 02111-1307, USA. */ #include "config.h" #include "system.h" +#include "gcc.h" #include <f/version.h> #ifndef MATH_LIBRARY @@ -85,12 +86,15 @@ typedef enum /* The original argument list and related info is copied here. */ static int g77_xargc; -static char **g77_xargv; -static void (*g77_fn)(); +static const char **g77_xargv; +static void lookup_option PARAMS ((Option *, int *, const char **, + const char *)); +static void append_arg PARAMS ((const char *)); /* The new argument list will be built here. */ static int g77_newargc; -static char **g77_newargv; +static char **real_g77_newargv; +static const char **g77_newargv; extern char *version_string; @@ -136,12 +140,12 @@ static void lookup_option (xopt, xskip, xarg, text) Option *xopt; int *xskip; - char **xarg; - char *text; + const char **xarg; + const char *text; { Option opt = OPTION_; int skip; - char *arg = NULL; + const char *arg = NULL; if ((skip = SWITCH_TAKES_ARG (text[1]))) skip -= (text[2] != '\0'); /* See gcc.c. */ @@ -216,7 +220,7 @@ lookup_option (xopt, xskip, xarg, text) static void append_arg (arg) - char *arg; + const char *arg; { static int newargsize; @@ -238,7 +242,8 @@ append_arg (arg) int i; newargsize = (g77_xargc << 2) + 20; /* This should handle all. */ - g77_newargv = (char **) xmalloc (newargsize * sizeof (char *)); + real_g77_newargv = (char **) xmalloc (newargsize * sizeof (char *)); + g77_newargv = (const char **) real_g77_newargv; /* Copy what has been done so far. */ for (i = 0; i < g77_newargc; ++i) @@ -246,29 +251,28 @@ append_arg (arg) } if (g77_newargc == newargsize) - (*g77_fn) ("overflowed output arg list for `%s'", arg); + fatal ("overflowed output arg list for `%s'", arg); g77_newargv[g77_newargc++] = arg; } void -lang_specific_driver (fn, in_argc, in_argv, in_added_libraries) - void (*fn)(); +lang_specific_driver (in_argc, in_argv, in_added_libraries) int *in_argc; char ***in_argv; - int *in_added_libraries; + int *in_added_libraries ATTRIBUTE_UNUSED; { int argc = *in_argc; - char **argv = *in_argv; + const char **argv = (const char **) *in_argv; int i; int verbose = 0; Option opt; int skip; - char *arg; + const char *arg; /* This will be NULL if we encounter a situation where we should not link in libf2c. */ - char *library = FORTRAN_LIBRARY; + const char *library = FORTRAN_LIBRARY; /* This will become 0 if anything other than -v and kin (like -V) is seen, meaning the user is trying to accomplish something. @@ -304,7 +308,6 @@ lang_specific_driver (fn, in_argc, in_argv, in_added_libraries) g77_xargv = argv; g77_newargc = 0; g77_newargv = argv; - g77_fn = fn; /* First pass through arglist. @@ -434,7 +437,7 @@ For bug reporting instructions, please see:\n\ #endif case OPTION_driver: - (*fn) ("--driver no longer supported", argv[i]); + fatal ("--driver no longer supported", argv[i]); break; default: @@ -448,11 +451,11 @@ For bug reporting instructions, please see:\n\ if (i + skip < argc) i += skip; else - (*fn) ("argument to `%s' missing", argv[i]); + fatal ("argument to `%s' missing", argv[i]); } if ((n_outfiles != 0) && (n_infiles == 0)) - (*fn) ("No input files; unwilling to write output files"); + fatal ("No input files; unwilling to write output files"); /* Second pass through arglist, transforming arguments as appropriate. */ @@ -486,7 +489,7 @@ For bug reporting instructions, please see:\n\ if (opt == OPTION_x) { /* Track input language. */ - char *lang; + const char *lang; if (arg == NULL) lang = argv[i+1]; @@ -569,7 +572,7 @@ For bug reporting instructions, please see:\n\ } *in_argc = g77_newargc; - *in_argv = g77_newargv; + *in_argv = real_g77_newargv; } /* Called before linking. Returns 0 on success and -1 on failure. */ |