[syslinux] [PATCH 0/2] Do not use the "red zone" on EFI
celelibi at gmail.com
celelibi at gmail.com
Fri Nov 27 14:41:47 PST 2015
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
Sylvain Gault (2):
Makefile: Pass down the variable EFI_BUILD
Makefile: Always use -mno-red-zone for EFI
Makefile | 17 +++++++++--------
com32/Makefile | 2 +-
diag/Makefile | 2 +-
mk/com32.mk | 4 +++-
mk/elf.mk | 6 ++++--
mk/embedded.mk | 5 ++---
mk/lib.mk | 4 +++-
tests/Makefile | 6 +++---
8 files changed, 26 insertions(+), 20 deletions(-)
--
2.6.2
More information about the Syslinux
mailing list