aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2006-09-23 11:06:52 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2006-09-23 11:06:52 +0000
commit71eb5a51c9ab9d8b38eb2f6a1518719e831c798a (patch)
treed9351e86cd152d1e404a81329ed2cfba262d1fc7
parent9441f26c008212c813d0bd174eaf7603a5b32ec2 (diff)
downloadpaludis-71eb5a51c9ab9d8b38eb2f6a1518719e831c798a.tar.gz
paludis-71eb5a51c9ab9d8b38eb2f6a1518719e831c798a.tar.xz
Don't use RTLD_LOCAL. g++ is over happy when it comes to template instantiations, and it can lead to multiple singleton instances.
-rw-r--r--paludis/repository_so_loader.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/paludis/repository_so_loader.cc b/paludis/repository_so_loader.cc
index 67a78a3..e3cc960 100644
--- a/paludis/repository_so_loader.cc
+++ b/paludis/repository_so_loader.cc
@@ -106,7 +106,9 @@ RepositorySoLoader::load_dir(const FSEntry & so_dir)
PALUDIS_VERSION_MINOR))(*d))
continue;
- void * dl(dlopen(stringify(*d).c_str(), RTLD_LOCAL | RTLD_NOW));
+ /* don't use RTLD_LOCAL, g++ is over happy about template instantiations, and it
+ * can lead to multiple singleton instances. */
+ void * dl(dlopen(stringify(*d).c_str(), RTLD_GLOBAL | RTLD_NOW));
if (dl)
dl_opened.push_back(dl);