Hallo Ralf, On 22 May 2007, at 13:16, Ralf Wildenhues wrote:
* Gary V. Vaughan wrote on Tue, May 22, 2007 at 02:11:03PM CEST:I'm wondering how to best warn people who have their project build rely on RTLD_GLOBAL that what they are doing is inherently non-portable.Erm, relying on RTLD_LOCAL is non-portable.
It is? You mean that relying on identical symbols from two dlopened modules to not clash is non-portable? On what architectures?
Relying on RTLD_GLOBAL is not; after all, dlpreloading offers similar.
Relying on RTLD_GLOBAL exported symbols to resolve undefined symbols in subsequently dlopened modules doesn't work on windows, or AIX. That seems pretty non-portable to me...
But also relying on allowing undefined symbols in your link is non-portable. I don't see how you can distinguish cases here reliably, in an automatic way.
Except for annoyance to the end-user, I was originally thinking that we don't need to distinguish. When the developer's libltdl client code calls lt_dladvise_global, we could have it emit a warning to stderr that says: If what you are trying to do won't work without calling lt_dladvise_global(), then you're code will not be fully portable.
At first I thought about having the call to lt_dladvise_global emit a warning to stderr on first call, but that affects users as well as developers. Now I'm thinking the best we can do is flag it in the release notes, the NEWS file and the manual.That would be fine.
I'll add it to my TODO.
Cheers,
Gary
--
())_. Email me: [EMAIL PROTECTED]
( '/ Read my blog: http://blog.azazil.net
/ )= ...and my book: http://sources.redhat.com/autobook
`(_~)_ Join my AGLOCO Network: http://www.agloco.com/r/BBBS7912
PGP.sig
Description: This is a digitally signed message part
