From: Wei Liu Date: Mon, 31 Oct 2016 17:42:25 +0000 (+0000) Subject: build: make debug option affect tools only X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~132 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=31d41d7bc87d0d2a24ac965b37793faa40d23dcb;p=xen.git build: make debug option affect tools only The debug option in Config.mk affects hypervisor, tools and stubdom by appending different flags to CFLAGS. Mini-os under extra is not affected because it already has its own build system when it is separated from xen.git. It is undesirable because now hypervisor build is affected by both Kconfig and debug. Disentangle the semantics of debug by pushing relevant options to individual sub-systems. For hypervisor, the flags previously added by debug option is now controlled by CONFIG_DEBUG. For tools, flags are moved from config/*.mk into tools/Rules.mk. For stubdom, because it unilaterally sets debug=y before including top-level Config.mk, we only need to move the debug build set of flags into stubdom Makefile. Specifically there are some considerations on what flags are picked: 1. we don't need -fno-optimize-sibling-calls anymore because gcc doc indicates that it is not enabled for -O1, which we already set in the debug build. 2. for tools we use -O0 -g3 in Rules.mk because they already take precedence over the flags set in config/*.mk. 3. for hypervisor we don't add -fno-omit-frame-pointer to debug build because that's controlled by CONFIG_FRAME_POINTER. This patch doesn't intend to tune those flags, but to provide identical set of effective flags as before. The debug option in Config.mk will only affect tools components after this patch is applied. Signed-off-by: Wei Liu Acked-by: Jan Beulich Release-acked-by: Wei Liu --- diff --git a/config/StdGNU.mk b/config/StdGNU.mk index 39d36b298b..6be8233205 100644 --- a/config/StdGNU.mk +++ b/config/StdGNU.mk @@ -35,14 +35,6 @@ UTIL_LIBS = -lutil SONAME_LDFLAG = -soname SHLIB_LDFLAGS = -shared -ifneq ($(debug),y) -CFLAGS += -O2 -fomit-frame-pointer -else -# Less than -O1 produces bad code and large stack frames -CFLAGS += -O1 -fno-omit-frame-pointer -CFLAGS-$(gcc) += -fno-optimize-sibling-calls -endif - ifeq ($(lto),y) CFLAGS += -flto LDFLAGS-$(clang) += -plugin LLVMgold.so diff --git a/config/SunOS.mk b/config/SunOS.mk index 86a384d946..0fe5f45590 100644 --- a/config/SunOS.mk +++ b/config/SunOS.mk @@ -31,12 +31,5 @@ UTIL_LIBS = SONAME_LDFLAG = -h SHLIB_LDFLAGS = -R $(SunOS_LIBDIR) -shared -ifneq ($(debug),y) -CFLAGS += -O2 -fno-omit-frame-pointer -else -# Less than -O1 produces bad code and large stack frames -CFLAGS += -O1 -fno-omit-frame-pointer -endif - CFLAGS += -Wa,--divide -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ diff --git a/stubdom/Makefile b/stubdom/Makefile index 571704d9ae..2921f30820 100644 --- a/stubdom/Makefile +++ b/stubdom/Makefile @@ -6,6 +6,8 @@ export XEN_OS=MiniOS export stubdom=y export debug=y +# Moved from config/StdGNU.mk +CFLAGS += -O1 -fno-omit-frame-pointer ifeq (,$(findstring clean,$(MAKECMDGOALS))) ifeq ($(wildcard $(MINI_OS)/Config.mk),) diff --git a/tools/Rules.mk b/tools/Rules.mk index 5a80fecce1..0e73690b00 100644 --- a/tools/Rules.mk +++ b/tools/Rules.mk @@ -138,9 +138,11 @@ SHLIB_libxenvchan = $(SHDEPS_libxenvchan) -Wl,-rpath-link=$(XEN_LIBVCHAN) ifeq ($(debug),y) # Disable optimizations and enable debugging information for macros -CFLAGS += -O0 -g3 +CFLAGS += -O0 -g3 -fno-omit-frame-pointer # But allow an override to -O0 in case Python enforces -D_FORTIFY_SOURCE=. PY_CFLAGS += $(PY_NOOPT_CFLAGS) +else +CFLAGS += -O2 -fomit-frame-pointer endif LIBXL_BLKTAP ?= $(CONFIG_BLKTAP2) diff --git a/xen/Rules.mk b/xen/Rules.mk index a9fda7146d..08cc776ebc 100644 --- a/xen/Rules.mk +++ b/xen/Rules.mk @@ -46,6 +46,12 @@ ALL_OBJS-y += $(BASEDIR)/xsm/built_in.o ALL_OBJS-y += $(BASEDIR)/arch/$(TARGET_ARCH)/built_in.o ALL_OBJS-$(CONFIG_CRYPTO) += $(BASEDIR)/crypto/built_in.o +ifeq ($(CONFIG_DEBUG),y) +CFLAGS += -O1 +else +CFLAGS += -O2 -fomit-frame-pointer +endif + CFLAGS += -nostdinc -fno-builtin -fno-common CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith CFLAGS += -pipe -g -D__XEN__ -include $(BASEDIR)/include/xen/config.h