* plugin.h (plugin_active_plugins_p): New prototype.

(is_ir_dummy_bfd): Delete prototype.
	* plugin.c: Fix formatting issues.
	(is_ir_dummy_bfd): Make static.
	(plugin_active_plugins_p): New function.
	* ldfile.c (ldfile_try_open_bfd): Use it to save work if no plugins
	are loaded.  Always close file descriptor after claim handler returns.
	* ldmain.c (add_archive_element): Likewise.
This commit is contained in:
Dave Korn
2010-11-05 07:20:07 +00:00
parent f4eaaf7fce
commit d44ad554d4
5 changed files with 42 additions and 15 deletions

View File

@ -312,7 +312,8 @@ success:
bfd_object that it sets the bfd's arch and mach, which
will be needed when and if we want to bfd_create a new
one using this one as a template. */
if (bfd_check_format (entry->the_bfd, bfd_object))
if (bfd_check_format (entry->the_bfd, bfd_object)
&& plugin_active_plugins_p ())
{
int fd = open (attempt, O_RDONLY | O_BINARY);
if (fd >= 0)
@ -330,6 +331,8 @@ success:
if (plugin_call_claim_file (&file, &claimed))
einfo (_("%P%F: %s: plugin reported error claiming file\n"),
plugin_error_plugin ());
/* fd belongs to us, not the plugin; but we don't need it. */
close (fd);
if (claimed)
{
/* Discard the real file's BFD and substitute the dummy one. */
@ -340,10 +343,9 @@ success:
}
else
{
/* If plugin didn't claim the file, we don't need the fd or the
dummy bfd. Can't avoid speculatively creating it, alas. */
/* If plugin didn't claim the file, we don't need the dummy
bfd. Can't avoid speculatively creating it, alas. */
bfd_close_all_done (file.handle);
close (fd);
entry->claimed = FALSE;
}
}