Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Dec 2012 16:03:40 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Baptiste Daroussin <bapt@freebsd.org>, hackers@freebsd.org
Subject:   Re: Fix overlinking in base aka import pkgconf
Message-ID:  <20121216140340.GY71906@kib.kiev.ua>
In-Reply-To: <20121216130100.GD15112@felucia.tataz.chchile.org>
References:  <20121214235418.GF18884@ithaqua.etoilebsd.net> <20121215012233.GP71906@kib.kiev.ua> <20121215105643.GG18884@ithaqua.etoilebsd.net> <20121216130100.GD15112@felucia.tataz.chchile.org>

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

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

On Sun, Dec 16, 2012 at 02:01:00PM +0100, Jeremie Le Hen wrote:
> Hi bapt, kib,
>=20
> On Sat, Dec 15, 2012 at 11:56:43AM +0100, Baptiste Daroussin wrote:
> > On Sat, Dec 15, 2012 at 03:22:34AM +0200, Konstantin Belousov wrote:
> > > On Sat, Dec 15, 2012 at 12:54:19AM +0100, Baptiste Daroussin wrote:
> > > > Hi,
> > > >=20
> > > > Some of our binary are overlinked, the way we handle the linking do=
esn't help
> > > > for that.
> > > What do you mean there ? Do you mean that some libraries specified fo=
r the
> > > linking stage of the final binary are not needed for the execution ?
> >=20
> > I mean some library are registrer in the binary with DT_NEEDED tag wher=
e they
> > don't need to.
> >=20
> > >=20
> > > >=20
> > > > On proposition could be to use pkgconf https://github.com/pkgconf/p=
kgconf which
> > > > is BSD license pkg-config implementation 100% compatible with pkg-c=
onfig.
> > > >=20
> > > > What I propose is to create a new PCADD variable for the Makefiles.
> > > >=20
> > > > PCADD will invoke pkgconf to gather the libraries and the cflags fo=
r a given
> > > > project.
> > > >=20
> > > > The second thing would be to create .pc files for all of our librar=
ies.
> > > >=20
> > > > for example:
> > > > usr.bin/fstat dynamic build is overlinked
> > > And how this is better than just removing the unneeded library from
> > > the Makefile ?
> >=20
> > In that case to statically build you need -lkvm -lutil -lprocstat but i=
f you
> > build dynamically you will only need -lproctast meaning you don't need =
to be
> > directly linked to libutil and libkvm. This means a breakage of libutil=
 will
> > only have inpact on procstat and no more on fstat for example.
>=20
> I think this could be solved by an implicit linker script contained in
> .so and .a files, pointing to the real libraries.
>=20
> We have already the SHLIB_LDSCRIPT variable to accomplish this for .so
> files.  It may be possible to do the same for .a files, though this
> would require renaming the real archives to something like .a.0 (here
> I'm just taking a similar scheme to the one used for DSO).
>=20
> As a matter of fact, libprocstat.a would contain:
>=20
>   GROUP ( /usr/lib/libprocstat.a.0 /usr/lib/libkvm.a /usr/lib/libutil.a )
>=20
> Note that libkvm.a and libutil.a could be linker scripts as well.
>=20
> Kib, do you see any problem to this proposition?

Wouldn't you need to completely rewrite the handling of the .a files
in the share/mk ? I somewhat dislike the mere thought that .a is not
an archive any longer.

Does it make sense from the overhead and complexity POV, for such small
goal ?

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

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iQIcBAEBAgAGBQJQzdS7AAoJEJDCuSvBvK1BHAkP/ir7TtycOje8jd5SSdEB2T3g
ZGX9AS7xhwdG70z99KNL1kjuF26XNuQg7lJlpGb0+BUU2kt84pMq1ui5zUO7TlT/
1st2hQoovRPjiss245j3f0iFIdRvqlvIAWTJrhi+a8V5ni+7NsgFGQoDiSLSgNdE
PLwetkHCulyyu4v690lFmtlv83lUvko8HJ5x2PFBIp5jFf2vcKAiP2E22pUJD9bK
sEKtKAwBm541IdqyvzFFlzxr3vdZgjCXEs69TLgyIL3FyvsBnkArQYlMG0DLonc1
Sya/px2p1iLuWMQCDpaRJlsJQ6NCxfTP8NltMmh3Q0BxDOa2Xh9c98gQGq2wIPv4
e53DcC9lOu4rE2WfEsdYUXl/Zrual8sMg5+IM3akJgBFoAOta9YOqIHKR2KKzCVF
nqbTGtk9db+TU2e0dnzmQ6nP12qtHJqvrqaTG125pKtZS4DFjlIuL+PjlY3l0glb
VCz+M5bM77QOIfghu8efy4fl5ooldA+PV2QyvoctQ9p7oDXwpWHWhY4HI9mdaXyS
9YOCmpCZhcvMnkuOlUzK+eAy82wpCWZKnq2cofBqv0yg+QShCYUJ0rXV7BxkUHJM
C3042mhDAD+GLXzWV0K9LiguAnkRzdwsiTVxhaX8RyUVy2hot6v6U8aujF53fJN1
fTYwulHNb8pnCOilj69h
=4LpY
-----END PGP SIGNATURE-----

--zFHfQTJdDMtDGy0L--



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