Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Aug 2020 21:49:52 +0200
From:      Dimitry Andric <dim@FreeBSD.org>
To:        "O. Hartmann" <ohartmann@walstatt.org>
Cc:        freebsd-current <freebsd-current@freebsd.org>
Subject:   Re: ld: error: duplicate symbol:
Message-ID:  <B7F9F85B-60A4-4A87-9911-BDE1CBC7BC91@FreeBSD.org>
In-Reply-To: <20200817154208.42d25b89@freyja>
References:  <20200817154208.42d25b89@freyja>

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

--Apple-Mail=_1529C6A4-08C1-49E7-AD79-13FCD66B077C
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

On 17 Aug 2020, at 15:42, O. Hartmann <ohartmann@walstatt.org> wrote:
>=20
> On CURRENT 9not necessarily most recent with LLVM11, but since noon of =
today it
> is FreeBSD 13.0-CURRENT #15 r364297: Mon Aug 17 14:39:06 CEST 2020 =
amd64) I'm
> faced with some very sticky and nasty micompilations in several =
essential
> ports, for instance
>=20
> ports-mgmt/pkg
> devel/libunwind
> devel/binutils
>=20
> In most cases somewhere in the (parallel) build the process fails with =
the error
>=20
> ld: error: duplicate symbol: xxxxxxxx

This is because clang 11 (and gcc 10) now default to -fno-common. The
rationale is explained pretty well in
=
<https://gcc.gnu.org/git/?p=3Dgcc.git;a=3Dcommitdiff;h=3D6271dd984d7f920d4=
fb17ad37af6a1f8e6b796dc>:

"GCC currently defaults to -fcommon.  As discussed in the PR, this is an =
ancient
C feature which is not conforming with the latest C standards.  On many =
targets
this means global variable accesses have a codesize and performance =
penalty.
This applies to C code only, C++ code is not affected by -fcommon.  It =
is about
time to change the default."

A quick fix is to add CFLAGS+=3D-fcommon to your make.conf, but that is
rather a big hammer. It is better to add it to just the ports that show
problems due to duplicated symbols. And ideally, those duplicated
symbols should be patched out of the ports.

For example, ports-mgmt/pkg already has such a patch:
=
https://github.com/freebsd/pkg/commit/7fbde60c4af4a1a07db7c5c36efbb2a495f7=
b1a4
but I have no idea why it is not yet in the ports tree.

-Dimitry


--Apple-Mail=_1529C6A4-08C1-49E7-AD79-13FCD66B077C
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.2

iF0EARECAB0WIQR6tGLSzjX8bUI5T82wXqMKLiCWowUCXzrfYAAKCRCwXqMKLiCW
o088AJwKKg9W9U6t6218YUAfeAHJD9rxDgCgnRZOpfw2fx0vWI3SBSJfpD64W/Q=
=GhpO
-----END PGP SIGNATURE-----

--Apple-Mail=_1529C6A4-08C1-49E7-AD79-13FCD66B077C--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B7F9F85B-60A4-4A87-9911-BDE1CBC7BC91>