plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.

2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>

	* gcc/plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.

From-SVN: r149424
This commit is contained in:
Basile Starynkevitch 2009-07-09 17:57:14 +00:00 committed by Basile Starynkevitch
parent 8be2c87161
commit 8d4cf6d7c3
2 changed files with 10 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2009-07-09 Basile Starynkevitch <basile@starynkevitch.net>
* plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
2009-07-09 Jakub Jelinek <jakub@redhat.com>
PR middle-end/40692

View File

@ -592,7 +592,11 @@ try_init_one_plugin (struct plugin_name_args *plugin)
char *err;
PTR_UNION_TYPE (plugin_init_func) plugin_init_union;
dl_handle = dlopen (plugin->full_name, RTLD_NOW);
/* We use RTLD_NOW to accelerate binding and detect any mismatch
between the API expected by the plugin and the GCC API; we use
RTLD_GLOBAL which is useful to plugins which themselves call
dlopen. */
dl_handle = dlopen (plugin->full_name, RTLD_NOW | RTLD_GLOBAL);
if (!dl_handle)
{
error ("Cannot load plugin %s\n%s", plugin->full_name, dlerror ());