[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GRUB2 Build on Mac OS X

From: Hollis Blanchard
Subject: Re: GRUB2 Build on Mac OS X
Date: Fri, 9 Dec 2005 16:49:19 -0600
User-agent: KMail/1.8.2

On Thursday 08 December 2005 10:27, Peter Jones wrote:
> That being said, what's the reasoning for using this uncommon and
> lossely defined extension in the first place?  The way GRUB (both 2 and
> Legacy) uses nested functions, it's no better than just having a method
> vector, and certainly not easier to read.

I do find nested functions very easy to read...

What do you mean by "method vector"?

> Not only that, but the trend 
> going forward is towards *less* support of executable stacks, not more.
> I wouldn't expect that to stop with us and for Apple, especially now
> that there's widespread support for non-executable pages on Intel
> hardware.

Yes, this is definitely a problem.

> Would you be amicable to patches which
> change code from using nested functions to a more C-like implementation?
> (I don't mean like the patch in my current GRUB Legacy package;
> something cleaner than that hacky approach.)

Do you have any specific ideas? I'm very interested, but I honestly don't know 
how it could be done (other than the method you described of creating custom 
structs and passing pointers to those).

> > Enable the executable stack using:
> > 1) Set some bit in the ELF file so the OS knows we want this
> >   (that's what linux does).
> > 2) Enable it using some function.
> > 3) Creating our own stack.
> There's a major point of contention being ignored here.  OS vendors
> don't want to ship executables which require an executable stack.  Full
> stop.

Would be alright if we could enable execute permission only on the specific 
pages needed (as known by GCC)? GCC provides an ENABLE_EXECUTE_STACK macro, 
but it seems that is not currently used on Linux. It is used on the various 

> Currently in RHEL and Fedora Core, we (somewhat kludgedly) fix GRUB not
> to need an executable stack for the normal operations that happen during
> grub-install.  If we're ever to move to GRUB 2, it'll either need to not
> use nested functions, or I'm going to wind up doing the same
> modifications to it.
> I really hope you're willing to entertain patches that remove use of
> nested functions.  If so, I'll certainly put some effort that direction
> when next I look at moving RHEL and Fedora to GRUB 2.

I am willing to entertain them.

Marco found a nice description from Roland McGrath on this subject:

His only suggestions for nested functions were a) do not use function pointers 
with them, or b) rewrite them entirely.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]