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

[Xen-devel] [PATCH 28/28 v2] Separate runtime debug output from debug symbols



With this change debug and debug_symbols is used consistently.
With 'make debug=yn debug_symbols=yn' my rebuild time and diskspace
usage goes down:
   105275K clean xen.git checkout.
y 1247041K build time: 5:57
n  812112K build time: 5:34

Add make variable debug_(stubdom|tools|xen)= to control debug= for
runtime debug.  Add make variable debuginfo_(stubdom|tools|xen)= to
control debug_symbols= for gcc -g.  Add configure --enable-debuginfo
to set debuginf_(stubdom|tools) once at configure time. The existing
--enable-debug will set debug_(stubdom|tools) once at configure time.

Currently two variables control runtime and compiletime debug info:
debug= for tools,stubdom selects either -O1 or -O2 builds, and passes
the flag down to qemu-upstream to enable additional runtime debugging.
debug= for xen enables some asserts and extra checks in the code.
debug_symbols= is used in few places to pass -g to gcc. Other places
still pass -g unconditionally to gcc.

Wrap all -g assigments to CFLAGS into debug_symbols==y.
Pass --enable-debug-info --disable-strip to qemu-upstream build.

No change in behaviour is expected by that patch for tools and xen.
For stubdom CFLAGS change from -O1 to O2 with debug=n.
It is still possible to use 'make debug=N debug_symbols=N'. But with
this patch it is now possible to do 'configure --disable-debug
--enable-debuginfo && make rpmbuild debug_xen=n'.

Please rerun autogen.sh after applying this patch.

Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
Cc: David Scott <dave.scott@xxxxxxxxxxxxx>
Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Cc: Jan Beulich <jbeulich@xxxxxxxx>
Cc: Keir Fraser <keir@xxxxxxx>
Cc: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>
Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Cc: Tim Deegan <tim@xxxxxxx>
Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
---
 Config.mk                         | 3 +++
 config/Stubdom.mk.in              | 8 +++++---
 config/Tools.mk.in                | 8 +++++---
 stubdom/Makefile                  | 3 +--
 stubdom/configure.ac              | 3 ++-
 tools/Makefile                    | 7 +++++++
 tools/configure.ac                | 3 ++-
 tools/ocaml/common.make           | 5 ++++-
 tools/tests/vhpet/Makefile        | 2 +-
 tools/tests/x86_emulator/Makefile | 4 ++--
 xen/Rules.mk                      | 9 ++++++++-
 xen/arch/x86/Makefile             | 2 +-
 12 files changed, 41 insertions(+), 16 deletions(-)

diff --git a/Config.mk b/Config.mk
index dff71b3..8a65adf 100644
--- a/Config.mk
+++ b/Config.mk
@@ -39,6 +39,9 @@ SHELL     ?= /bin/sh
 HOSTCC      = gcc
 HOSTCFLAGS  = -Wall -Werror -Wstrict-prototypes -O2 -fomit-frame-pointer
 HOSTCFLAGS += -fno-strict-aliasing
+ifeq ($(debug_symbols),y)
+HOSTCFLAGS += -g
+endif
 
 DISTDIR     ?= $(XEN_ROOT)/dist
 DESTDIR     ?= /
diff --git a/config/Stubdom.mk.in b/config/Stubdom.mk.in
index 5990fc4..0576a2c 100644
--- a/config/Stubdom.mk.in
+++ b/config/Stubdom.mk.in
@@ -1,12 +1,14 @@
 -include $(XEN_ROOT)/config/Paths.mk
 
+debug_stubdom       := @debug@
+debuginfo_stubdom   := @debuginfo@
+debug               := $(debug_stubdom)
+debug_symbols       := $(debuginfo_stubdom)
+
 # Path Programs
 CMAKE               := @CMAKE@
 FETCHER             := @FETCHER@
 
-# A debug build of stubdom? //FIXME: Someone make this do something
-debug               := @debug@
-
 STUBDOM_TARGETS     := @STUBDOM_TARGETS@
 STUBDOM_BUILD       := @STUBDOM_BUILD@
 STUBDOM_INSTALL     := @STUBDOM_INSTALL@
diff --git a/config/Tools.mk.in b/config/Tools.mk.in
index 5239f4e..ab7598c 100644
--- a/config/Tools.mk.in
+++ b/config/Tools.mk.in
@@ -1,13 +1,15 @@
 -include $(XEN_ROOT)/config/Paths.mk
 
