Replace RTLD_LOCAL with RTLD_GLOBAL

Since we have drivers which depend on each other (ie QEMU/LXC
depend on the network driver APIs), we need to use RTLD_GLOBAL
instead of RTLD_LOCAL. While this pollutes the calling binary
with many more symbols, this is no worse than if we directly
link to the drivers, and this only applies to libvirtd

* src/driver.c: s/RTLD_LOCAL/RTLD_GLOBAL/

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2012-04-02 17:23:59 +01:00
parent ee53a8c8ec
commit f5f1fe1b3a

View File

@ -59,7 +59,7 @@ virDriverLoadModule(const char *name)
goto cleanup;
}
handle = dlopen(modfile, RTLD_NOW | RTLD_LOCAL);
handle = dlopen(modfile, RTLD_NOW | RTLD_GLOBAL);
if (!handle) {
VIR_ERROR(_("failed to load module %s %s"), modfile, dlerror());
goto cleanup;