On Oct 27, 2006, at 1:07 PM, Michael B Allen wrote:
> On Fri, 27 Oct 2006 12:12:46 -0400
> "Brian J. France" <list@firehawksystems.com> wrote:
>
>> On Oct 27, 2006, at 11:57 AM, Michael B Allen wrote:
>>> Is there any way to determine exactly which version of PHP first
>>> used the
>>> RTLD_DEEPBIND flag to dlopen(3)? Can webcvs be used somehow. I
>>> *think*
>>> it's between 4.3 and 4.4 but I'm not sure.
>>
>> 4.4:
>>
>> http://cvs.php.net/viewvc.cgi/Zend/zend.h?view=log&pathrev=PHP_4_4
>>
>> and
>>
>> 5.1:
>>
>> http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.h?
>> view=log&pathrev=PHP_5_1
>>
>> and I plan on removing it from our internal builds as it causes more
>> problems than I think it fixes (on RHEL only).
>
> Err, that'll break my module.
Unless you work at Yahoo!, this will not effect you (our internal
builds == Y!). If you do work at Y! we should take this talk onto
our internal mailing lists.
Also your module is busted on any platform that doesn't support
RTLD_DEEPBIND, like FreeBSD.
> My module is linked with Heimdal kerberos. I need Heimdal because it
> has proper support for SPNEGO (amnong other reasons). But if PHP or
> any other module is linked with a different Kerberos library (e.g.
> MIT)
> symbol collisions will occur resulting in all sorts of strange
> behavior.
Could you do the php_compat.h trick and namesapce functions and link
it statically? This is what PHP does for things like pcre and gd.
> If you are going to remove RTLD_DEEPBIND, can you recommend an
> alternative
> method for linking a module so that said symbol collisions do not
> result?
>
> What problems are you seeing with RTLD_DEEPBIND?
>
> Perhaps it could be an extension specific ini option like:
>
> extension = mymodule.so:RTLD_DEEPBIND
>
> or
>
> extension.deepbind = mymodule.so
Ya, I think the extension.deepbind would be a good options (if I had
time to work on it).
Brian