Finally got to the bottom of this, so I'll post my mistake here in case it helps another.
Trouble was that I was specifying RTLD_DEEPBIND to dlopen(), which "[places] the lookup scope of the symbols in this library ahead of the global scope" (man dlopen). Hence the output from "LD_DEBUG..." has the second binding made immediately, as the symbol is found in the first library searched (Y.so). I've lost track in the mists of time of why I was using DEEPBIND at all, and given the reason for its original introduction - "This can be used to work around problems of morons who cannot keep ABIs stable and have the same symbol name in different DSOs." (Ulrich Drepper) - I don't see that it's needed here. Any chance someone here is in a position to add a short note to this effect to http://gcc.gnu.org/faq.html#dso ? No matter how many times I read that FAQ, it didn't click... cheers ben _______________________________________________ help-gplusplus mailing list help-gplusplus@gnu.org http://lists.gnu.org/mailman/listinfo/help-gplusplus