[syslinux] [PATCH 2/2] Makefile: Always use -mno-red-zone for EFI

celelibi at gmail.com celelibi at gmail.com
Fri Nov 27 14:41:49 PST 2015


From: Sylvain Gault <sylvain.gault at gmail.com>

This option is mandatory when compiling for EFI as some event handlers
may interupt the running code and use the space just above the reserved
stack space.

Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com>
---
 mk/com32.mk    | 4 +++-
 mk/elf.mk      | 6 ++++--
 mk/embedded.mk | 5 ++---
 mk/lib.mk      | 4 +++-
 4 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/mk/com32.mk b/mk/com32.mk
index 90eb7ed..2e8591a 100644
--- a/mk/com32.mk
+++ b/mk/com32.mk
@@ -48,7 +48,9 @@ GCCOPT += $(call gcc_ok,-falign-jumps=0,-malign-jumps=0)
 GCCOPT += $(call gcc_ok,-falign-labels=0,-malign-labels=0)
 GCCOPT += $(call gcc_ok,-falign-loops=0,-malign-loops=0)
 
-ifndef EFI_BUILD
+ifdef EFI_BUILD
+GCCOPT += -mno-red-zone
+else
 GCCOPT += -mregparm=3 -DREGPARM=3
 endif
 
diff --git a/mk/elf.mk b/mk/elf.mk
index 12d1077..54fd4ce 100644
--- a/mk/elf.mk
+++ b/mk/elf.mk
@@ -60,8 +60,10 @@ CFLAGS     = $(GCCOPT) $(GCCWARN) -W -Wall \
 	     -I$(com32)/libutil/include -I$(com32)/include \
 		-I$(com32)/include/sys $(GPLINCLUDE) -I$(core)/include \
 		-I$(objdir) -DLDLINUX=\"$(LDLINUX)\"
-ifndef EFI_BUILD
-CFLAGS	  += -mregparm=3 -DREGPARM=3
+ifdef EFI_BUILD
+GCCOPT += -mno-red-zone
+else
+GCCOPT += -mregparm=3 -DREGPARM=3
 endif
 
 SFLAGS     = $(GCCOPT) -D__COM32__ -D__FIRMWARE_$(FIRMWARE)__ 
diff --git a/mk/embedded.mk b/mk/embedded.mk
index 1614d8bc..df8e85f 100644
--- a/mk/embedded.mk
+++ b/mk/embedded.mk
@@ -39,10 +39,9 @@ GCCOPT	  += $(call gcc_ok,-fno-stack-protector,)
 GCCOPT	  += $(call gcc_ok,-fwrapv,)
 GCCOPT	  += $(call gcc_ok,-freg-struct-return,)
 ifdef EFI_BUILD
-GCCOPT    += -Os -fomit-frame-pointer -msoft-float
+GCCOPT    += -Os -fomit-frame-pointer -msoft-float -mno-red-zone
 else
-GCCOPT    += -Os -fomit-frame-pointer -mregparm=3 -DREGPARM=3 \
-             -msoft-float
+GCCOPT    += -Os -fomit-frame-pointer -mregparm=3 -DREGPARM=3 -msoft-float
 endif
 GCCOPT    += $(call gcc_ok,-fno-exceptions,)
 GCCOPT	  += $(call gcc_ok,-fno-asynchronous-unwind-tables,)
diff --git a/mk/lib.mk b/mk/lib.mk
index ceb95bd..7a48756 100644
--- a/mk/lib.mk
+++ b/mk/lib.mk
@@ -54,7 +54,9 @@ WARNFLAGS = $(GCCWARN) -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Winl
 
 CFLAGS  = $(OPTFLAGS) $(REQFLAGS) $(WARNFLAGS) $(LIBFLAGS)
 
-ifndef EFI_BUILD
+ifdef EFI_BUILD
+CFLAGS += -mno-red-zone
+else
 CFLAGS += -mregparm=3 -DREGPARM=3
 endif
 
-- 
2.6.2



More information about the Syslinux mailing list