|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] tools: work around collision of -O0 and -D_FORTIFY_SOURCE
On Thu, Feb 5, 2015 at 4:52 PM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>>>> On 05.02.15 at 17:36, <ian.jackson@xxxxxxxxxxxxx> wrote:
>> Some systems have python-config include -D_FORTIFY_SOURCE in the
>> CFLAGS. But -D_FORTIFY_SOURCE does not (currently) work with -O0, and
>> -O0 is enabled in debug builds (since 1166ecf781). As a result, on
>> those systems, debug builds fail.
>>
>> Work around this problem as follows:
>> * In configure, detect -D_FORTIFY_SOURCE in $(python-config --cflags)
>> * If detected, set the new autoconf substitution and make variable
>> PY_NOOPT_CFLAGS to -O1.
>> * In tools/Rules.mk, where we add -O0, also add PY_NOOPT_CFLAGS
>> (which will override the -O0 with -O1 if required).
>
> Not having tried it out yet (hopefully some time tomorrow), two
> a remark and a question:
>
>> --- /dev/null
>> +++ b/m4/python_fortify_noopt.m4
>> @@ -0,0 +1,29 @@
>> +dnl Defines PY_NOOPT_CFLAGS to either '' or -O1
>> +dnl
>> +
>> +dnl This is necessary because on some systems setup.py includes
>> +dnl -D_FORTIFY_SOURCE but have a -D_FORTIFY_SOURCE which breaks
>> +dnl with -O0. On those systems we arrange to use -O1 for debug
>> +dnl builds instead.
>> +
>> +AC_DEFUN([AX_CHECK_PYTHON_FORTIFY_NOOPT], [
>> + AC_CACHE_CHECK([whether Python setup.py brokenly enables
>> -D_FORTIFY_SOURCE],
>
> I guess the people having added that would not like to see this
> called "brokenly".
>
>> --- 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 $(PY_NOOPT_CFLAGS)
>
> Why would you do this for all of the tools build rather than just the
> python components?
Because CentOS 7 somehow seems to have picked up _FORTIFY_SOURCE for libxc:
gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector-strong --param=ssp-buffer-size=4
-grecord-gcc-switches -m64 -mtune=generic -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 -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 .subdirs-install.d -D_LARGEFILE_SOURCE
-D_LARGEFILE64_SOURCE -fno-optimize-sibling-calls -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 .subdir-install-libxc.d -D_LARGEFILE_SOURCE
-D_LARGEFILE64_SOURCE -fno-optimize-sibling-calls -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 .build.d -D_LARGEFILE_SOURCE
-D_LARGEFILE64_SOURCE -fno-optimize-sibling-calls -D_GNU_SOURCE
-I../../xen/common/libelf -Werror -Wmissing-prototypes -I. -I./include
-I/build/centos/git/xen/BUILD/xen-4.6.0rc2x/tools/libxc/../../tools/include
-pthread -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 .xc_cpupool.o.d -D_LARGEFILE_SOURCE
-D_LARGEFILE64_SOURCE -fno-optimize-sibling-calls -D_GNU_SOURCE
-I../../xen/common/libelf -Werror -Wmissing-prototypes -I. -I./include
-I/build/centos/git/xen/BUILD/xen-4.6.0rc2x/tools/libxc/../../tools/include
-pthread -include
/build/centos/git/xen/BUILD/xen-4.6.0rc2x/tools/libxc/../../tools/config.h
-c -o xc_cpupool.o xc_cpupool.c
In file included from /usr/include/unistd.h:25:0,
from xc_private.h:19,
from xc_altp2m.c:23:
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Werror=cpp]
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
^
In file included from /usr/include/unistd.h:25:0,
from xg_private.h:19,
from xc_core_x86.c:20:
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Werror=cpp]
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
^
In file included from /usr/include/unistd.h:25:0,
from xc_private.h:19,
from xc_cpupool.c:23:
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Werror=cpp]
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
^
In file included from /usr/include/unistd.h:25:0,
from xg_private.h:19,
from xc_core.c:63:
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Werror=cpp]
# warning _FORTIFY_SOURCE requires compiling with optimization (-O)
^
cc1: all warnings being treated as errors
cc1: all warnings being treated as errors
make[4]: *** [xc_core_x86.o] Error 1
make[4]: *** Waiting for unfinished jobs....
make[4]: *** [xc_cpupool.o] Error 1
cc1: all warnings being treated as errors
make[4]: *** [xc_core.o] Error 1
cc1: all warnings being treated as errors
make[4]: *** [xc_altp2m.o] Error 1
make[4]: Leaving directory
`/build/centos/git/xen/BUILD/xen-4.6.0rc2x/tools/libxc'
make[3]: *** [build] Error 2
make[3]: Leaving directory
`/build/centos/git/xen/BUILD/xen-4.6.0rc2x/tools/libxc'
make[2]: *** [subdir-install-libxc] Error 2
make[2]: Leaving directory `/build/centos/git/xen/BUILD/xen-4.6.0rc2x/tools'
make[1]: *** [subdirs-install] Error 2
make[1]: Leaving directory `/build/centos/git/xen/BUILD/xen-4.6.0rc2x/tools'
make: *** [install-tools] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.mIYLA9 (%build)
I'm not sure exactly how to track down where it came from; it just
seems to appear out of nowhere in the config.log and config.status
(attached).
-George
Attachment:
config.log Attachment:
config.status _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |