From owner-freebsd-ports@freebsd.org Wed Sep 2 14:58:23 2020 Return-Path: Delivered-To: freebsd-ports@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 54B3E3D991E for ; Wed, 2 Sep 2020 14:58:23 +0000 (UTC) (envelope-from rde@tavi.co.uk) Received: from kipling.tavi.co.uk (kipling.tavi.co.uk [81.187.145.130]) by mx1.freebsd.org (Postfix) with ESMTP id 4BhRrt0d9Cz4q1Q for ; Wed, 2 Sep 2020 14:58:21 +0000 (UTC) (envelope-from rde@tavi.co.uk) Received: from kipling.tavi.co.uk (localhost [127.0.0.1]) by kipling.tavi.co.uk (Postfix) with ESMTP id 7CC8B139E6 for ; Wed, 2 Sep 2020 15:58:15 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=tavi.co.uk; h=date:from:to :subject:message-id:in-reply-to:references:mime-version :content-type:content-transfer-encoding; s=selector1; bh=Viqc588 OmG560t23ehenetsvb6A=; b=kKRzDKhgTqy3BlsMFvYZWgU7MiKYlUTu4mn0X0l w98t0JU13lkKlfdWDlKb/DWDAl52MCwakAU2zXvbHIO5/x135dmbp1GTL+FsLaZ3 qZeNDJAJZSuW0BFdNrswd9GQnRGXNDRVjqPFxWlOyRjqFfhUZuo0FC30t5uh95mr T4qU= Received: from raksha.tavi.co.uk (raksha.tavi.co.uk [81.187.145.139]) (Authenticated sender: rde@tavi.co.uk) by kipling.tavi.co.uk (Postfix) with ESMTPA id 47C84139CF for ; Wed, 2 Sep 2020 15:58:15 +0100 (BST) Date: Wed, 2 Sep 2020 15:58:15 +0100 From: Bob Eager To: freebsd-ports@freebsd.org Subject: Re: pkg-fallout: duplicate symbols? Message-ID: <20200902155815.62588c0d@raksha.tavi.co.uk> In-Reply-To: References: <9A44A7E3-B911-4D40-B34F-FC1A9E844D31@FreeBSD.org> X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; amd64-portbld-freebsd12.1) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEUwXjFLc0vD0cS7y7zw9PDZ4tkWSRaVrZZ+m39qi2tXfVj////7+/utwK4IPggAOAAJUUA7AAABKklEQVQ4jWPYjQMwDFYJp0NKEKCNJmEf9h8CsimXiL2e33s3/e7F7K2Cs3f3dCMkQkMKj4YuCY3K3iR+e7fMaiSjvkX0/5cFGrWpe2uLzOpaExUVqMS/8PX/Re5ey960OLBTZpFA8+IlSBKPQ92zNyUUBsosN58uIY0k8f+/ONCoYytkVuhWzVwNkYiYbqk5M3NmOVBi41YZ8RsGF7shEtFb5KJ3r969CyixM7OTPeFUxG2IxLO8/9/SvqXlc+/x3h295YzLlj2nIRJQj//nRvc5TEIal8RsXBLVuCQwIgoq/u80DomP6HEOk/iOS+IJLonZOCT+ReOQ+Lkbh0QKLonbOCR+7MYhsRqHBJrVcIl/1TgklqKLQyQ+tGKIgyQOqXpjig94diZRAgAXmDX6jyWafAAAAABJRU5ErkJggg====== MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4BhRrt0d9Cz4q1Q X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=pass header.d=tavi.co.uk header.s=selector1 header.b=kKRzDKhg; dmarc=pass (policy=none) header.from=tavi.co.uk; spf=pass (mx1.freebsd.org: domain of rde@tavi.co.uk designates 81.187.145.130 as permitted sender) smtp.mailfrom=rde@tavi.co.uk X-Spamd-Result: default: False [-1.87 / 15.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[tavi.co.uk:s=selector1]; NEURAL_HAM_MEDIUM(-0.96)[-0.961]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_ALLOW(-0.20)[+a:kipling.tavi.co.uk]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-ports@freebsd.org]; TO_DN_NONE(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.01)[-1.012]; RCVD_COUNT_THREE(0.00)[3]; NEURAL_SPAM_SHORT(0.00)[0.000]; DKIM_TRACE(0.00)[tavi.co.uk:+]; DMARC_POLICY_ALLOW(-0.50)[tavi.co.uk,none]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; SUBJECT_ENDS_QUESTION(1.00)[]; ASN(0.00)[asn:20712, ipnet:81.187.0.0/16, country:GB]; MAILMAN_DEST(0.00)[freebsd-ports] X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Sep 2020 14:58:23 -0000 On Wed, 2 Sep 2020 14:44:36 -0000 (UTC) Christian Weisgerber wrote: > On 2020-08-22, Dimitry Andric wrote: > > > It can be worked around by adding -fcommon to the compilation > > flags, but in most cases it should not be too difficult to get rid > > of the multiply defined symbols. > > Right. > In C, a global is _defined_ in one object file and _declared_ when > it is referenced from elsewhere. See Kernighan & Ritchie. Commons > are a linker artifact that was never part of the C language, as far > as I can tell. > > Most instances turned up by -fno-common are accidental double > definitions of the same global, so you only need to turn the extra > definitions into declarations. However, in some cases they were > actually intended as separate variables and have been merged by > accident. In those cases, they should be renamed or made local > with "static". In some cases, it is deliberate. An initialised, but declared, global is used as a 'weak' global that can be overridden by checking its value. I maintain one port that does this!