Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Jul 2012 02:16:04 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        David Chisnall <theraven@freebsd.org>
Cc:        Kim Culhan <w8hdkim@gmail.com>, freebsd-current@freebsd.org, Dimitry Andric <dim@freebsd.org>
Subject:   Re: -current build failure
Message-ID:  <20120720231604.GT2676@deviant.kiev.zoral.com.ua>
In-Reply-To: <9EBB4101-3117-4FE0-AD08-1053423BECD6@FreeBSD.org>
References:  <CAKZxVQV5xhFDN_WbTk-EMoQ18N8u1f4YhqKSJQFUzbX4NZxhUA@mail.gmail.com> <50097BF0.9010103@FreeBSD.org> <20120720163352.GS2676@deviant.kiev.zoral.com.ua> <9EBB4101-3117-4FE0-AD08-1053423BECD6@FreeBSD.org>

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

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

On Fri, Jul 20, 2012 at 10:07:05PM +0100, David Chisnall wrote:
> On 20 Jul 2012, at 17:33, Konstantin Belousov wrote:
>=20
> > It is not related to dtrace at all, and indeed OFFSETOF_CURTHREAD is 0.
> > This is a bug in clang, we compile our kernel in freestanding environme=
nt.
>=20
> The copies of the C spec that I have do not differentiate between
> freestanding and hosted environments for the validity of dereferencing
> a pointer value of 0. Doing so is undefined in all cases and any
> standards-compliant compiler is quite at liberty to eat your dog in
> such situations - it is explicitly not guaranteed to read the memory at
> linear address 0 (this is undefined for at least two reasons that I can
> think of from the C spec, and probably more).

Ok, I stand corrected. But the standard does not say what you claim
either. It only specifies that NULL pointer is unequal to any pointer
to object or function (implicitely saying that you can create a C object
or function pointer to which is equal to NULL).

So, lets reformulate it other way: freestanding implementation in clang
has no use, at least for general purpose kernel. Especially ridiculous
is the fact that clang throws it hands for asm inline wanting to get
null address, on the machine with linearly addressable memory.

--L/iKGr82HRlWSTal
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (FreeBSD)

iEYEARECAAYFAlAJ5rQACgkQC3+MBN1Mb4jFBwCeNynqYSEs0hhXIVzuT6mcAF3z
4N0AoMVBYHc0Us5/PMHheJOFS7lPYA4X
=eoI9
-----END PGP SIGNATURE-----

--L/iKGr82HRlWSTal--



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