From 59f14fc0a3872ce9306832798fbaf1f7f59088ad Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 23 Dec 2002 13:18:02 +0000 Subject: [PATCH] * readelf.c (main): Reset dump request after each file. --- binutils/ChangeLog | 4 ++++ binutils/readelf.c | 30 +++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 828ae57fcd1..0a60a640010 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2002-12-23 Andreas Schwab + + * readelf.c (main): Reset dump request after each file. + 2002-12-23 Nick Clifton * nlmconv.c (main): Pass TRUE as third argument to diff --git a/binutils/readelf.c b/binutils/readelf.c index 461d63f701a..c3a39da9fab 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; } -- 2.30.2