From 33adc2a3251455613837491b32de4fa5477da62a Mon Sep 17 00:00:00 2001 From: Meador Inge Date: Thu, 27 Sep 2012 16:05:38 +0000 Subject: [PATCH] gcc-ar.c (main): Handle the returning of the sub-process error code correctly. 2012-09-27 Meador Inge * gcc-ar.c (main): Handle the returning of the sub-process error code correctly. From-SVN: r191809 --- gcc/ChangeLog | 5 +++++ gcc/gcc-ar.c | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fe86a66f6bf..20217ba69b3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-09-27 Meador Inge + + * gcc-ar.c (main): Handle the returning of the sub-process error + code correctly. + 2012-09-27 Ulrich Weigand * lower-subreg.c (enum classify_move_insn): Rename diff --git a/gcc/gcc-ar.c b/gcc/gcc-ar.c index caae1670bf6..5f78378dea8 100644 --- a/gcc/gcc-ar.c +++ b/gcc/gcc-ar.c @@ -42,6 +42,7 @@ main(int ac, char **av) const char *err_msg; const char **nargv; bool is_ar = !strcmp (PERSONALITY, "ar"); + int exit_code = FATAL_EXIT_CODE; exe_name = PERSONALITY; #ifdef CROSS_DIRECTORY_STRUCTURE @@ -96,6 +97,20 @@ main(int ac, char **av) NULL,NULL, &status, &err); if (err_msg) fprintf(stderr, "Error running %s: %s\n", exe_name, err_msg); + else if (status) + { + if (WIFSIGNALED (status)) + { + int sig = WTERMSIG (status); + fprintf (stderr, "%s terminated with signal %d [%s]%s\n", + exe_name, sig, strsignal(sig), + WCOREDUMP(status) ? ", core dumped" : ""); + } + else if (WIFEXITED (status)) + exit_code = WEXITSTATUS (status); + } + else + exit_code = SUCCESS_EXIT_CODE; - return err; + return exit_code; }