[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] build: make debug option affect tools only



commit 31d41d7bc87d0d2a24ac965b37793faa40d23dcb
Author:     Wei Liu <wei.liu2@xxxxxxxxxx>
AuthorDate: Mon Oct 31 17:42:25 2016 +0000
Commit:     Wei Liu <wei.liu2@xxxxxxxxxx>
CommitDate: Thu Nov 3 10:40:39 2016 +0000

    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 <wei.liu2@xxxxxxxxxx>
    Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
    Release-acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
 config/StdGNU.mk | 8 --------
 config/SunOS.mk  | 7 -------
 stubdom/Makefile | 2 ++
 tools/Rules.mk   | 4 +++-
 xen/Rules.mk     | 6 ++++++
 5 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/config/StdGNU.mk b/config/StdGNU.mk
index 39d36b2..6be8233 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 86a384d..0fe5f45 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 571704d..2921f30 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 5a80fec..0e73690 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=<n>.
 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 a9fda71..08cc776 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
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.