diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2002-12-23 13:18:02 +0000 |
---|---|---|
committer | Andreas Schwab <schwab@linux-m68k.org> | 2002-12-23 13:18:02 +0000 |
commit | 59f14fc0a3872ce9306832798fbaf1f7f59088ad (patch) | |
tree | e6091fa8525fee1e597267eaa73feda0edce09c4 | |
parent | d5cd393307628c33a2e45d34638cbbab8ce28539 (diff) | |
download | gdb-59f14fc0a3872ce9306832798fbaf1f7f59088ad.zip gdb-59f14fc0a3872ce9306832798fbaf1f7f59088ad.tar.gz gdb-59f14fc0a3872ce9306832798fbaf1f7f59088ad.tar.bz2 |
* readelf.c (main): Reset dump request after each file.
-rw-r--r-- | binutils/ChangeLog | 4 | ||||
-rw-r--r-- | binutils/readelf.c | 30 |
2 files changed, 33 insertions, 1 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 828ae57..0a60a64 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2002-12-23 Andreas Schwab <schwab@suse.de> + + * readelf.c (main): Reset dump request after each file. + 2002-12-23 Nick Clifton <nickc@redhat.com> * nlmconv.c (main): Pass TRUE as third argument to 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; } |