2003-04-30 H.J. Lu <hjl@gnu.org>

* objdump.c (only): Change it to char **.
	(only_size): New.
	(only_used): New.
	(disassemble_data): Check only as an array.
	(dump_data): Likewise.
	(dump_relocs): Likewise.
	(main): Treat only as an array.
This commit is contained in:
H.J. Lu 2003-05-01 00:40:41 +00:00
parent d9a085da29
commit 6e50c90cfe
2 changed files with 51 additions and 8 deletions

View File

@ -1,3 +1,13 @@
2003-04-30 H.J. Lu <hjl@gnu.org>
* objdump.c (only): Change it to char **.
(only_size): New.
(only_used): New.
(disassemble_data): Check only as an array.
(dump_data): Likewise.
(dump_relocs): Likewise.
(main): Treat only as an array.
2003-04-24 Dimitrie O. Paun <dpaun@rogers.com> 2003-04-24 Dimitrie O. Paun <dpaun@rogers.com>
* doc/binutils.texi: Fix the documentation for the -fo option. * doc/binutils.texi: Fix the documentation for the -fo option.

View File

@ -67,7 +67,9 @@ static bfd_boolean disassemble; /* -d */
static bfd_boolean disassemble_all; /* -D */ static bfd_boolean disassemble_all; /* -D */
static int disassemble_zeroes; /* --disassemble-zeroes */ static int disassemble_zeroes; /* --disassemble-zeroes */
static bfd_boolean formats_info; /* -i */ static bfd_boolean formats_info; /* -i */
static char *only; /* -j secname */ static char **only; /* -j secname */
static size_t only_size = 0;
static size_t only_used = 0;
static int wide_output; /* -w */ static int wide_output; /* -w */
static bfd_vma start_address = (bfd_vma) -1; /* --start-address */ static bfd_vma start_address = (bfd_vma) -1; /* --start-address */
static bfd_vma stop_address = (bfd_vma) -1; /* --stop-address */ static bfd_vma stop_address = (bfd_vma) -1; /* --stop-address */
@ -1628,8 +1630,18 @@ disassemble_data (abfd)
&& only == NULL && only == NULL
&& (section->flags & SEC_CODE) == 0)) && (section->flags & SEC_CODE) == 0))
continue; continue;
if (only != (char *) NULL && strcmp (only, section->name) != 0)
continue; if (only != NULL)
{
size_t i;
for (i = 0; i < only_used; i++)
if (strcmp (only [i], section->name) == 0)
break;
if (i == only_used)
continue;
}
if ((section->flags & SEC_RELOC) != 0 if ((section->flags & SEC_RELOC) != 0
#ifndef DISASSEMBLER_NEEDS_RELOCS #ifndef DISASSEMBLER_NEEDS_RELOCS
@ -2221,9 +2233,13 @@ dump_data (abfd)
section->next) section->next)
{ {
int onaline = 16; int onaline = 16;
size_t i;
if (only == (char *) NULL || for (i = 0; i < only_used; i++)
strcmp (only, section->name) == 0) if (strcmp (only [i], section->name) == 0)
break;
if (only_used == 0 || i != only_used)
{ {
if (section->flags & SEC_HAS_CONTENTS) if (section->flags & SEC_HAS_CONTENTS)
{ {
@ -2286,7 +2302,7 @@ dump_data (abfd)
bfd_sprintf_vma (abfd, buf, (addr_offset + section->vma)); bfd_sprintf_vma (abfd, buf, (addr_offset + section->vma));
count = strlen (buf); count = strlen (buf);
if (count >= sizeof (buf)) if ((size_t) count >= sizeof (buf))
abort (); abort ();
putchar (' '); putchar (' ');
while (count < width) while (count < width)
@ -2411,7 +2427,13 @@ dump_relocs (abfd)
if (only) if (only)
{ {
if (strcmp (only, a->name)) size_t i;
for (i = 0; i < only_used; i++)
if (strcmp (only [i], a->name) == 0)
break;
if (i == only_used)
continue; continue;
} }
else if ((a->flags & SEC_RELOC) == 0) else if ((a->flags & SEC_RELOC) == 0)
@ -2641,7 +2663,18 @@ main (argc, argv)
disassembler_options = optarg; disassembler_options = optarg;
break; break;
case 'j': case 'j':
only = optarg; if (only == NULL)
{
only_size = 8;
only = (char **) xmalloc (only_size * sizeof (char *));
}
else if (only_used == only_size)
{
only_size += 8;
only = (char **) xrealloc (only,
only_size * sizeof (char *));
}
only [only_used++] = optarg;
break; break;
case 'l': case 'l':
with_line_numbers = TRUE; with_line_numbers = TRUE;