[syslinux] [PATCH 0/2] Do not use the "red zone" on EFI

Gene Cumm gene.cumm at gmail.com
Fri Dec 4 16:37:28 PST 2015


On Nov 27, 2015 5:44 PM, "celelibi--- via Syslinux" <syslinux at zytor.com>
wrote:
>
> From: Sylvain Gault <sylvain.gault at gmail.com>
>
> The System V ABI for x86-64 specify that a "red zone" is an area of 128
bytes
> above the current stack frame. This area can be used by a called function
in
> order to avoid the overhead of modifying the stack pointer. The direct
effect
> is that interrupt/event/signal handlers must not write to this area. In
the
> UEFI calling convention, there is no such thing and the event handlers do
write
> their data just above the current stack frame.
>
> However, gcc generate by default code that uses the red zone. This has to
be
> disabled explicitely with the option -mno-red-zone. Not doing so lead to
some
> functions behaving randomly once in a while.
>
> Fixing this revealed that some Makefiles out of the efi/ directory have
some
> specific options when building for BIOS or for EFI. These Makefiles do
this by
> testing the EFI_BUILD variable. However, this variable wasn't passed down
the
> Makefiles making these specific options never used.
>
> Best regards,
> Sylvain Gault

Almost done with a round of testing and I hope to push the patch tonight or
tomorrow.

--Gene


More information about the Syslinux mailing list