Browse Source

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.
gdb_6_6-branch
Nick Clifton 20 years ago
parent
commit
d68c385bfc
  1. 20
      binutils/ChangeLog
  2. 13
      binutils/addr2line.c
  3. 28
      binutils/ar.c
  4. 20
      binutils/objcopy.c
  5. 5
      binutils/objdump.c
  6. 7
      binutils/size.c

20
binutils/ChangeLog

@ -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>

13
binutils/addr2line.c

@ -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 *);
/* 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;
}
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);
}

28
binutils/ar.c

@ -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);
/** 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: */

20
binutils/objcopy.c

@ -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));

5
binutils/objdump.c

@ -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)

7
binutils/size.c

@ -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)

Loading…
Cancel
Save