I've just converted an application to use libtool and ltdl for opening its plugin modules; part of that conversion required prefixing the public-visible symbols in the modules with "modulename_LTX_", which ltdl strips when lt_dlsym is called. That all worked fine.

However, one of the reasons for making this change to libtool was so that the application could support being statically linked. I have modified the makefiles to use -dlopen and -dlpreopen where required, and now I get a static binary built with all the plugins linked in. So far so good... however, after figuring out a way to get at the preloaded_symbols list (see my message to this list from yesterday), I find out that the symbols in this list _do not have the prefix removed_! In spite of that, presym_sym (the "symbol finder" for preloaded modules) has no concept of the symbol prefix and makes no attempt to remove it before checking the symbol list. I now have to construct the prefix in my code so I can add it to the symbol, but only when I found the module in the preloaded symbols list.

Is this how this is supposed to work? It doesn't seem logical to me, at this point I could have built the infrastructure to do this myself (given that I don't have to support much portability beyond Linux) and not had to deal with this. Maybe I'm just missing something, but I don't see why the preloaded-symbols case shouldn't act _exactly_ like the shared-library-loaded-symbols case.



_______________________________________________
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool

Reply via email to