aboutsummaryrefslogtreecommitdiff
path: root/gcc/f/g77spec.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/f/g77spec.c')
-rw-r--r--gcc/f/g77spec.c45
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. */