PR binutils/3001
authorNick Clifton <nickc@redhat.com>
Sun, 6 Aug 2006 15:49:46 +0000 (15:49 +0000)
committerNick Clifton <nickc@redhat.com>
Sun, 6 Aug 2006 15:49:46 +0000 (15:49 +0000)
* addr2line.c (process_file): Change function from void to returning an int.  Return 0 upon success, 1 otherwise.
 (main): Use return value from process_file as the exit value.
* ar.c (ranlib_only):  Change function from void to returning an int.  Return 0 upon success, 1 otherwise.
  (ranlib_touch): Likewise.
  (main): Use return value from ranlib functions as exit value.
* objcopy.c (add_specific_symbol): Set status to 1 if get_file_size fails.
  (copy_file): Likewise.
  (strip_main): Likewise.
  (copy_main): Likewise.
* objdump.c (display_file): Set exit_status to 1 if get_file_size fails.
* size.c (display_file): Set return_code to 1 if get_file_size fails.

binutils/ChangeLog
binutils/addr2line.c
binutils/ar.c
binutils/objcopy.c
binutils/objdump.c
binutils/size.c

index efe3ed51c42bc738b30d7bc1fb3826870366353a..0db85794be4f8917db87a6eaa4bd4f0de5ab7714 100644 (file)
@@ -1,3 +1,23 @@
+2006-08-06  Nick Clifton  <nickc@redhat.com>
+
+       PR binutils/3001
+       * addr2line.c (process_file): Change function from void to
+       returning an int.  Return 0 upon success, 1 otherwise.
+       (main): Use return value from process_file as the exit value.
+       * ar.c (ranlib_only):  Change function from void to returning an
+       int.  Return 0 upon success, 1 otherwise.
+       (ranlib_touch): Likewise.
+       (main): Use return value from ranlib functions as exit value.
+       * objcopy.c (add_specific_symbol): Set status to 1 if get_file_size
+       fails.
+       (copy_file): Likewise.
+       (strip_main): Likewise.
+       (copy_main): Likewise.
+       * objdump.c (display_file): Set exit_status to 1 if get_file_size
+       fails.
+       * size.c (display_file): Set return_code to 1 if get_file_size
+       fails.
+
 2006-08-02  Thiemo Seufer  <ths@mips.com>
             Nigel Stephens  <nigel@mips.com>
 
index 7cd67bc0a1b08e1b742537d4bf80c3f09f4849c0..928bf1289592951a7c2df763f762503a8eed80ce 100644 (file)
@@ -68,7 +68,6 @@ static void slurp_symtab (bfd *);
 static void find_address_in_section (bfd *, asection *, void *);
 static void find_offset_in_section (bfd *, asection *);
 static void translate_addresses (bfd *, asection *);
-static void process_file (const char *, const char *, const char *);
 \f
 /* Print a usage message to STREAM and exit with STATUS.  */
 
@@ -261,9 +260,9 @@ translate_addresses (bfd *abfd, asection *section)
     }
 }
 
-/* Process a file.  */
+/* Process a file.  Returns an exit value for main().  */
 
-static void
+static int
 process_file (const char *file_name, const char *section_name,
              const char *target)
 {
@@ -272,7 +271,7 @@ process_file (const char *file_name, const char *section_name,
   char **matching;
 
   if (get_file_size (file_name) < 1)
-    return;
+    return 1;
 
   abfd = bfd_openr (file_name, target);
   if (abfd == NULL)
@@ -312,6 +311,8 @@ process_file (const char *file_name, const char *section_name,
     }
 
   bfd_close (abfd);
+
+  return 0;
 }
 \f
 int
@@ -401,7 +402,5 @@ main (int argc, char **argv)
   addr = argv + optind;
   naddr = argc - optind;
 
-  process_file (file_name, section_name, target);
-
-  return 0;
+  return process_file (file_name, section_name, target);
 }
index fe1c6402222d4166f373de729a0abb3d2d55b281..243144894b4a71b15b944d74c542dc3651678e4d 100644 (file)
@@ -1,6 +1,6 @@
 /* ar.c - Archive modify and extract.
    Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004, 2005
+   2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
 
    This file is part of GNU Binutils.
@@ -68,8 +68,8 @@ static void replace_members
   (bfd *, char **files_to_replace, bfd_boolean quick);
 static void print_descr (bfd * abfd);
 static void write_archive (bfd *);
-static void ranlib_only (const char *archname);
-static void ranlib_touch (const char *archname);
+static int  ranlib_only (const char *archname);
+static int  ranlib_touch (const char *archname);
 static void usage (int);
 \f
 /** Globals and flags */
