From owner-svn-src-all@FreeBSD.ORG Tue Jan 19 16:42:55 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 70417106566C; Tue, 19 Jan 2010 16:42:55 +0000 (UTC) (envelope-from des@des.no) Received: from smtp.des.no (smtp.des.no [194.63.250.102]) by mx1.freebsd.org (Postfix) with ESMTP id 2F69E8FC1F; Tue, 19 Jan 2010 16:42:54 +0000 (UTC) Received: from ds4.des.no (des.no [84.49.246.2]) by smtp.des.no (Postfix) with ESMTP id 3C6D31FFC22; Tue, 19 Jan 2010 16:42:54 +0000 (UTC) Received: by ds4.des.no (Postfix, from userid 1001) id 17EE8844BD; Tue, 19 Jan 2010 17:42:54 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Scott Long References: <201001191531.o0JFVI6n029716@svn.freebsd.org> <9FF943CE-9FCB-48C8-A048-23F23620F4E5@samsco.org> Date: Tue, 19 Jan 2010 17:42:54 +0100 In-Reply-To: <9FF943CE-9FCB-48C8-A048-23F23620F4E5@samsco.org> (Scott Long's message of "Tue, 19 Jan 2010 08:56:57 -0700") Message-ID: <863a22dp0x.fsf@ds4.des.no> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.95 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Ed Schouten Subject: Re: svn commit: r202628 - in head: . sys/amd64/amd64 sys/i386/i386 sys/i386/xen sys/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jan 2010 16:42:55 -0000 Scott Long writes: > Ok, so you've broken a legitimate piece of compatibility. What's the > gain? GCC had inline functions long before they were added to the C standard. Inline functions were introduced in C99 with different semantics (and believe me, that was not a gratuitous decision). We use C99 semantics throughout the kernel, except in the pmap code, which Ed just modified, where we use GCC semantics. This means that in order to compile FreeBSD with a different compiler, that compiler must not only support both C99 and GCC semantics, but it must also support GCC's syntax - or something close to it - for specifying, on a per-function basis, which semantics apply. I say "on a per-function basis" because there are places in the kernel where pmap headers are included alongside headers that use C99 semantics, so you can't select inline semantics on a per-compilation- unit basis. To add insult to injury, GCC's syntax for specifying the precise manner in which GCC should violate the standard violates the standard... I haven't checked, but I believe that we can still build 8 / 9 kernels on 7 as long as we have a cross toolchain available (i.e. make buildworld, make toolchain or make kernel-toolchain before make buildkernel), so this really isn't a big issue. DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no