X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=binutils%2Fsysdump.c;h=7eebbd61d3373a17c884a327fab24660fcae1c95;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=460c6915402c6f50a8eabcae33f75ea9f924b7a8;hpb=3614867c425256c101bea9676b0d2cbc60c46f7a;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/sysdump.c b/binutils/sysdump.c index 460c691540..7eebbd61d3 100644 --- a/binutils/sysdump.c +++ b/binutils/sysdump.c @@ -1,6 +1,5 @@ /* Sysroff object format dumper. - Copyright 1994, 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007 - Free Software Foundation, Inc. + Copyright (C) 1994-2020 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -39,21 +38,7 @@ static int code; static int addrsize = 4; static FILE *file; -static void dh (unsigned char *, int); -static void itheader (char *, int); -static void p (void); -static void tabout (void); -static void pbarray (barray *); -static int getone (int); -static int opt (int); -static void must (int); -static void tab (int, char *); -static void dump_symbol_info (void); static void derived_type (void); -static void module (void); -static void show_usage (FILE *, int); - -extern int main (int, char **); static char * getCHARS (unsigned char *ptr, int *idx, int size, int max) @@ -63,10 +48,13 @@ getCHARS (unsigned char *ptr, int *idx, int size, int max) int b = size; if (b >= max) - return "*undefined*"; + return _("*undefined*"); if (b == 0) { + /* PR 17512: file: 13caced2. */ + if (oc >= max) + return _("*corrupt*"); /* Got to work out the length of the string from self. */ b = ptr[oc++]; (*idx) += 8; @@ -134,7 +122,7 @@ fillup (unsigned char *ptr) sum += ptr[i]; if ((sum & 0xff) != 0xff) - printf ("SUM IS %x\n", sum); + printf (_("SUM IS %x\n"), sum); if (dump) dh (ptr, size); @@ -167,7 +155,12 @@ getINT (unsigned char *ptr, int *idx, int size, int max) int byte = *idx / 8; if (byte >= max) - return 0; + { + /* PR 17512: file: id:000001,src:000002,op:flip1,pos:45. */ + /* Prevent infinite loops re-reading beyond the end of the buffer. */ + fatal (_("ICE: getINT: Out of buffer space")); + return 0; + } if (size == -2) size = addrsize; @@ -189,7 +182,7 @@ getINT (unsigned char *ptr, int *idx, int size, int max) n = (ptr[byte + 0] << 24) + (ptr[byte + 1] << 16) + (ptr[byte + 2] << 8) + (ptr[byte + 3]); break; default: - abort (); + fatal (_("Unsupported read size: %d"), size); } *idx += size * 8; @@ -211,9 +204,9 @@ getBITS (unsigned char *ptr, int *idx, int size, int max) } static void -itheader (char *name, int code) +itheader (char *name, int icode) { - printf ("\n%s 0x%02x\n", name, code); + printf ("\n%s 0x%02x\n", name, icode); } static int indent; @@ -500,7 +493,7 @@ getone (int type) break; default: - printf ("GOT A %x\n", c); + printf (_("GOT A %x\n"), c); return 0; break; } @@ -518,7 +511,7 @@ static void must (int x) { if (!getone (x)) - printf ("WANTED %x!!\n", x); + printf (_("WANTED %x!!\n"), x); } static void @@ -536,7 +529,7 @@ tab (int i, char *s) static void dump_symbol_info (void) { - tab (1, "SYMBOL INFO"); + tab (1, _("SYMBOL INFO")); while (opt (IT_dsy_CODE)) { @@ -554,7 +547,7 @@ dump_symbol_info (void) static void derived_type (void) { - tab (1, "DERIVED TYPE"); + tab (1, _("DERIVED TYPE")); while (1) { @@ -611,11 +604,13 @@ module (void) int c = 0; int l = 0; - tab (1, "MODULE***\n"); + tab (1, _("MODULE***\n")); do { c = getc (file); + if (c == EOF) + break; ungetc (c, file); c &= 0x7f; @@ -638,19 +633,17 @@ module (void) } } -char *program_name; - -static void -show_usage (FILE *file, int status) +ATTRIBUTE_NORETURN static void +show_usage (FILE *ffile, int status) { - fprintf (file, _("Usage: %s [option(s)] in-file\n"), program_name); - fprintf (file, _("Print a human readable interpretation of a SYSROFF object file\n")); - fprintf (file, _(" The options are:\n\ + fprintf (ffile, _("Usage: %s [option(s)] in-file\n"), program_name); + fprintf (ffile, _("Print a human readable interpretation of a SYSROFF object file\n")); + fprintf (ffile, _(" The options are:\n\ -h --help Display this information\n\ -v --version Print the program's version number\n")); if (REPORT_BUGS_TO[0] && status == 0) - fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO); + fprintf (ffile, _("Report bugs to %s\n"), REPORT_BUGS_TO); exit (status); } @@ -658,7 +651,7 @@ int main (int ac, char **av) { char *input_file = NULL; - int opt; + int option; static struct option long_options[] = { {"help", no_argument, 0, 'h'}, @@ -677,12 +670,13 @@ main (int ac, char **av) program_name = av[0]; xmalloc_set_program_name (program_name); + bfd_set_error_program_name (program_name); expandargv (&ac, &av); - while ((opt = getopt_long (ac, av, "HhVv", long_options, (int *) NULL)) != EOF) + while ((option = getopt_long (ac, av, "HhVv", long_options, (int *) NULL)) != EOF) { - switch (opt) + switch (option) { case 'H': case 'h':