Commit ddaf3b86 by Volker Reichelt Committed by Volker Reichelt

re PR driver/22600 (Exit code should be different from 1 for internal compiler error)

	PR driver/22600	
	* system.h (ICE_EXIT_CODE): New macro.
	* diagnostic.c (diagnostic_count_diagnostic): Exit with ICE_EXIT_CODE.
	(diagnostic_action_after_output): Likewise.
	* gcc.c (fatal_ice): New function.
	(execute): Use it instead of fatal.
	(fancy_abort): Likewise.
	* doc/invoke.texi (-pass-exit-codes): Document return code for ICEs.

	* fortran/error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4.

From-SVN: r112292
parent d67ab5ee
2006-03-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR driver/22600
* system.h (ICE_EXIT_CODE): New macro.
* diagnostic.c (diagnostic_count_diagnostic): Exit with ICE_EXIT_CODE.
(diagnostic_action_after_output): Likewise.
* gcc.c (fatal_ice): New function.
(execute): Use it instead of fatal.
(fancy_abort): Likewise.
* doc/invoke.texi (-pass-exit-codes): Document return code for ICEs.
2006-03-22 Jeff Law <law@redhat.com> 2006-03-22 Jeff Law <law@redhat.com>
* loop-unroll.c (analyze_iv_to_split_insn): Handle * loop-unroll.c (analyze_iv_to_split_insn): Handle
......
...@@ -188,7 +188,7 @@ diagnostic_count_diagnostic (diagnostic_context *context, ...@@ -188,7 +188,7 @@ diagnostic_count_diagnostic (diagnostic_context *context,
expanded_location s = expand_location (diagnostic->location); expanded_location s = expand_location (diagnostic->location);
fnotice (stderr, "%s:%d: confused by earlier errors, bailing out\n", fnotice (stderr, "%s:%d: confused by earlier errors, bailing out\n",
s.file, s.line); s.file, s.line);
exit (FATAL_EXIT_CODE); exit (ICE_EXIT_CODE);
} }
#endif #endif
if (context->internal_error) if (context->internal_error)
...@@ -263,7 +263,7 @@ diagnostic_action_after_output (diagnostic_context *context, ...@@ -263,7 +263,7 @@ diagnostic_action_after_output (diagnostic_context *context,
fnotice (stderr, "Please submit a full bug report,\n" fnotice (stderr, "Please submit a full bug report,\n"
"with preprocessed source if appropriate.\n" "with preprocessed source if appropriate.\n"
"See %s for instructions.\n", bug_report_url); "See %s for instructions.\n", bug_report_url);
exit (FATAL_EXIT_CODE); exit (ICE_EXIT_CODE);
case DK_FATAL: case DK_FATAL:
if (context->abort_on_error) if (context->abort_on_error)
......
...@@ -957,7 +957,8 @@ Normally the @command{gcc} program will exit with the code of 1 if any ...@@ -957,7 +957,8 @@ Normally the @command{gcc} program will exit with the code of 1 if any
phase of the compiler returns a non-success return code. If you specify phase of the compiler returns a non-success return code. If you specify
@option{-pass-exit-codes}, the @command{gcc} program will instead return with @option{-pass-exit-codes}, the @command{gcc} program will instead return with
numerically highest error produced by any phase that returned an error numerically highest error produced by any phase that returned an error
indication. indication. The C, C++, and Fortran frontends return 4, if an internal
compiler error is encountered.
@end table @end table
If you only want some of the stages of compilation, you can use If you only want some of the stages of compilation, you can use
......
2006-03-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR driver/22600
* error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4.
2006-03-22 Thomas Koenig <Thomas.Koenig@online.de> 2006-03-22 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/19303 PR fortran/19303
......
...@@ -677,7 +677,7 @@ gfc_internal_error (const char *format, ...) ...@@ -677,7 +677,7 @@ gfc_internal_error (const char *format, ...)
error_print ("", format, argp); error_print ("", format, argp);
va_end (argp); va_end (argp);
exit (4); exit (ICE_EXIT_CODE);
} }
......
...@@ -330,6 +330,7 @@ static int default_arg (const char *, int); ...@@ -330,6 +330,7 @@ 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 perror_with_name (const char *);
static void fatal_ice (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
static void notice (const char *, ...) ATTRIBUTE_PRINTF_1; static void notice (const char *, ...) ATTRIBUTE_PRINTF_1;
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);
...@@ -2997,12 +2998,12 @@ execute (void) ...@@ -2997,12 +2998,12 @@ execute (void)
} }
else else
#endif #endif
fatal ("\ fatal_ice ("\
Internal error: %s (program %s)\n\ Internal error: %s (program %s)\n\
Please submit a full bug report.\n\ Please submit a full bug report.\n\
See %s for instructions.", See %s for instructions.",
strsignal (WTERMSIG (status)), commands[i].prog, strsignal (WTERMSIG (status)), commands[i].prog,
bug_report_url); bug_report_url);
} }
else if (WIFEXITED (status) else if (WIFEXITED (status)
&& WEXITSTATUS (status) >= MIN_FATAL_STATUS) && WEXITSTATUS (status) >= MIN_FATAL_STATUS)
...@@ -6818,12 +6819,27 @@ perror_with_name (const char *name) ...@@ -6818,12 +6819,27 @@ perror_with_name (const char *name)
void void
fancy_abort (const char *file, int line, const char *func) fancy_abort (const char *file, int line, const char *func)
{ {
fatal ("internal gcc abort in %s, at %s:%d", func, file, line); fatal_ice ("internal gcc abort in %s, at %s:%d", func, file, line);
} }
/* Output an error message and exit. */ /* Output an error message and exit. */
void void
fatal_ice (const char *cmsgid, ...)
{
va_list ap;
va_start (ap, cmsgid);
fprintf (stderr, "%s: ", programname);
vfprintf (stderr, _(cmsgid), ap);
va_end (ap);
fprintf (stderr, "\n");
delete_temp_files ();
exit (pass_exit_codes ? ICE_EXIT_CODE : 1);
}
void
fatal (const char *cmsgid, ...) fatal (const char *cmsgid, ...)
{ {
va_list ap; va_list ap;
......
...@@ -227,6 +227,8 @@ extern int errno; ...@@ -227,6 +227,8 @@ extern int errno;
# endif # endif
#endif #endif
#define ICE_EXIT_CODE 4
#ifdef HAVE_UNISTD_H #ifdef HAVE_UNISTD_H
# include <unistd.h> # include <unistd.h>
#endif #endif
......
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