Dear Ralf, You wrote: > We need RTLD_GLOBAL by default at the moment, simply because some > libltdl users expect things to work this way. We could add a new > interface which allows some kind of localization of symbol scope, > say lt_dlopen_mode("foo.la", LT_DL_LOCAL), but what about graceful > degradation on systems which do not allow such localization? > > Consider, as an extreme, systems with static libraries only. > There, above scheme simply won't work unmodified. However, libltdl > *can* work in the static setting if you employ the symbol prefixing > as described in the documentation and used in the libtool/mdemo/ > tests: In module foo1, use > #define bar foo1_LTX_bar > > Granted, this isn't pretty, nor fun to debug, but it should make both > static linking work, and it should fix your issue above in the shared > linking case: lt_dlsym will look for `foo1_LTX_bar' before looking for > `bar'. > > Does this help you? Maybe we should add a TODO item for lt_dlopen_mode. > What do the other people think? I must admit that I don't even know > whether all other dlopening mechanisms natively allow to limit symbol > scope, nor whether such semantics are compatible. > > Cheers, > Ralf
Thank you for the information; I understand now better how Libtool works. For me this is fine, but I am just a user of the cvsnt package, not the owner. One final remark: In ltdl.c the link flag "LT_LAZY_OR_NOW" can be defined outside of ltdl.c, but the link flag "LT_GLOBAL" can't; therefore you cannot set this parameter externally to RTLD_LOCAL. Probably this unsymmetrical definition of the link flags can be aligned. Best regards Jan Giesen _______________________________________________ http://lists.gnu.org/mailman/listinfo/libtool