mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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).
Overriding the -O0 is better than disabling Fortify because the
latter might have an adverse security impact. A user who wants to
disable optimisation completely even for Python and also disable
Fortify can set the environment variable
EXTRA_CFLAGS_XEN_TOOLS='-U_FORTIFY_SOURCE -O0'
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Reported-by: Jan Beulich <JBeulich@suse.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Ian Campbell <Ian.Campbell@citrix.com>
CC: Euan Harris <euan.harris@citrix.com>
CC: Wei Liu <wei.liu2@citrix.com>
CC: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Tested-by: Don Slutz <dslutz@verizon.com>
32 lines
1004 B
Plaintext
32 lines
1004 B
Plaintext
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],
|
|
[ax_cv_python_fortify],[
|
|
ax_cv_python_fortify=no
|
|
for arg in $($PYTHON-config --cflags); do
|
|
case "$arg" in
|
|
-D_FORTIFY_SOURCE=0) ax_cv_python_fortify=no ;;
|
|
-D_FORTIFY_SOURCE=*) ax_cv_python_fortify=yes ;;
|
|
-Wp,-D_FORTIFY_SOURCE=0) ax_cv_python_fortify=no ;;
|
|
-Wp,-D_FORTIFY_SOURCE=*) ax_cv_python_fortify=yes ;;
|
|
*) ;;
|
|
esac
|
|
done
|
|
])
|
|
|
|
AS_IF([test x$ax_cv_python_fortify = xyes],[
|
|
PY_NOOPT_CFLAGS=-O1
|
|
], [
|
|
PY_NOOPT_CFLAGS=''
|
|
])
|
|
|
|
AC_SUBST(PY_NOOPT_CFLAGS)
|
|
])
|