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 BSDs. > 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: https://www.redhat.com/archives/fedora-devel-list/2003-November/msg00838.html His only suggestions for nested functions were a) do not use function pointers with them, or b) rewrite them entirely. -Hollis _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel