diff --git a/bfd/plugin.c b/bfd/plugin.c index 49395e8..aea4969 100644 --- a/bfd/plugin.c +++ b/bfd/plugin.c @@ -106,7 +106,13 @@ add_symbols (void * handle, return LDPS_OK; } -extern char *program_name __attribute__ ((weak)); +static const char *plugin_program_name; + +void +bfd_plugin_set_program_name (const char *program_name) +{ + plugin_program_name = program_name; +} static int try_load_plugin (const char *pname) @@ -180,11 +186,11 @@ load_plugin (void) if (plugin_name) return try_load_plugin (plugin_name); - if (!program_name) + if (!plugin_program_name) return 0; plugin_dir = concat (BINDIR, "/../lib/bfd-plugins", NULL); - p = make_relative_prefix (program_name, + p = make_relative_prefix (plugin_program_name, BINDIR, plugin_dir); free (plugin_dir); diff --git a/bfd/plugin.h b/bfd/plugin.h index 2fae2de..3091f97 100644 --- a/bfd/plugin.h +++ b/bfd/plugin.h @@ -23,6 +23,7 @@ #include "bfd.h" +void bfd_plugin_set_program_name (const char *); void bfd_plugin_set_plugin (const char *); typedef struct plugin_data_struct diff --git a/binutils/ar.c b/binutils/ar.c index d28419f..318cfe0 100644 --- a/binutils/ar.c +++ b/binutils/ar.c @@ -392,6 +392,9 @@ main (int argc, char **argv) program_name = argv[0]; xmalloc_set_program_name (program_name); +#if BFD_SUPPORTS_PLUGINS + bfd_plugin_set_program_name (program_name); +#endif expandargv (&argc, &argv); diff --git a/binutils/nm.c b/binutils/nm.c index b03d1b6..51f67d1 100644 --- a/binutils/nm.c +++ b/binutils/nm.c @@ -1515,6 +1515,9 @@ main (int argc, char **argv) program_name = *argv; xmalloc_set_program_name (program_name); +#if BFD_SUPPORTS_PLUGINS + bfd_plugin_set_program_name (program_name); +#endif START_PROGRESS (program_name, 0);