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>