From owner-freebsd-hackers@FreeBSD.ORG Tue Jul 11 11:19:26 2006 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 039D816A4DF for ; Tue, 11 Jul 2006 11:19:26 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.FreeBSD.org (Postfix) with ESMTP id 765EF43D46 for ; Tue, 11 Jul 2006 11:19:25 +0000 (GMT) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id 06E842083; Tue, 11 Jul 2006 13:19:19 +0200 (CEST) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: 0.0/3.0 X-Spam-Checker-Version: SpamAssassin 3.1.1 (2006-03-10) on tim.des.no Received: from xps.des.no (des.no [80.203.243.180]) by tim.des.no (Postfix) with ESMTP id 795312082; Tue, 11 Jul 2006 13:19:18 +0200 (CEST) Received: by xps.des.no (Postfix, from userid 1001) id 3960233C1F; Tue, 11 Jul 2006 13:19:18 +0200 (CEST) From: des@des.no (Dag-Erling =?iso-8859-1?Q?Sm=F8rgrav?=) To: mag@intron.ac References: <200607092136.k69LaNDX055391@www.freebsd.org> <84dead720607092015q7f1701abse143f3855c2aa95a@mail.gmail.com> <1152540567.99616@origin.intron.ac> <44B2AE69.4080703@elischer.org> <44B2D2DF.2000401@sh.cvut.cz> <86sll8zl9x.fsf@xps.des.no> <86fyh8zgw8.fsf@xps.des.no> Date: Tue, 11 Jul 2006 13:19:18 +0200 In-Reply-To: (mag@intron.ac's message of "Tue, 11 Jul 2006 18:01:56 +0800") Message-ID: <868xn0z8w9.fsf@xps.des.no> User-Agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.3 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-hackers@freebsd.org, delphij@delphij.net, Julian Elischer Subject: Re: kern/99979: Get Ready for Kernel Module in C++ X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Jul 2006 11:19:26 -0000 mag@intron.ac writes: > But "-ffreestanding" doesn't work with C++. While the C++ standard does define hosted and freestanding implementations, its definition is different from (and less useful than) that in the C standard. For instance, the C++ standard requires the existence of abort(), atexit() and exit() even in a freestanding implementation. Basically, one cannot indiscriminately use the same compiler flags for C and C++, because they are very different languages - far more different than they seem on the surface. Modern C++ is very poorly suited for low-level code. > According to above explanation, "-fno-builtin" is a subset of > "-ffreestanding" and it's enough for kernel. No, it isn't. I think you would do wisely to acquire a little more knowledge of and experience with C, C++ and kernel programming before you pursue this topic any further. Most importantly, we already have an working object model in the FreeBSD kernel, with classes, inheritance, and all that jazz, implemented partly in C and partly in a custom IDL which is translated into C by src/sys/tools/makeobjops.awk. DES --=20 Dag-Erling Sm=F8rgrav - des@des.no