Re: [RFC] Module API Introspection

From: Date: Fri, 24 Jan 2014 14:29:53 +0000
Subject: Re: [RFC] Module API Introspection
References: 1 2 3 4  Groups: php.internals 
Request: Send a blank email to internals+get-71506@lists.php.net to get a copy of this message
On Fri, Jan 24, 2014 at 3:15 PM, Johannes Schlüter <johannes@schlueters.de> wrote: > On Fri, 2014-01-24 at 15:01 +0100, Julien Pauli wrote: >> > * I think (didn't check) there will be issues due to tsrm >> symols >> > when an extension provides INI options and TSRM/non-TSRM >> doesn't >> > match >> >> I don't get it. We access very few fields of zend_module_entry, and >> they are all placed before the _zend_ini_entry one. So if there is a >> problem of alignment mismatch, we won't be affected AFAIK. >> > INI settings are in a global variable, referring to specific update > handlers. I remember cases where the error while loading extensions was > about missing OnUpdateBool. I can imagine other similar errors. > >> > * Afaik Windows' LoadLibrary doesn't do lazy loading but will >> > confront the user with a dialog box when symbols can't be >> found >> > * ... I'm sure there are more >> >> Same : the same happens on WIndows when you try to load an extension. >> So , we already manage this behavior and cant do anything about it. >> > The point is: What is the benefit of such a feature if it often can't be > used? Maybe we can think more and find a better way to approach this? I'm all open to new ideas :-) > I don't have a better idea than something like a shell script doing > strings xdebug.so | grep API -- which obviously is no good idea > either, but maybe somebody is smarter than me. That's what we ended telling to attendees : we have no way in PHP actually to check the API of an extension, except by trying to load it. However, GNU tools playing with ELF format are a global Unix solution working, but not coming from PHP obviously. The only safe thing we could do, is wrapping libelf and play with it. Somehow dirty and adds a new dependency :-p Julien

« previous php.internals (#71506) next »