From: Nick Clifton Date: Fri, 19 Jun 2020 09:25:43 +0000 (+0100) Subject: Silence warnings about incompatible plugins. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=13aa5ceb01cc94a0e617f397c0c5434fc22bb1e5;p=binutils-gdb.git Silence warnings about incompatible plugins. I have been looking at a Fedora bug report[1] from a user who was receiving warning messages from the BFD library about incompatible plugins. It turns out that they had both 32-bit and 64-bit versions of the same plugin installed, and the BFD library was attempting to load all of them. After thinking about it for a while, it seemed to me that the simplest solution was to not warn about incompatible plugins whilst attempting to create a list of viable plugins. [1]: https://bugzilla.redhat.com/show_bug.cgi?id=1836618 * plugin.c (try_load_plugin): Suppress the error message about being unable to open a plugin if creating a list of viable plugins. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 52b2df63649..6996d040f90 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-06-19 Nick Clifton + + * plugin.c (try_load_plugin): Suppress the error message about + being unable to open a plugin if creating a list of viable + plugins. + 2020-06-16 Alan Modra * aout-tic30.c: Delete file. diff --git a/bfd/plugin.c b/bfd/plugin.c index 97f1c9c7731..5ed87578091 100644 --- a/bfd/plugin.c +++ b/bfd/plugin.c @@ -249,17 +249,18 @@ try_claim (bfd *abfd) return claimed; } -static int -try_load_plugin (const char *pname, - struct plugin_list_entry *plugin_list_iter, - bfd *abfd, bfd_boolean build_list_p) +static bfd_boolean +try_load_plugin (const char * pname, + struct plugin_list_entry * plugin_list_iter, + bfd * abfd, + bfd_boolean build_list_p) { void *plugin_handle; struct ld_plugin_tv tv[5]; int i; ld_plugin_onload onload; enum ld_plugin_status status; - int result = 0; + bfd_boolean result = FALSE; /* NB: Each object is independent. Reuse the previous plugin from the last run will lead to wrong result. */ @@ -273,15 +274,20 @@ try_load_plugin (const char *pname, plugin_handle = dlopen (pname, RTLD_NOW); if (!plugin_handle) { - _bfd_error_handler ("Failed to load plugin '%s', reason: %s\n", - pname, dlerror ()); - return 0; + /* If we are building a list of viable plugins, then + we do not bother the user with the details of any + plugins that cannot be loaded. */ + if (! build_list_p) + _bfd_error_handler ("Failed to load plugin '%s', reason: %s\n", + pname, dlerror ()); + return FALSE; } if (plugin_list_iter == NULL) { size_t length_plugin_name = strlen (pname) + 1; char *plugin_name = bfd_malloc (length_plugin_name); + if (plugin_name == NULL) goto short_circuit; plugin_list_iter = bfd_malloc (sizeof *plugin_list_iter); @@ -342,7 +348,7 @@ try_load_plugin (const char *pname, goto short_circuit; abfd->plugin_format = bfd_plugin_yes; - result = 1; + result = TRUE; short_circuit: dlclose (plugin_handle); @@ -446,7 +452,7 @@ build_plugin_list (bfd *abfd) full_name = concat (plugin_dir, "/", ent->d_name, NULL); if (stat (full_name, &st) == 0 && S_ISREG (st.st_mode)) - try_load_plugin (full_name, NULL, abfd, TRUE); + (void) try_load_plugin (full_name, NULL, abfd, TRUE); free (full_name); } closedir (d); @@ -458,7 +464,7 @@ build_plugin_list (bfd *abfd) has_plugin_list = plugin_list != NULL; } -static int +static bfd_boolean load_plugin (bfd *abfd) { struct plugin_list_entry *plugin_list_iter; @@ -467,17 +473,17 @@ load_plugin (bfd *abfd) return try_load_plugin (plugin_name, plugin_list, abfd, FALSE); if (plugin_program_name == NULL) - return 0; + return FALSE; build_plugin_list (abfd); for (plugin_list_iter = plugin_list; plugin_list_iter; plugin_list_iter = plugin_list_iter->next) - if (try_load_plugin (NULL, plugin_list_iter, abfd, FALSE)) - return 1; + if (try_load_plugin (NULL, plugin_list_iter, abfd,FALSE)) + return TRUE; - return 0; + return FALSE; }