objdump: Delete close optimisation

In commit cd6581da62, Nick made an optimisation that was reasonable
at the time, but then pr22032 came along and commit 7c0ed39626 made
bfd_close_all_done free memory.  So Nick's optimisation is now
ineffective, and the comment wrong.

	* objdump.c (display_file): Delete last_file param.  Update
	caller.  Call bfd_close always.
This commit is contained in:
Alan Modra
2024-12-13 08:52:57 +10:30
parent 27e69fa7e9
commit d2cca35960

View File

@@ -5932,7 +5932,7 @@ display_any_bfd (bfd *file, int level)
}
static void
display_file (char *filename, char *target, bool last_file)
display_file (char *filename, char *target)
{
bfd *file;
@@ -5951,18 +5951,7 @@ display_file (char *filename, char *target, bool last_file)
display_any_bfd (file, 0);
/* This is an optimization to improve the speed of objdump, especially when
dumping a file with lots of associated debug informatiom. Calling
bfd_close on such a file can take a non-trivial amount of time as there
are lots of lists to walk and buffers to free. This is only really
necessary however if we are about to load another file and we need the
memory back. Otherwise, if we are about to exit, then we can save (a lot
of) time by only doing a quick close, and allowing the OS to reclaim the
memory for us. */
if (! last_file)
bfd_close (file);
else
bfd_close_all_done (file);
bfd_close (file);
}
int
@@ -6362,11 +6351,11 @@ main (int argc, char **argv)
else
{
if (optind == argc)
display_file ("a.out", target, true);
display_file ("a.out", target);
else
for (; optind < argc;)
{
display_file (argv[optind], target, optind == argc - 1);
display_file (argv[optind], target);
optind++;
}
}