Date: Wed, 2 Sep 2020 14:44:36 -0000 (UTC) From: Christian Weisgerber <naddy@mips.inka.de> To: freebsd-ports@freebsd.org Subject: Re: pkg-fallout: duplicate symbols? Message-ID: <slrnrkvbuk.1lm.naddy@lorvorc.mips.inka.de> References: <slrnrk29h7.2oqq.naddy@lorvorc.mips.inka.de> <9A44A7E3-B911-4D40-B34F-FC1A9E844D31@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2020-08-22, Dimitry Andric <dim@FreeBSD.org> 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". -- Christian "naddy" Weisgerber naddy@mips.inka.de
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?slrnrkvbuk.1lm.naddy>