aboutsummaryrefslogtreecommitdiff
path: root/binutils/readelf.c
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2002-12-23 13:18:02 +0000
committerAndreas Schwab <schwab@linux-m68k.org>2002-12-23 13:18:02 +0000
commit59f14fc0a3872ce9306832798fbaf1f7f59088ad (patch)
treee6091fa8525fee1e597267eaa73feda0edce09c4 /binutils/readelf.c
parentd5cd393307628c33a2e45d34638cbbab8ce28539 (diff)
downloadgdb-59f14fc0a3872ce9306832798fbaf1f7f59088ad.zip
gdb-59f14fc0a3872ce9306832798fbaf1f7f59088ad.tar.gz
gdb-59f14fc0a3872ce9306832798fbaf1f7f59088ad.tar.bz2
* readelf.c (main): Reset dump request after each file.
Diffstat (limited to 'binutils/readelf.c')
-rw-r--r--binutils/readelf.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 461d63f..c3a39da 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -10275,6 +10275,8 @@ main (argc, argv)
char **argv;
{
int err;
+ char *cmdline_dump_sects = NULL;
+ unsigned num_cmdline_dump_sects = 0;
#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
setlocale (LC_MESSAGES, "");
@@ -10290,12 +10292,38 @@ main (argc, argv)
if (optind < (argc - 1))
show_name = 1;
+ /* When processing more than one file remember the dump requests
+ issued on command line to reset them after each file. */
+ if (optind + 1 < argc && dump_sects != NULL)
+ {
+ cmdline_dump_sects = malloc (num_dump_sects);
+ if (cmdline_dump_sects == NULL)
+ error (_("Out of memory allocating dump request table."));
+ else
+ {
+ memcpy (cmdline_dump_sects, dump_sects, num_dump_sects);
+ num_cmdline_dump_sects = num_dump_sects;
+ }
+ }
+
err = 0;
while (optind < argc)
- err |= process_file (argv[optind++]);
+ {
+ err |= process_file (argv[optind++]);
+
+ /* Reset dump requests. */
+ if (optind < argc && dump_sects != NULL)
+ {
+ num_dump_sects = num_cmdline_dump_sects;
+ if (num_cmdline_dump_sects > 0)
+ memcpy (dump_sects, cmdline_dump_sects, num_cmdline_dump_sects);
+ }
+ }
if (dump_sects != NULL)
free (dump_sects);
+ if (cmdline_dump_sects != NULL)
+ free (cmdline_dump_sects);
return err;
}