All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olaf Hering <olaf@aepfle.de>
To: xen-devel@lists.xen.org
Cc: Wei Liu <wei.liu2@citrix.com>, Olaf Hering <olaf@aepfle.de>,
	Keir Fraser <keir@xen.org>,
	David Scott <dave.scott@eu.citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Tim Deegan <tim@xen.org>, Ian Jackson <ian.jackson@eu.citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Ian Campbell <ian.campbell@citrix.com>
Subject: [PATCH 28/28 v2] Separate runtime debug output from debug symbols
Date: Fri, 26 Sep 2014 13:40:31 +0200	[thread overview]
Message-ID: <1411731631-26415-1-git-send-email-olaf@aepfle.de> (raw)
In-Reply-To: <1411658423-18877-29-git-send-email-olaf@aepfle.de>

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@aepfle.de>
Cc: David Scott <dave.scott@eu.citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>
Cc: Keir Fraser <keir@xen.org>
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Tim Deegan <tim@xen.org>
Cc: Wei Liu <wei.liu2@citrix.com>
---
 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::

  parent reply	other threads:[~2014-09-26 11:40 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-25 15:19 [PATCH 00/28 v4] tool changes to honor configure --prefix=DIR Olaf Hering
2014-09-25 15:19 ` [PATCH 01/28] Neutralize make uninstall Olaf Hering
2014-09-29 13:48   ` Ian Campbell
2014-09-30 12:07     ` Olaf Hering
2014-09-30 12:26       ` Ian Campbell
2014-09-29 13:49   ` Ian Campbell
2014-09-30 12:09     ` Olaf Hering
2014-09-30 12:26       ` Ian Campbell
2014-10-01  5:52       ` Olaf Hering
2014-10-01 10:44         ` Ian Campbell
2014-09-25 15:19 ` [PATCH 02/28] tools/hotplug: fix race during xen.conf creation Olaf Hering
2014-09-30 15:46   ` Ian Campbell
2014-09-25 15:19 ` [PATCH 03/28] tools/python: use also LDFLAGS for build Olaf Hering
2014-09-30 15:46   ` Ian Campbell
2014-09-25 15:19 ` [PATCH 04/28] Add configure --with-initddir=DIR Olaf Hering
2014-09-30 15:47   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 05/28] tools/hotplug: use XEN_SCRIPT_DIR instead of hardcoded path Olaf Hering
2014-09-25 15:20 ` [PATCH 06/28] tools/configure.ac: sort AC_CONFIG_FILES Olaf Hering
2014-09-25 15:20 ` [PATCH 07/28] tools: use INITD_DIR instead of CONFIG_DIR/init.d|rc.d Olaf Hering
2014-09-30 16:06   ` Roger Pau Monné
2014-09-25 15:20 ` [PATCH 08/28] tools/hotplug: substitute XEN_SCRIPT_DIR on FreeBSD Olaf Hering
2014-09-30 16:06   ` Roger Pau Monné
2014-09-25 15:20 ` [PATCH 09/28] remove duplicate variables from config Olaf Hering
2014-09-30 16:11   ` Roger Pau Monné
2014-09-30 16:30     ` Olaf Hering
2014-09-25 15:20 ` [PATCH 10/28] Substitue configure variables in Paths.mk.in Olaf Hering
2014-09-30 15:48   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 11/28] tools: substitute bindir instead of BINDIR Olaf Hering
2014-09-30 15:51   ` Ian Campbell
2014-09-30 15:55     ` Olaf Hering
2014-09-30 16:04       ` Ian Campbell
2014-09-25 15:20 ` [PATCH 12/28] Use configure --mandir=DIR to set MANDIR Olaf Hering
2014-09-30 15:51   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 13/28] Use configure --docdir=DIR to set DOCDIR Olaf Hering
2014-09-30 15:52   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 14/28] Use configure --includedir=DIR to set INCLUDEDIR Olaf Hering
2014-09-30 15:52   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 15/28] Use configure --libexecdir=BASEDIR to set LIBEXEC Olaf Hering
2014-09-30 15:55   ` Ian Campbell
2014-09-30 15:58     ` Olaf Hering
2014-09-30 16:02       ` Ian Campbell
2014-09-25 15:20 ` [PATCH 16/28] Use configure --prefix=DIR to set PREFIX Olaf Hering
2014-09-25 15:20 ` [PATCH 17/28] Use configure --localstatedir=BASEDIR to set path to /var Olaf Hering
2014-09-30 15:55   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 18/28] Add configure --enable-rpath Olaf Hering
2014-09-30 15:56   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 19/28] Add configure --with-linux-backend-modules="mod1 mod2" Olaf Hering
2014-09-30 15:57   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 20/28] Put bash_completion.d below --sysconfdir=DIR Olaf Hering
2014-09-30 15:58   ` Ian Campbell
2014-09-30 16:01     ` Olaf Hering
2014-09-25 15:20 ` [PATCH 21/28] Add configure --with-sysconfig-leaf-dir=SUBDIR to set CONFIG_LEAF_DIR Olaf Hering
2014-09-30 15:59   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 22/28] Make XENFIRMWAREDIR a subdir of libexecdir Olaf Hering
2014-09-25 15:20 ` [PATCH 23/28] tools: remove private copies of includedir and libdir from libxenstat Olaf Hering
2014-09-25 15:20 ` [PATCH 24/28] Use Paths.mk for docs, stubdom and tools build Olaf Hering
2014-09-30 16:00   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 25/28] tools: use XEN_LIB_STORED instead of /var/lib/xenstored Olaf Hering
2014-09-25 15:20 ` [PATCH 26/28] Use XEN_RUN_DIR instead of /var/run/xen Olaf Hering
2014-09-30 16:00   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 27/28] move vtpmmgr helpers from tools to stubdom Olaf Hering
2014-09-30 16:02   ` Ian Campbell
2014-09-25 15:20 ` [PATCH 28/28] Separate runtime debug output from debug symbols Olaf Hering
2014-09-25 15:41   ` Andrew Cooper
2014-09-25 15:57     ` Jan Beulich
2014-09-26  6:07     ` Olaf Hering
2014-09-25 16:01   ` Jan Beulich
2014-09-26  8:17     ` Olaf Hering
2014-09-26  8:54       ` Olaf Hering
2014-09-26  9:06         ` Jan Beulich
2014-09-26  9:22           ` Olaf Hering
2014-09-26  9:37             ` Jan Beulich
2014-09-26  8:56       ` Jan Beulich
2014-09-26 11:40   ` Olaf Hering [this message]
2014-09-26 11:56     ` [PATCH 28/28 v2] " Jan Beulich
2014-09-26 14:02       ` Olaf Hering
2014-09-26 14:43         ` Jan Beulich
2014-09-26 19:12           ` Konrad Rzeszutek Wilk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1411731631-26415-1-git-send-email-olaf@aepfle.de \
    --to=olaf@aepfle.de \
    --cc=dave.scott@eu.citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=keir@xen.org \
    --cc=samuel.thibault@ens-lyon.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tim@xen.org \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.