Date: Tue, 6 May 2003 23:07:47 +0400 From: "Andrey A. Chernov" <ache@nagual.pp.ru> To: Dag-Erling Smorgrav <des@ofug.org> Cc: freebsd-arch@freebsd.org Subject: Re: `Hiding' libc symbols Message-ID: <20030506190747.GA59160@nagual.pp.ru> In-Reply-To: <xzp8ytjgbq4.fsf@flood.ping.uio.no> References: <20030505175426.GA19352@madman.celabo.org> <xzpk7d53zu5.fsf@flood.ping.uio.no> <20030505205051.GA40572@nagual.pp.ru> <20030505231135.GA21953@madman.celabo.org> <20030505231837.GA44533@nagual.pp.ru> <xzpy91k3j9n.fsf@flood.ping.uio.no> <20030506170823.GI83663@lucky.net> <xzpllxkez78.fsf@flood.ping.uio.no> <20030506182756.GA57720@nagual.pp.ru> <xzp8ytjgbq4.fsf@flood.ping.uio.no>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, May 06, 2003 at 20:40:35 +0200, Dag-Erling Smorgrav wrote: > "Andrey A. Chernov" <ache@nagual.pp.ru> writes: > > On Tue, May 06, 2003 at 19:56:27 +0200, Dag-Erling Smorgrav wrote: > >> - If you stayed awake through the previous paragraph you should by > >> now have concluded that it simply is not possible for the linker to > >> enforce namespaces like Andrey wants it to, because a) the linker > >> can't know what headers were included; b) the exact set of reserved > >> names can vary from compilation unit to compilation unit within the > >> same application and c) namespace issues affect portions of the > >> code which are outside the linker's purview (such as the names of > >> function arguments and static or automatic variables). Namespaces > >> are a source code issue and cannot be handled anywhere but at the > >> source code level. > > There is no problem. Each *.h function prototype can be accompanied with > > some assembler instruction making it strong reference. The same thing can > > be conditionalized at the header level using _POSIX_SOURCE or other > > defines. So, linker will know, what headers are included. > > I would like to draw your attention to points b) and c) above and ask > how you plan to address them. About b), I don't quite understand, what you mean. If inside the same application some file includes, say, math.h and use sin() and another file not includes math.h and defines its own sin() it is error. About c), at this moment we discuss functions namespace only, i.e. linker "T" class.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030506190747.GA59160>