[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |