X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=binutils%2Fcoffdump.c;h=589bb4036244a16c0de14387e12cf82626a4026b;hb=4c530be873f1ca2ccd7b545dd2752cf27baa0ba5;hp=8f1a407e163b76eef97a5bf7d60e101e8def5eec;hpb=92f01d6100e9f8bf2c4178dc34c1084119d6292d;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/coffdump.c b/binutils/coffdump.c index 8f1a407e16..589bb40362 100644 --- a/binutils/coffdump.c +++ b/binutils/coffdump.c @@ -1,12 +1,11 @@ /* Coff file dumper. - Copyright 1994, 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007 - Free Software Foundation, Inc. + Copyright (C) 1994-2019 Free Software Foundation, Inc. This file is part of GNU Binutils. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -16,18 +15,22 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + /* Written by Steve Chamberlain This module reads a type tree generated by coffgrok and prints it out so we can test the grokker. */ +#include "sysdep.h" #include "bfd.h" +#include "bfd_stdint.h" #include "libiberty.h" +#include "bucomm.h" #include "coffgrok.h" -#include "bucomm.h" #include "getopt.h" static int atnl; @@ -123,56 +126,56 @@ static void dump_coff_type (struct coff_type *p) { tab (1); - printf ("size %d ", p->size); + printf (_("size %d "), p->size); switch (p->type) { case coff_secdef_type: - printf ("section definition at %x size %x\n", + printf (_("section definition at %x size %x\n"), p->u.asecdef.address, p->u.asecdef.size); nl (); break; case coff_pointer_type: - printf ("pointer to"); + printf (_("pointer to")); nl (); dump_coff_type (p->u.pointer.points_to); break; case coff_array_type: - printf ("array [%d] of", p->u.array.dim); + printf (_("array [%d] of"), p->u.array.dim); nl (); dump_coff_type (p->u.array.array_of); break; case coff_function_type: - printf ("function returning"); + printf (_("function returning")); nl (); dump_coff_type (p->u.function.function_returns); dump_coff_lines (p->u.function.lines); - printf ("arguments"); + printf (_("arguments")); nl (); dump_coff_scope (p->u.function.parameters); tab (0); - printf ("code"); + printf (_("code")); nl (); dump_coff_scope (p->u.function.code); tab(0); break; case coff_structdef_type: - printf ("structure definition"); + printf (_("structure definition")); nl (); dump_coff_scope (p->u.astructdef.elements); break; case coff_structref_type: if (!p->u.aenumref.ref) - printf ("structure ref to UNKNOWN struct"); + printf (_("structure ref to UNKNOWN struct")); else - printf ("structure ref to %s", p->u.aenumref.ref->name); + printf (_("structure ref to %s"), p->u.aenumref.ref->name); break; case coff_enumref_type: - printf ("enum ref to %s", p->u.astructref.ref->name); + printf (_("enum ref to %s"), p->u.astructref.ref->name); break; case coff_enumdef_type: - printf ("enum definition"); + printf (_("enum definition")); nl (); dump_coff_scope (p->u.aenumdef.elements); break; @@ -245,25 +248,26 @@ dump_coff_where (struct coff_where *p) switch (p->where) { case coff_where_stack: - printf ("Stack offset %x", p->offset); + printf (_("Stack offset %x"), p->offset); break; case coff_where_memory: - printf ("Memory section %s+%x", p->section->name, p->offset); + printf (_("Memory section %s+%x"), p->section->name, p->offset); break; case coff_where_register: - printf ("Register %d", p->offset); + printf (_("Register %d"), p->offset); break; case coff_where_member_of_struct: - printf ("Struct Member offset %x", p->offset); + printf (_("Struct Member offset %x"), p->offset); break; case coff_where_member_of_enum: - printf ("Enum Member offset %x", p->offset); + printf (_("Enum Member offset %x"), p->offset); break; case coff_where_unknown: - printf ("Undefined symbol"); + printf (_("Undefined symbol")); break; case coff_where_strtag: printf ("STRTAG"); + break; case coff_where_entag: printf ("ENTAG"); break; @@ -327,27 +331,27 @@ static void dump_coff_symbol (struct coff_symbol *p) { tab (1); - printf ("List of symbols"); + printf (_("List of symbols")); nl (); while (p) { tab (1); tab (1); - printf ("Symbol %s, tag %d, number %d", p->name, p->tag, p->number); + printf (_("Symbol %s, tag %d, number %d"), p->name, p->tag, p->number); nl (); tab (-1); tab (1); - printf ("Type"); + printf (_("Type")); nl (); dump_coff_type (p->type); tab (-1); tab (1); - printf ("Where"); + printf (_("Where")); dump_coff_where (p->where); tab (-1); tab (1); - printf ("Visible"); + printf (_("Visible")); dump_coff_visible (p->visible); tab (-1); p = p->next; @@ -362,7 +366,8 @@ dump_coff_scope (struct coff_scope *p) if (p) { tab (1); - printf ("List of blocks %lx ",(unsigned long) p); + printf ("%s %" BFD_VMA_FMT "x ", + _("List of blocks "), (bfd_vma) (uintptr_t) p); if (p->sec) printf( " %s %x..%x", p->sec->name,p->offset, p->offset + p->size -1); @@ -375,10 +380,10 @@ dump_coff_scope (struct coff_scope *p) while (p) { tab (0); - printf ("vars %d", p->nvars); + printf (_("vars %d"), p->nvars); nl (); dump_coff_symbol (p->vars_head); - printf ("blocks"); + printf (_("blocks")); nl (); dump_coff_scope (p->list_head); nl (); @@ -396,13 +401,13 @@ static void dump_coff_sfile (struct coff_sfile *p) { tab (1); - printf ("List of source files"); + printf (_("List of source files")); nl (); while (p) { tab (0); - printf ("Source file %s", p->name); + printf (_("Source file %s"), p->name); nl (); dump_coff_scope (p->scope); p = p->next; @@ -413,21 +418,23 @@ dump_coff_sfile (struct coff_sfile *p) static void dump_coff_section (struct coff_section *ptr) { - int i; + unsigned int i; tab (1); - printf ("section %s %d %d address %x size %x number %d nrelocs %d", + printf (_("section %s %d %d address %x size %x number %d nrelocs %u"), ptr->name, ptr->code, ptr->data, ptr->address,ptr->size, ptr->number, ptr->nrelocs); nl (); for (i = 0; i < ptr->nrelocs; i++) { + struct coff_reloc * r = ptr->relocs + i; tab (0); printf ("(%x %s %x)", - ptr->relocs[i].offset, - ptr->relocs[i].symbol->name, - ptr->relocs[i].addend); + r->offset, + /* PR 17512: file: 0a38fb7c. */ + r->symbol == NULL ? _("") : r->symbol->name, + r->addend); nl (); } @@ -441,7 +448,7 @@ coff_dump (struct coff_ofile *ptr) printf ("Coff dump"); nl (); - printf ("#souces %d", ptr->nsources); + printf (_("#sources %d"), ptr->nsources); nl (); dump_coff_sfile (ptr->source_head); @@ -455,7 +462,7 @@ static void show_usage (FILE *file, 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, _(" Print a human readable interpretation of a COFF object file\n")); fprintf (file, _(" The options are:\n\ @ Read options from \n\ -h --help Display this information\n\ @@ -494,6 +501,7 @@ 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); @@ -545,9 +553,11 @@ main (int ac, char **av) } tree = coff_grok (abfd); - - coff_dump (tree); - printf ("\n"); + if (tree) + { + coff_dump (tree); + printf ("\n"); + } return 0; }