OSDN Git Service

2012-09-28 Meador Inge <meadori@codesourcery.com>
authormeadori <meadori@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Sep 2012 18:50:55 +0000 (18:50 +0000)
committermeadori <meadori@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Sep 2012 18:50:55 +0000 (18:50 +0000)
Backport from mainline
2012-09-27  Meador Inge  <meadori@codesourcery.com>

* 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
gcc/gcc-ar.c

index 767e1df..5c0d5f3 100644 (file)
@@ -1,3 +1,11 @@
+2012-09-28  Meador Inge  <meadori@codesourcery.com>
+
+       Backport from mainline
+       2012-09-27  Meador Inge  <meadori@codesourcery.com>
+
+       * gcc-ar.c (main): Handle the returning of the sub-process error
+       code correctly.
+
 2012-09-28  Georg-Johann Lay  <avr@gjlay.de>
 
        Backport from 2012-09-28 trunk r191821.
index caae167..5f78378 100644 (file)
@@ -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;
 }