Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Nov 2014 14:40:07 +0100
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        arch@FreeBSD.org
Subject:   Re: Overlinking in base
Message-ID:  <20141105134006.GL10388@ivaldir.etoilebsd.net>
In-Reply-To: <20141105133029.GH53947@kib.kiev.ua>
References:  <20141105113839.GG10388@ivaldir.etoilebsd.net> <20141105125431.GD53947@kib.kiev.ua> <20141105125931.GJ10388@ivaldir.etoilebsd.net> <20141105133029.GH53947@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help

--g6DVDhPhk1bqxDrC
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

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 ?
> >=20
> > Here you are:
> > https://people.freebsd.org/~bapt/check-links.sh
> >=20
> > Beware it is dirty :)
> >=20
> > Run it as check-links.sh nameofthebinary
>=20
> 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.
>=20
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 requir=
es 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=3D	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=3D	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

--g6DVDhPhk1bqxDrC
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAlRaKLYACgkQ8kTtMUmk6Ewl7ACghU3tcCk8YOj0EzEdlj4HXgaT
DNUAn39NjeESZ4xiEAvefDfI141usQxn
=86Gt
-----END PGP SIGNATURE-----

--g6DVDhPhk1bqxDrC--



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