Commit b34e743c by Nathan Sidwell Committed by Nathan Sidwell

[driver] Use regular error routines

https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00545.html
	* gcc.c (perror_with_name, pfatal_with_name): Delete.
	(load_specs): Use fatal_error.
	(DELETE_IF_ORDINARY, process_command): Use error.
	(execute, run_attempt): Use fatal_error.

	* gcc.dg/driver-specs.c: New.

From-SVN: r264209
parent 9e2d426c
2018-09-11 Nathan Sidwell <nathan@acm.org>
* gcc.c (perror_with_name, pfatal_with_name): Delete.
(load_specs): Use fatal_error.
(DELETE_IF_ORDINARY, process_command): Use error.
(execute, run_attempt): Use fatal_error.
2018-09-11 Andrew Stubbs <ams@codesourcery.com> 2018-09-11 Andrew Stubbs <ams@codesourcery.com>
* diagnostic-core.h (sorry_at): New prototype. * diagnostic-core.h (sorry_at): New prototype.
......
...@@ -372,8 +372,6 @@ static void give_switch (int, int); ...@@ -372,8 +372,6 @@ static void give_switch (int, int);
static int default_arg (const char *, int); static int default_arg (const char *, int);
static void set_multilib_dir (void); static void set_multilib_dir (void);
static void print_multilib_info (void); static void print_multilib_info (void);
static void perror_with_name (const char *);
static void pfatal_with_name (const char *) ATTRIBUTE_NORETURN;
static void display_help (void); static void display_help (void);
static void add_preprocessor_option (const char *, int); static void add_preprocessor_option (const char *, int);
static void add_assembler_option (const char *, int); static void add_assembler_option (const char *, int);
...@@ -2101,15 +2099,20 @@ load_specs (const char *filename) ...@@ -2101,15 +2099,20 @@ load_specs (const char *filename)
/* Open and stat the file. */ /* Open and stat the file. */
desc = open (filename, O_RDONLY, 0); desc = open (filename, O_RDONLY, 0);
if (desc < 0) if (desc < 0)
pfatal_with_name (filename); {
failed:
/* This leaves DESC open, but the OS will save us. */
fatal_error (input_location, "cannot read spec file '%s': %m", filename);
}
if (stat (filename, &statbuf) < 0) if (stat (filename, &statbuf) < 0)
pfatal_with_name (filename); goto failed;
/* Read contents of file into BUFFER. */ /* Read contents of file into BUFFER. */
buffer = XNEWVEC (char, statbuf.st_size + 1); buffer = XNEWVEC (char, statbuf.st_size + 1);
readlen = read (desc, buffer, (unsigned) statbuf.st_size); readlen = read (desc, buffer, (unsigned) statbuf.st_size);
if (readlen < 0) if (readlen < 0)
pfatal_with_name (filename); goto failed;
buffer[readlen] = 0; buffer[readlen] = 0;
close (desc); close (desc);
...@@ -2490,7 +2493,7 @@ do \ ...@@ -2490,7 +2493,7 @@ do \
if (stat (NAME, &ST) >= 0 && S_ISREG (ST.st_mode)) \ if (stat (NAME, &ST) >= 0 && S_ISREG (ST.st_mode)) \
if (unlink (NAME) < 0) \ if (unlink (NAME) < 0) \
if (VERBOSE_FLAG) \ if (VERBOSE_FLAG) \
perror_with_name (NAME); \ error ("%s: %m", (NAME)); \
} while (0) } while (0)
#endif #endif
...@@ -3169,13 +3172,11 @@ execute (void) ...@@ -3169,13 +3172,11 @@ execute (void)
NULL, NULL, &err); NULL, NULL, &err);
if (errmsg != NULL) if (errmsg != NULL)
{ {
if (err == 0) errno = err;
fatal_error (input_location, errmsg); fatal_error (input_location,
else err ? G_("cannot execute '%s' %s: %m")
{ : G_("cannot execute '%s' %s"),
errno = err; string, errmsg);
pfatal_with_name (errmsg);
}
} }
if (i && string != commands[i].prog) if (i && string != commands[i].prog)
...@@ -4545,10 +4546,8 @@ process_command (unsigned int decoded_options_count, ...@@ -4545,10 +4546,8 @@ process_command (unsigned int decoded_options_count,
if (strcmp (fname, "-") != 0 && access (fname, F_OK) < 0) if (strcmp (fname, "-") != 0 && access (fname, F_OK) < 0)
{ {
if (fname[0] == '@' && access (fname + 1, F_OK) < 0) bool resp = fname[0] == '@' && access (fname + 1, F_OK) < 0;
perror_with_name (fname + 1); error ("%s: %m", fname + resp);
else
perror_with_name (fname);
} }
else else
add_infile (arg, spec_lang); add_infile (arg, spec_lang);
...@@ -6886,13 +6885,11 @@ run_attempt (const char **new_argv, const char *out_temp, ...@@ -6886,13 +6885,11 @@ run_attempt (const char **new_argv, const char *out_temp,
err_temp, &err); err_temp, &err);
if (errmsg != NULL) if (errmsg != NULL)
{ {
if (err == 0) errno = err;
fatal_error (input_location, errmsg); fatal_error (input_location,
else err ? G_ ("cannot execute '%s' %s: %m")
{ : G_ ("cannot execute '%s' %s"),
errno = err; new_argv[0], errmsg);
pfatal_with_name (errmsg);
}
} }
if (!pex_get_status (pex, 1, &exit_status)) if (!pex_get_status (pex, 1, &exit_status))
...@@ -8407,19 +8404,6 @@ save_string (const char *s, int len) ...@@ -8407,19 +8404,6 @@ save_string (const char *s, int len)
return result; return result;
} }
void
pfatal_with_name (const char *name)
{
perror_with_name (name);
delete_temp_files ();
exit (1);
}
static void
perror_with_name (const char *name)
{
error ("%s: %m", name);
}
static inline void static inline void
validate_switches_from_spec (const char *spec, bool user) validate_switches_from_spec (const char *spec, bool user)
......
2018-09-11 Nathan Sidwell <nathan@acm.org>
* gcc.dg/driver-specs.c: New.
2018-09-11 Joey Ye <joey.ye@arm.com> 2018-09-11 Joey Ye <joey.ye@arm.com>
* lib/gcov.exp (verify-intermediate): Add missing close. * lib/gcov.exp (verify-intermediate): Add missing close.
......
// { dg-additional-options "-specs=not-a-file" }
// { dg-prune-output "compilation terminated" }
// { dg-error "cannot read spec file" "" { target *-*-* } 0 }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment