* gcc/plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149424
138bc75d-0d04-0410-961f-
82ee72b054a4
+
+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
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 ());