mirror of
https://github.com/postgres/postgres.git
synced 2025-08-06 18:42:54 +03:00
Use -fwrapv in CFLAGS if we are using a version of gcc that accepts this flag.
This prevents compiler optimizations that assume overflow won't occur, which breaks numerous overflow tests that we need to have working. It is known that gcc 4.3 causes problems and possible that 4.1 does. Per my proposal of some time ago and a recent report from Kris Jurka. Backpatch as far as 8.0, which is as far as the patch conveniently goes. 7.x was pretty short of overflow tests anyway, so it may not matter there, even assuming that anyone cares whether 7.x builds on recent gcc.
This commit is contained in:
46
configure
vendored
46
configure
vendored
@@ -2633,6 +2633,52 @@ cat >conftest.$ac_ext <<_ACEOF
|
|||||||
#line $LINENO "configure"
|
#line $LINENO "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
|
#ifdef F77_DUMMY_MAIN
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
# endif
|
||||||
|
int F77_DUMMY_MAIN() { return 1; }
|
||||||
|
#endif
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
rm -f conftest.$ac_objext
|
||||||
|
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||||
|
(eval $ac_compile) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); } &&
|
||||||
|
{ ac_try='test -s conftest.$ac_objext'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
echo "$as_me:$LINENO: result: yes" >&5
|
||||||
|
echo "${ECHO_T}yes" >&6
|
||||||
|
else
|
||||||
|
echo "$as_me: failed program was:" >&5
|
||||||
|
cat conftest.$ac_ext >&5
|
||||||
|
CFLAGS="$pgac_save_CFLAGS"
|
||||||
|
echo "$as_me:$LINENO: result: no" >&5
|
||||||
|
echo "${ECHO_T}no" >&6
|
||||||
|
fi
|
||||||
|
rm -f conftest.$ac_objext conftest.$ac_ext
|
||||||
|
|
||||||
|
# Disable optimizations that assume no overflow; needed for gcc 4.3+
|
||||||
|
echo "$as_me:$LINENO: checking if $CC supports -fwrapv" >&5
|
||||||
|
echo $ECHO_N "checking if $CC supports -fwrapv... $ECHO_C" >&6
|
||||||
|
pgac_save_CFLAGS=$CFLAGS
|
||||||
|
CFLAGS="$pgac_save_CFLAGS -fwrapv"
|
||||||
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
|
#line $LINENO "configure"
|
||||||
|
#include "confdefs.h"
|
||||||
|
|
||||||
#ifdef F77_DUMMY_MAIN
|
#ifdef F77_DUMMY_MAIN
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
extern "C"
|
extern "C"
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
dnl $PostgreSQL: pgsql/configure.in,v 1.398.4.23 2008/02/24 05:22:33 tgl Exp $
|
dnl $PostgreSQL: pgsql/configure.in,v 1.398.4.24 2008/03/10 21:50:50 tgl Exp $
|
||||||
dnl
|
dnl
|
||||||
dnl Developers, please strive to achieve this order:
|
dnl Developers, please strive to achieve this order:
|
||||||
dnl
|
dnl
|
||||||
@@ -278,6 +278,8 @@ choke me
|
|||||||
|
|
||||||
# Disable strict-aliasing rules; needed for gcc 3.3+
|
# Disable strict-aliasing rules; needed for gcc 3.3+
|
||||||
PGAC_PROG_CC_CFLAGS_OPT([-fno-strict-aliasing])
|
PGAC_PROG_CC_CFLAGS_OPT([-fno-strict-aliasing])
|
||||||
|
# Disable optimizations that assume no overflow; needed for gcc 4.3+
|
||||||
|
PGAC_PROG_CC_CFLAGS_OPT([-fwrapv])
|
||||||
elif test x"${CC}" = x"xlc"; then
|
elif test x"${CC}" = x"xlc"; then
|
||||||
# AIX xlc has to have strict aliasing turned off too
|
# AIX xlc has to have strict aliasing turned off too
|
||||||
PGAC_PROG_CC_CFLAGS_OPT([-qnoansialias])
|
PGAC_PROG_CC_CFLAGS_OPT([-qnoansialias])
|
||||||
|
Reference in New Issue
Block a user