From 9167e5c6b080baae619af527ee43cf89e1898b6f Mon Sep 17 00:00:00 2001 From: Dave Korn Date: Fri, 5 Nov 2010 07:20:06 +0000 Subject: * 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. --- ld/ldfile.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'ld/ldfile.c') diff --git a/ld/ldfile.c b/ld/ldfile.c index 701b3803ca..6364469071 100644 --- a/ld/ldfile.c +++ b/ld/ldfile.c @@ -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; } } -- cgit v1.2.1