Overlinking in base

Baptiste Daroussin bapt at FreeBSD.org
Wed Nov 5 13:40:13 UTC 2014


On Wed, Nov 05, 2014 at 03:30:29PM +0200, Konstantin Belousov wrote:
> On Wed, Nov 05, 2014 at 01:59:57PM +0100, Baptiste Daroussin wrote:
> > On Wed, Nov 05, 2014 at 02:54:31PM +0200, Konstantin Belousov wrote:
> > > Could you, please, share the script to see how the overlinking is
> > > checked ?
> > 
> > Here you are:
> > https://people.freebsd.org/~bapt/check-links.sh
> > 
> > Beware it is dirty :)
> > 
> > Run it as check-links.sh nameofthebinary
> 
> Ok.  It is mostly fine, but you do not account for symbol versions of
> the looked up symbols.  There were weird changes, e.g. isnanf story,
> which essentially migrated from libc to libm.  I suspect such cases
> are not very important.
> 
My proposal to fix this overlinking while still supporting static linkage
Is to change the way we are declaring those dependencies, imho the library
should declare what it needs in case of dynamic linking and what it needs in
case of static linking, the binary Makefile should only list what it requires as
a direct dependency and the framework should do all the magic.

This can be done via .pc files (and calling pkgconf) or can be done via .mk
files in the library directory.

In the first case we could have something like:
PCADD=	liba libb libc
Which will result in the build system querying though pkgconf:
pkgconf --libs (--static if calling static linkage)

In the second case we could do it via make(1)
LIBADD=	liba libc libc
this will open something like a ${PATHTOTHELIB}/link.mk which will define
DYNAMIC_ADD
STATIC_ADD

And this could be recursive.

(note that pkgconf is also recursive as well).

regards,
Bapt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20141105/717a2854/attachment.sig>


More information about the freebsd-arch mailing list