+debug_tools         := @debug@
+debuginfo_tools     := @debuginfo@
+debug               := $(debug_tools)
+debug_symbols       := $(debuginfo_tools)
+
 CONFIG_RUMP         := @CONFIG_RUMP@
 ifeq ($(CONFIG_RUMP),y)
 XEN_OS              := NetBSDRump
 endif
 
-# A debug build of tools?
-debug               := @debug@
-
 # Tools path
 BISON               := @BISON@
 FLEX                := @FLEX@
diff --git a/stubdom/Makefile b/stubdom/Makefile
index 9dac103..60dc0b8 100644
--- a/stubdom/Makefile
+++ b/stubdom/Makefile
@@ -4,9 +4,8 @@ MINI_OS = $(XEN_ROOT)/extras/mini-os
 export XEN_OS=MiniOS
 
 export stubdom=y
-export debug=y
-include $(XEN_ROOT)/Config.mk
 -include $(XEN_ROOT)/config/Stubdom.mk
+include $(XEN_ROOT)/Config.mk
 
 GNU_TARGET_ARCH:=$(XEN_TARGET_ARCH)
 ifeq ($(XEN_TARGET_ARCH),x86_32)
diff --git a/stubdom/configure.ac b/stubdom/configure.ac
index 6468203..f2c9dfd 100644
--- a/stubdom/configure.ac
+++ b/stubdom/configure.ac
@@ -45,7 +45,8 @@ AS_IF([test "x$ioemu$qemu_traditional" = "xyn"], [
     AC_MSG_ERROR(IOEMU stubdomain requires qemu-traditional)
 ])
 
-AX_ARG_DEFAULT_ENABLE([debug], [Disable debug build of stubdom])
+AX_ARG_DEFAULT_ENABLE([debug], [Disable runtime debug of stubdom])
+AX_ARG_DEFAULT_ENABLE([debuginfo], [Disable creation of debuginfo symbols 
during build of stubdom])
 AX_ARG_DEFAULT_ENABLE([extfiles], [Use xen extfiles repository for libraries])
 
 AC_ARG_VAR([CMAKE], [Path to the cmake program])
diff --git a/tools/Makefile b/tools/Makefile
index 4afadfd..9ae1ab1 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -189,6 +189,12 @@ else
 QEMU_XEN_ENABLE_DEBUG :=
 endif
 
+ifeq ($(debug_symbols),y)
+QEMU_XEN_ENABLE_DEBUG_SYMBOLS := --enable-debug-info --disable-strip
+else
+QEMU_XEN_ENABLE_DEBUG_SYMBOLS := --disable-debug-info
+endif
+
 subdir-all-qemu-xen-dir: qemu-xen-dir-find
        if test -d $(QEMU_UPSTREAM_LOC) ; then \
                source=$(QEMU_UPSTREAM_LOC); \
@@ -198,6 +204,7 @@ subdir-all-qemu-xen-dir: qemu-xen-dir-find
        cd qemu-xen-dir; \
        $$source/configure --enable-xen --target-list=i386-softmmu \
                $(QEMU_XEN_ENABLE_DEBUG) \
+               $(QEMU_XEN_ENABLE_DEBUG_SYMBOLS) \
                --prefix=$(LIBEXEC) \
                --libdir=$(LIBEXEC_LIB) \
                --includedir=$(LIBEXEC_INC) \
diff --git a/tools/configure.ac b/tools/configure.ac
index 4595976..f896bbb 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -88,7 +88,8 @@ AX_ARG_DEFAULT_ENABLE([ocamltools], [Disable Ocaml tools])
 AX_ARG_DEFAULT_ENABLE([xsmpolicy], [Disable XSM policy compilation])
 AX_ARG_DEFAULT_DISABLE([ovmf], [Enable OVMF])
 AX_ARG_DEFAULT_ENABLE([seabios], [Disable SeaBIOS])
