From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1JKDVj-0006EP-Tp for mharc-grub-devel@gnu.org; Wed, 30 Jan 2008 09:01:55 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JKDVi-0006Cd-6m for grub-devel@gnu.org; Wed, 30 Jan 2008 09:01:54 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JKDVg-0006CF-AV for grub-devel@gnu.org; Wed, 30 Jan 2008 09:01:53 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JKDVf-0006C5-Lp for grub-devel@gnu.org; Wed, 30 Jan 2008 09:01:51 -0500 Received: from aybabtu.com ([69.60.117.155]) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1JKDVe-0005Kg-Us for grub-devel@gnu.org; Wed, 30 Jan 2008 09:01:51 -0500 Received: from [192.168.10.6] (helo=thorin) by aybabtu.com with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from ) id 1JKDVd-00048s-Oe for grub-devel@gnu.org; Wed, 30 Jan 2008 15:01:50 +0100 Received: from rmh by thorin with local (Exim 4.63) (envelope-from ) id 1JKDU9-0004Lo-2S for grub-devel@gnu.org; Wed, 30 Jan 2008 15:00:17 +0100 Date: Wed, 30 Jan 2008 15:00:17 +0100 From: Robert Millan To: The development of GRUB 2 Message-ID: <20080130140017.GA16576@thorin> References: <20080126172120.GA4119@thorin> <1201378308.10461.10.camel@k9.localnet> <20080127085650.GB11381@thorin> <20080129053051.GY1341@kirkkit.kollasch.net> <20080129134707.GF27435@thorin> <20080130003750.GB1341@kirkkit.kollasch.net> <20080130132314.GA15277@thorin> <1201701103.17791.9.camel@k9.localnet> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1201701103.17791.9.camel@k9.localnet> Organization: free as in freedom X-Message-Flag: Worried about Outlook viruses? Switch to Thunderbird! www.mozilla.com/thunderbird X-Debbugs-No-Ack: true User-Agent: Mutt/1.5.13 (2006-08-11) X-detected-kernel: by monty-python.gnu.org: Genre and OS details not recognized. Subject: Re: Compiling grub2 on *BSD? X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jan 2008 14:01:54 -0000 On Wed, Jan 30, 2008 at 05:51:43AM -0800, walt wrote: > > > > Ok, so we need __enable_execute_stack then, I guess. I find it strange that > > some parts of libgcc can not be used in freestanding code. Does this happen > > with the unpatched version of GCC too? > > > > Maybe we'll have add some dummy symbols to make it happy. I don't think > > any of this will be actually needed when kernel isn't present. > > I don't understand much of the above, but I did find this comment in the > NetBSD manpage for gcc: > > In traditional UNIX systems, the signal trampoline, also referred to as > the ``sigcode'', is provided by the kernel and copied to the top of the > user's stack when a new process is created or a new program image is > exec'd. > > Starting in NetBSD 2.0, the signal trampoline is provided by the system > C library. This allows for more flexibility when the signal facility > is extended, makes dealing with signals easier in debuggers, such as > gdb(1), and may also enhance system security by allowing the kernel to > disallow execution of code on the stack. > > The signal trampoline is specified on a per-signal basis. The correct > trampoline is selected automatically by the C library when a signal > handler is registered by a process. This seems to be related to kernel<->user interaction. Not much of our concern I think. Our problem, AFAICT, is that gcc/libgcc in NetBSD wants to rely on system facilities to enable executable stack, but that operation is unnecessary for freestanding code (unless someone setup paging and the NX bit?). What happens if you define the missing symbols somewhere? Any part of the GRUB kernel will do (e.g. kern/main.c). Just add them as empty functions: void __sysctl (void) { } void mprotect (void) { } and check if that works. -- Robert Millan I know my rights; I want my phone call! What use is a phone call… if you are unable to speak? (as seen on /.)