httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dean Gaudet <>
Subject Re: another naming question
Date Wed, 24 Dec 1997 20:54:55 GMT
On Wed, 24 Dec 1997, Alexei Kosut wrote:

> On Wed, 24 Dec 1997, Dean Gaudet wrote:
> > Commercial vendors only need to learn how to write binary modules
> > for Apache.  I've dealt with a vendor who supplied us with a binary
> > module linked against apache 1.1.3, when hotwired was using 1.2b10.
> > It was useless.  After some talking with them I convinced them to put
> > their proprietary code into a library with a couple well defined entry
> > points, and provide a module which calls those entry points.  Then I could
> > rebuild and upgrade at will.  This is pretty much like how mod_php works.
> See! If Apache was binary-compatible, that module would still have linked.

I think you're missing the point.  The module could have been useless even
if it had linked.  By providing me with a library interface and the
interface code I could upgrade the module to support any new things in
Apache.  Like, say, HTTP/1.1 crap.  Or I could make my site run faster by
doing things slightly differently... or any number of things that I
normally do when I have source code.  I didn't need the source to their
library, I just needed an interface. 

I don't want the module to just link, I want it to work. 

> > No it doesn't have to be the case, but we'll lock ourselves into something
> > we may regret.  Consider strncpy() which we've just been shown has a
> > legacy definition which makes it largely useless... libc is locked into
> > providing that legacy definition.  I just hate getting into situations like
> > that.
> Well certainly I'm not saying we should never change the API... but the
> act of adding a function shouldn't break the ability to link or load a
> module, just because it changes the order of the symbols.

It doesn't if you use the registration method. 

> > Take a shared executable, strip debug symbols from it, then do "strings
> > foo" and look at all the symbol names... this is on linux and solaris
> > at least.  Essentially it has to work this way because of LD_LIBRARY_PATH,
> > LD_PRELOAD, and the ilk.
> Sounds good. When does it do symbol resolution? (i.e., when the library is
> loaded, or when it needs a symbol?)

At load time. 


View raw message