-AX_ARG_DEFAULT_ENABLE([debug], [Disable debug build of tools])
+AX_ARG_DEFAULT_ENABLE([debug], [Disable runtime debug of tools])
+AX_ARG_DEFAULT_ENABLE([debuginfo], [Disable creation of debuginfo symbols 
during build of tools])
 AX_ARG_DEFAULT_DISABLE([blktap1], [Enable blktap1 tools])
 
 AC_ARG_WITH([linux-backend-modules],
diff --git a/tools/ocaml/common.make b/tools/ocaml/common.make
index d5478f6..33b3142 100644
--- a/tools/ocaml/common.make
+++ b/tools/ocaml/common.make
@@ -13,7 +13,10 @@ CFLAGS += -fPIC -Werror -I$(shell ocamlc -where)
 
 OCAMLOPTFLAG_G := $(shell $(OCAMLOPT) -h 2>&1 | sed -n 's/^  *\(-g\) .*/\1/p')
 OCAMLOPTFLAGS = $(OCAMLOPTFLAG_G) -ccopt "$(LDFLAGS)" -dtypes $(OCAMLINCLUDE) 
-cc $(CC) -w F -warn-error F
-OCAMLCFLAGS += -g $(OCAMLINCLUDE) -w F -warn-error F
+ifeq ($(debug_symbols),y)
+OCAMLCFLAGS += -g
+endif
+OCAMLCFLAGS += $(OCAMLINCLUDE) -w F -warn-error F
 
 VERSION := 4.1
 
diff --git a/tools/tests/vhpet/Makefile b/tools/tests/vhpet/Makefile
index 763409d..e4f5c14 100644
--- a/tools/tests/vhpet/Makefile
+++ b/tools/tests/vhpet/Makefile
@@ -20,7 +20,7 @@ run: $(TARGET)
        ./$(TARGET) 200 1 0 20 0x0103 > $(TARGET).200.1.0.20.0x0103.out
 
 $(TARGET): hpet.c main.c hpet.h emul.h Makefile
-       $(HOSTCC) -g -o $@ hpet.c main.c
+       $(HOSTCC) $(HOSTCFLAGS) -o $@ hpet.c main.c
 
 .PHONY: clean
 clean:
diff --git a/tools/tests/x86_emulator/Makefile 
b/tools/tests/x86_emulator/Makefile
index 73517b7..edfd832 100644
--- a/tools/tests/x86_emulator/Makefile
+++ b/tools/tests/x86_emulator/Makefile
@@ -43,7 +43,7 @@ x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h:
 HOSTCFLAGS += $(CFLAGS_xeninclude)
 
 x86_emulate.o: x86_emulate.c x86_emulate/x86_emulate.c 
x86_emulate/x86_emulate.h
-       $(HOSTCC) $(HOSTCFLAGS) -c -g -o $@ $<
+       $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $<
 
 test_x86_emulator.o: test_x86_emulator.c blowfish.h x86_emulate/x86_emulate.h
-       $(HOSTCC) $(HOSTCFLAGS) -c -g -o $@ $<
+       $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $<
diff --git a/xen/Rules.mk b/xen/Rules.mk
index e2f9e36..442ffaa 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -10,6 +10,10 @@ lock_profile  ?= n
 crash_debug   ?= n
 frame_pointer ?= n
 lto           ?= n
+debug_xen     ?= y
+debuginfo_xen ?= y
+debug         := $(debug_xen)
+debug_symbols := $(debuginfo_xen)
 
 include $(XEN_ROOT)/Config.mk
 
@@ -43,7 +47,10 @@ ALL_OBJS-$(x86)          += $(BASEDIR)/crypto/built_in.o
 
 CFLAGS += -fno-builtin -fno-common
 CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
-CFLAGS += -pipe -g -D__XEN__ -include $(BASEDIR)/include/xen/config.h
+ifeq ($(debug_symbols),y)
+CFLAGS += -g
+endif
+CFLAGS += -pipe -D__XEN__ -include $(BASEDIR)/include/xen/config.h
 CFLAGS += -nostdinc
 
 CFLAGS-$(XSM_ENABLE)    += -DXSM_ENABLE
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index c1e244d..b994bfa 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -163,7 +163,7 @@ boot/mkelf32: boot/mkelf32.c
        $(HOSTCC) $(HOSTCFLAGS) -o $@ $<
 
 efi/mkreloc: efi/mkreloc.c
-       $(HOSTCC) $(HOSTCFLAGS) -g -o $@ $<
+       $(HOSTCC) $(HOSTCFLAGS) -o $@ $<
 
 .PHONY: clean
 clean::

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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