Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Apr 2006 12:26:57 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        deischen@freebsd.org
Cc:        victor@bsdes.net, hackers@freebsd.org
Subject:   Re: Missing dependencies on shared libraries
Message-ID:  <20060415.122657.111699385.imp@bsdimp.com>
In-Reply-To: <Pine.GSO.4.64.0604151411140.9269@sea.ntplx.net>
References:  <Pine.GSO.4.64.0604151358210.9220@sea.ntplx.net> <20060415.120640.28764842.imp@bsdimp.com> <Pine.GSO.4.64.0604151411140.9269@sea.ntplx.net>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <Pine.GSO.4.64.0604151411140.9269@sea.ntplx.net>
            Daniel Eischen <deischen@freebsd.org> writes:
: On Sat, 15 Apr 2006, M. Warner Losh wrote:
: 
: > In message: <Pine.GSO.4.64.0604151358210.9220@sea.ntplx.net>
: >            Daniel Eischen <deischen@freebsd.org> writes:
: > : On Sat, 15 Apr 2006, M. Warner Losh wrote:
: > :
: > : > In message: <Pine.GSO.4.64.0604141439280.3685@sea.ntplx.net>
: > : >            Daniel Eischen <deischen@freebsd.org> writes:
: > : > : On Fri, 14 Apr 2006, Victor Balada Diaz wrote:
: > : > :
: > : > : > Hi,
: > : > : > I found that ldd doesn't report libc as a dependency on most (all?)
: > : > : > libraries:
: > : > : >
: > : > : > pato> ldd /usr/lib/libfetch.so
: > : > : > /usr/lib/libfetch.so:
: > : > : >        libssl.so.3 => /usr/lib/libssl.so.3 (0x4816a000)
: > : > : >        libcrypto.so.3 => /lib/libcrypto.so.3 (0x48198000)
: > : > : >
: > : > : > does anyone know why?
: > : > :
: > : > : AFAIK, it's being worked on.  It's not just libc either, -pthread
: > : > : also has to start linking to libpthread.
: > : >
: > : > We don't record libc dependencies into shared libraries right now.  If
: > : > we did, that would create some problems and solve some problems.  With
: > : > symbol versioning, it most likely will become moot, since we'll never
: > : > have to bump libc major version again...
: > :
: > : kan stated he was working on doing this, which is what I was
: > : referring to above.
: >
: > That makes sense.  If you explicitly include libc on the command line
: > to build the library, it is included...
: 
: Here's the link to his original reply to -current.  Also, if you
: look at linux shared libraries, you'll note they have dependencies
: to libc.

I guess what I'm saying is that on FreeBSD, the system built shared
libraries don't have libc recorded in them because we don't add -lc on
the commnad line to build them.  Other libraries do have it recorded
in them, for example I have libxvidcore.so from some port on my
system:

readelf -d libxvidcore.so

Dynamic segment at offset 0x8a39c contains 20 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x00000001 (NEEDED)                     Shared library: [libm.so.4]

If we hacked bsd.lib.mk to include -lc always, all shared libraries
would have a libc dependency.

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060415.122657.111699385.imp>