This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Multi-file dumping in readelf
- From: Andreas Schwab <schwab at suse dot de>
- To: binutils at sources dot redhat dot com
- Date: 22 Dec 2002 14:36:39 +0100
- Subject: Multi-file dumping in readelf
When dumping debug section in multiple files at once with readelf you
can get spurious messages about non-existent or unrecognized sections.
The dump requests should be reset after every file, because the debug
sections are usually numbered differently in every object file.
Andreas.
2002-12-22 Andreas Schwab <schwab@suse.de>
* readelf.c (main): Reset dump request after each file.
--- binutils/readelf.c.~1.185.~ 2002-12-12 23:42:19.000000000 +0100
+++ binutils/readelf.c 2002-12-22 14:08:17.000000000 +0100
@@ -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;
}