DSO issue

Dan Jacobowitz drow@false.org
Mon Sep 7 12:40:00 GMT 1998


On Mon, Sep 07, 1998 at 09:32:18AM +0200, Ralf S. Engelschall wrote:
> Building mod_auth_dbm.so works on most platforms because there the DBM stuff
> is in libc which is always available to DSOs ;-). The SHARED_CHAIN is on
> 1.3.2-dev. Sorry, it was added after 1.3.1. 

[background for crosspost to libc-alpha]
I am trying to build Apache under glibc 2.1 with db.h and -ldb.  I'm
encountering a problem with loaded modules not being able to see
symbols unless explicitly linked against -ldb, something not necessary
on i386 and glibc 2.0.7.
[/background]


I just want to add one more question to this...

On Debian 2.0 (glibc 2.0.7), the dbm stuff is not in libc. 
mod_auth_dbm is linked only against libc.  Apache, however, is linked
against libdb.  This works.  On powerpc and glibc 2.0.95, the situation
is similar: dbm in libdb, apache linked against -ldb, mod_auth_dbm
linked only against libdb.  This fails.

Oddly, mod_auth_db (which requires dbopen, also from libdb) loads fine. 

It looks like some kind of linker confusion.  Ahah - the missing
symbols from mod_auth_dbm are strong symbols and dbopen is weak.  Are
we sufficiently confused yet?  I could understand the other way around,
but it seems that only the weakly linked symbols are propogating to
dlopen()'d modules.

Any and all thoughts appreciated.


Dan



More information about the Libc-hacker mailing list