@@ -420,6 +420,7 @@ main (int argc, char **argv)
 
   if (is_ranlib)
     {
+      int status = 0;
       bfd_boolean touch = FALSE;
 
       if (argc < 2
@@ -440,12 +441,12 @@ main (int argc, char **argv)
       while (arg_index < argc)
        {
          if (! touch)
-           ranlib_only (argv[arg_index]);
+           status |= ranlib_only (argv[arg_index]);
          else
-           ranlib_touch (argv[arg_index]);
+           status |= ranlib_touch (argv[arg_index]);
          ++arg_index;
        }
-      xexit (0);
+      xexit (status);
     }
 
   if (argc == 2 && strcmp (argv[1], "-M") == 0)
@@ -597,10 +598,7 @@ main (int argc, char **argv)
 
       if ((operation == none || operation == print_table)
          && write_armap == 1)
-       {
-         ranlib_only (argv[arg_index]);
-         xexit (0);
-       }
+       xexit (ranlib_only (argv[arg_index]));
 
       if (operation == none)
        fatal (_("no operation specified"));
@@ -1193,23 +1191,24 @@ replace_members (bfd *arch, char **files_to_move, bfd_boolean quick)
     output_filename = NULL;
 }
 
-static void
+static int
 ranlib_only (const char *archname)
 {
   bfd *arch;
 
   if (get_file_size (archname) < 1)
-    return;
+    return 1;
   write_armap = 1;
   arch = open_inarch (archname, (char *) NULL);
   if (arch == NULL)
     xexit (1);
   write_archive (arch);
+  return 0;
 }
 
 /* Update the timestamp of the symbol map of an archive.  */
 
-static void
+static int
 ranlib_touch (const char *archname)
 {
 #ifdef __GO32__
@@ -1221,7 +1220,7 @@ ranlib_touch (const char *archname)
   char **matching;
 
   if (get_file_size (archname) < 1)
-    return;
+    return 1;
   f = open (archname, O_RDWR | O_BINARY, 0);
   if (f < 0)
     {
@@ -1252,6 +1251,7 @@ ranlib_touch (const char *archname)
   if (! bfd_close (arch))
     bfd_fatal (archname);
 #endif
+  return 0;
 }
 
 /* Things which are interesting to map over all or some of the files: */
index 06e500d4754a7303ae788e03b4acd1b1d5c5c5ba..0d5684503ca8d1efb2bec30e70e4f007af76af60 100644 (file)
@@ -653,7 +653,10 @@ add_specific_symbols (const char *filename, struct symlist **list)
 
   size = get_file_size (filename);
   if (size == 0)
-    return;
+    {
+      status = 1;
+      return;
+    }
 
   buffer = xmalloc (size + 2);
   f = fopen (filename, FOPEN_RT);
@@ -1889,7 +1892,6 @@ copy_file (const char *input_filename, const char *output_filename,
 
   if (get_file_size (input_filename) < 1)
     {
-      non_fatal (_("error: the input file '%s' is empty"), input_filename);
       status = 1;
       return;
     }
@@ -2612,7 +2614,10 @@ strip_main (int argc, char *argv[])
       char *tmpname;
 
       if (get_file_size (argv[i]) < 1)
-       continue;
+       {
+         status = 1;
+         continue;
+       }
 
       if (preserve_dates)
        /* No need to check the return value of stat().
@@ -2623,8 +2628,8 @@ strip_main (int argc, char *argv[])
        tmpname = output_file;
       else
        tmpname = make_tempname (argv[i]);
-      status = 0;
 
+      status = 0;
       copy_file (argv[i], tmpname, input_target, output_target);
       if (status == 0)
        {
@@ -2640,7 +2645,7 @@ strip_main (int argc, char *argv[])
        free (tmpname);
     }
 
-  return 0;
+  return status;
 }
 
 static int
@@ -2809,7 +2814,10 @@ copy_main (int argc, char *argv[])
 
            size = get_file_size (s + 1);
            if (size < 1)
-             break;
+             {
+               status = 1;
+               break;
+             }
 
            pa = xmalloc (sizeof (struct section_add));
 
index 6e5eab56da24f9f67d70a74bd8bdf5bb2aaf549f..824cc3336b96417bc730bee7072a98fbde1a0258 100644 (file)
@@ -2902,7 +2902,10 @@ display_file (char *filename, char *target)
   bfd *arfile = NULL;
 
   if (get_file_size (filename) < 1)
-    return;
+    {
+      exit_status = 1;
+      return;
+    }
 
   file = bfd_openr (filename, target);
   if (file == NULL)
index b78cba02ba04c6d873e964265506176cdc14bab3..36a9af90c1ae2a1aed9ed3816f3e04b8e8bcdf3b 100644 (file)
@@ -1,6 +1,6 @@
 /* size.c -- report size of various sections of an executable file.
    Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
    This file is part of GNU Binutils.
 
@@ -346,7 +346,10 @@ display_file (char *filename)
   bfd *file;
 
   if (get_file_size (filename) < 1)
-    return;
+    {
+      return_code = 1;
+      return;
+    }
 
   file = bfd_openr (filename, target);
   if (file == NULL)