From 4f5209de57d279e30b061a7e23d11ad4df5e82bb Mon Sep 17 00:00:00 2001 From: meadori Date: Fri, 28 Sep 2012 18:50:55 +0000 Subject: [PATCH] 2012-09-28 Meador Inge Backport from mainline 2012-09-27 Meador Inge * gcc-ar.c (main): Handle the returning of the sub-process error code correctly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@191836 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/gcc-ar.c | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 767e1df4042..5c0d5f3fb79 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-09-28 Meador Inge + + Backport from mainline + 2012-09-27 Meador Inge + + * gcc-ar.c (main): Handle the returning of the sub-process error + code correctly. + 2012-09-28 Georg-Johann Lay Backport from 2012-09-28 trunk r191821. 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; } -- 2.11.0