From 55a2e36cbc6ebde5d52601c864bc268bd568609a Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Sun, 25 Jul 2010 22:20:47 +0100 Subject: [PATCH] x86: Add -fno-exceptions to list of possibly-supported CFLAGS for embedded targets. Signed-off-by: Keir Fraser --- Config.mk | 5 +++++ stubdom/Makefile | 4 +--- tools/firmware/Rules.mk | 5 +---- tools/tests/blowfish.mk | 5 +---- xen/arch/x86/Rules.mk | 5 +---- xen/arch/x86/boot/build32.mk | 5 +---- 6 files changed, 10 insertions(+), 19 deletions(-) diff --git a/Config.mk b/Config.mk index cd15726009..f5766e1687 100644 --- a/Config.mk +++ b/Config.mk @@ -59,6 +59,8 @@ define cc-option-add-closure endif endef +cc-options-add = $(foreach o,$(3),$(call cc-option-add,$(1),$(2),$(o))) + # cc-ver: Check compiler is at least specified version. Return boolean 'y'/'n'. # Usage: ifeq ($(call cc-ver,$(CC),0x030400),y) cc-ver = $(shell if [ $$((`$(1) -dumpversion | awk -F. \ @@ -134,6 +136,9 @@ $(call cc-option-add,CFLAGS,CC,-Wdeclaration-after-statement) LDFLAGS += $(foreach i, $(EXTRA_LIB), -L$(i)) CFLAGS += $(foreach i, $(EXTRA_INCLUDES), -I$(i)) +EMBEDDED_EXTRA_CFLAGS := -nopie -fno-stack-protector -fno-stack-protector-all +EMBEDDED_EXTRA_CFLAGS += -fno-exceptions + # Enable XSM security module. Enabling XSM requires selection of an # XSM security module (FLASK_ENABLE or ACM_SECURITY). XSM_ENABLE ?= n diff --git a/stubdom/Makefile b/stubdom/Makefile index e0e8a78b0a..aee3592d70 100644 --- a/stubdom/Makefile +++ b/stubdom/Makefile @@ -58,9 +58,7 @@ CROSS_PREFIX=$(CURDIR)/$(CROSS_ROOT) # Disable PIE/SSP if GCC supports them. They can break us. TARGET_CFLAGS += $(CFLAGS) TARGET_CPPFLAGS += $(CPPFLAGS) -TARGET_CFLAGS += $(call cc-option,$(CC),-nopie,) -TARGET_CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -TARGET_CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) +$(call cc-options-add,TARGET_CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS)) # Do not use host headers and libs GCC_INSTALL = $(shell LANG=C gcc -print-search-dirs | sed -n -e 's/install: \(.*\)/\1/p') diff --git a/tools/firmware/Rules.mk b/tools/firmware/Rules.mk index 901bbf2434..8a8830911b 100644 --- a/tools/firmware/Rules.mk +++ b/tools/firmware/Rules.mk @@ -12,10 +12,7 @@ endif CFLAGS += -Werror -# Disable PIE/SSP if GCC supports them. They can break us. -$(call cc-option-add,CFLAGS,CC,-nopie) -$(call cc-option-add,CFLAGS,CC,-fno-stack-protector) -$(call cc-option-add,CFLAGS,CC,-fno-stack-protector-all) +$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS)) # Extra CFLAGS suitable for an embedded type of environment. CFLAGS += -fno-builtin -msoft-float diff --git a/tools/tests/blowfish.mk b/tools/tests/blowfish.mk index ae7888267d..a8ede7f615 100644 --- a/tools/tests/blowfish.mk +++ b/tools/tests/blowfish.mk @@ -4,10 +4,7 @@ XEN_ROOT = ../.. CFLAGS = include $(XEN_ROOT)/tools/Rules.mk -# Disable PIE/SSP if GCC supports them. They can break us. -$(call cc-option-add,CFLAGS,CC,-nopie) -$(call cc-option-add,CFLAGS,CC,-fno-stack-protector) -$(call cc-option-add,CFLAGS,CC,-fno-stack-protector-all) +$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS)) CFLAGS += -fno-builtin -msoft-float diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk index d97cea4777..d8663a6184 100644 --- a/xen/arch/x86/Rules.mk +++ b/xen/arch/x86/Rules.mk @@ -25,10 +25,7 @@ CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-default # Prevent floating-point variables from creeping into Xen. CFLAGS += -msoft-float -# Disable PIE/SSP if GCC supports them. They can break us. -$(call cc-option-add,CFLAGS,CC,-nopie) -$(call cc-option-add,CFLAGS,CC,-fno-stack-protector) -$(call cc-option-add,CFLAGS,CC,-fno-stack-protector-all) +$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS)) ifeq ($(supervisor_mode_kernel),y) CFLAGS += -DCONFIG_X86_SUPERVISOR_MODE_KERNEL=1 diff --git a/xen/arch/x86/boot/build32.mk b/xen/arch/x86/boot/build32.mk index 0de9c15af2..c061560bdf 100644 --- a/xen/arch/x86/boot/build32.mk +++ b/xen/arch/x86/boot/build32.mk @@ -3,10 +3,7 @@ override XEN_TARGET_ARCH=x86_32 CFLAGS = include $(XEN_ROOT)/Config.mk -# Disable PIE/SSP if GCC supports them. They can break us. -$(call cc-option-add,CFLAGS,CC,-nopie) -$(call cc-option-add,CFLAGS,CC,-fno-stack-protector) -$(call cc-option-add,CFLAGS,CC,-fno-stack-protector-all) +$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS)) CFLAGS += -Werror -fno-builtin -msoft-float -- 2.39.5