[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] tools/Rules.mk: Don't optimize debug builds; add macro debugging information
On 01/13/2015 06:11 PM, Ian Campbell wrote: > On Tue, 2015-01-13 at 13:52 +0800, Wen Congyang wrote: >> On 12/01/2014 10:21 PM, Euan Harris wrote: >>> Tools debug builds are built with optimization level -O1, inherited from >>> the CFLAGS definition in StdGNU.mk. Optimizations confuse the debugger, >>> and the comment justifying -O1 in StdGNU.mk should not apply for a >>> userspace library. Disable optimization by appending -O0 to CFLAGS, >>> which overrides the -O1 flag specified earlier. >>> >>> Also specify -g3, to add macro debugging information which allows >>> gdb to expand macro invocations. This is useful as libxl uses many >>> non-trivial macros. >>> >>> Signed-off-by: Euan Harris <euan.harris@xxxxxxxxxx> >>> >>> Changes since v1: >>> * moved flag override to tools/Rules.mk so it affects all tools >>> --- >>> tools/Rules.mk | 5 +++++ >>> 1 files changed, 5 insertions(+), 0 deletions(-) >>> >>> diff --git a/tools/Rules.mk b/tools/Rules.mk >>> index 87a56dc..7ef1ce5 100644 >>> --- a/tools/Rules.mk >>> +++ b/tools/Rules.mk >>> @@ -54,6 +54,11 @@ CFLAGS_libxenvchan = -I$(XEN_LIBVCHAN) >>> LDLIBS_libxenvchan = $(SHLIB_libxenctrl) $(SHLIB_libxenstore) >>> -L$(XEN_LIBVCHAN) -lxenvchan >>> SHLIB_libxenvchan = -Wl,-rpath-link=$(XEN_LIBVCHAN) >>> >>> +ifeq ($(debug),y) >>> +# Disable optimizations and debugging information for macros >>> +CFLAGS += -O0 -g3 >>> +endif >>> + >>> LIBXL_BLKTAP ?= $(CONFIG_BLKTAP2) >>> >>> ifeq ($(LIBXL_BLKTAP),y) >>> >> >> This patch causes a building error: >> gcc -fno-strict-aliasing -O2 -g -pipe -Wall -Werror=format-security >> -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong >> --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic >> -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall >> -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions >> -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches >> -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -O1 -fno-omit-frame-pointer >> -m64 -g -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes >> -Wdeclaration-after-statement -Wno-unused-but-set-variable >> -Wno-unused-local-typedefs -O0 -g3 -D__XEN_TOOLS__ -MMD -MF .install.d >> -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -fno-optimize-sibling-calls -fPIC >> -I../../tools/include -I../../tools/libxc/include -Ixen/lowlevel/xc >> -I/usr/include/python2.7 -c xen/lowlevel/xc/xc.c -o >> build/temp.linux-x86_64-2.7/xen/lowlevel/xc/xc.o -fno-strict-aliasing -Werror >> In file included from /usr/include/limits.h:25:0, >> from >> /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/limits.h:168, >> from >> /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/syslimits.h:7, >> from >> /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/limits.h:34, >> from /usr/include/python2.7/Python.h:19, >> from xen/lowlevel/xc/xc.c:7: >> /usr/include/features.h:328:4: error: #warning _FORTIFY_SOURCE requires >> compiling with optimization (-O) [-Werror=cpp] > > Where is _FORTIFY_SOURCE coming from? I don't see it in our tree > anywhere except stubdom/Makefile which is disabling it and the build > worked for me. Perhaps it is coming from your build environment > somewhere? How are you configuring and building Xen? _FORTIFY_SOURCE is just for python, and it comes from /usr/lib64/python2.7/config/Makefile: # Compiler options OPT= -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv BASECFLAGS= -fno-strict-aliasing CFLAGS= $(BASECFLAGS) -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv $(OPT) $(EXTRA_CFLAGS) > > Maybe what we want to do is only disable optimisations if debug=y AND > -D_FORTIFY_SOURCE is not set? Might involve some autoconf checks to > determine the fortification level in the user provided CFLAGS, which > might be a bit faffsome. > > Ian. > >> # warning _FORTIFY_SOURCE requires compiling with optimization (-O) >> ^ >> cc1: all warnings being treated as errors >> error: command 'gcc' failed with exit status 1 >> >> The following patch can fix this problem: >> >> From d16961971e14f6e50f9a9905449929d5a7c60860 Mon Sep 17 00:00:00 2001 >> From: Wen Congyang <wency@xxxxxxxxxxxxxx> >> Date: Tue, 13 Jan 2015 12:05:30 +0800 >> Subject: [PATCH] Fix a building error >> >> Commit 1166ecf7 disables optimization. But _FORTIFY_SOURCE >> requires compiling with optimization (-O). Disable _FORTIFY_SOURCE >> by appending -Wp,-U_FORTIFY_SOURCE to CFLAGS. >> >> Signed-off-by: Wen Congyang <wency@xxxxxxxxxxxxxx> >> --- >> tools/Rules.mk | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/tools/Rules.mk b/tools/Rules.mk >> index 962a743..8ad1b05 100644 >> --- a/tools/Rules.mk >> +++ b/tools/Rules.mk >> @@ -56,7 +56,7 @@ SHLIB_libxenvchan = -Wl,-rpath-link=$(XEN_LIBVCHAN) >> >> ifeq ($(debug),y) >> # Disable optimizations and enable debugging information for macros >> -CFLAGS += -O0 -g3 >> +CFLAGS += -O0 -g3 -Wp,-U_FORTIFY_SOURCE >> endif >> >> LIBXL_BLKTAP ?= $(CONFIG_BLKTAP2) > > > . > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |