1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-20 00:42:27 +03:00

Use -Wno-format-truncation and -Wno-stringop-truncation, if available.

gcc 8 has started emitting some warnings that are largely useless for
our purposes, particularly since they complain about code following
the project-standard coding convention that path names are assumed
to be shorter than MAXPGPATH.  Even if we make the effort to remove
that assumption in some future release, the changes wouldn't get
back-patched.  Hence, just suppress these warnings, on compilers that
have these switches.

Backpatch to all supported branches.

Discussion: https://postgr.es/m/1524563856.26306.9.camel@gunduz.org
This commit is contained in:
Tom Lane 2018-06-16 15:34:07 -04:00
parent 537d7f3e18
commit ec5547e563
2 changed files with 142 additions and 0 deletions

130
configure vendored
View File

@ -4508,6 +4508,7 @@ fi
# We want to suppress clang's unhelpful unused-command-line-argument warnings # We want to suppress clang's unhelpful unused-command-line-argument warnings
# but gcc won't complain about unrecognized -Wno-foo switches, so we have to # but gcc won't complain about unrecognized -Wno-foo switches, so we have to
# test for the positive form and if that works, add the negative form # test for the positive form and if that works, add the negative form
NOT_THE_CFLAGS=""
{ $as_echo "$as_me:$LINENO: checking whether $CC supports -Wunused-command-line-argument" >&5 { $as_echo "$as_me:$LINENO: checking whether $CC supports -Wunused-command-line-argument" >&5
$as_echo_n "checking whether $CC supports -Wunused-command-line-argument... " >&6; } $as_echo_n "checking whether $CC supports -Wunused-command-line-argument... " >&6; }
if test "${pgac_cv_prog_cc_cflags__Wunused_command_line_argument+set}" = set; then if test "${pgac_cv_prog_cc_cflags__Wunused_command_line_argument+set}" = set; then
@ -4571,6 +4572,135 @@ fi
if test -n "$NOT_THE_CFLAGS"; then if test -n "$NOT_THE_CFLAGS"; then
CFLAGS="$CFLAGS -Wno-unused-command-line-argument" CFLAGS="$CFLAGS -Wno-unused-command-line-argument"
fi fi
# Similarly disable useless truncation warnings from gcc 8+
NOT_THE_CFLAGS=""
{ $as_echo "$as_me:$LINENO: checking whether $CC supports -Wformat-truncation" >&5
$as_echo_n "checking whether $CC supports -Wformat-truncation... " >&6; }
if test "${pgac_cv_prog_cc_cflags__Wformat_truncation+set}" = set; then
$as_echo_n "(cached) " >&6
else
pgac_save_CFLAGS=$CFLAGS
CFLAGS="$pgac_save_CFLAGS -Wformat-truncation"
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
pgac_cv_prog_cc_cflags__Wformat_truncation=yes
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
pgac_cv_prog_cc_cflags__Wformat_truncation=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="$pgac_save_CFLAGS"
fi
{ $as_echo "$as_me:$LINENO: result: $pgac_cv_prog_cc_cflags__Wformat_truncation" >&5
$as_echo "$pgac_cv_prog_cc_cflags__Wformat_truncation" >&6; }
if test x"$pgac_cv_prog_cc_cflags__Wformat_truncation" = x"yes"; then
NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wformat-truncation"
fi
if test -n "$NOT_THE_CFLAGS"; then
CFLAGS="$CFLAGS -Wno-format-truncation"
fi
NOT_THE_CFLAGS=""
{ $as_echo "$as_me:$LINENO: checking whether $CC supports -Wstringop-truncation" >&5
$as_echo_n "checking whether $CC supports -Wstringop-truncation... " >&6; }
if test "${pgac_cv_prog_cc_cflags__Wstringop_truncation+set}" = set; then
$as_echo_n "(cached) " >&6
else
pgac_save_CFLAGS=$CFLAGS
CFLAGS="$pgac_save_CFLAGS -Wstringop-truncation"
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
pgac_cv_prog_cc_cflags__Wstringop_truncation=yes
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
pgac_cv_prog_cc_cflags__Wstringop_truncation=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="$pgac_save_CFLAGS"
fi
{ $as_echo "$as_me:$LINENO: result: $pgac_cv_prog_cc_cflags__Wstringop_truncation" >&5
$as_echo "$pgac_cv_prog_cc_cflags__Wstringop_truncation" >&6; }
if test x"$pgac_cv_prog_cc_cflags__Wstringop_truncation" = x"yes"; then
NOT_THE_CFLAGS="${NOT_THE_CFLAGS} -Wstringop-truncation"
fi
if test -n "$NOT_THE_CFLAGS"; then
CFLAGS="$CFLAGS -Wno-stringop-truncation"
fi
elif test "$ICC" = yes; then elif test "$ICC" = yes; then
# Intel's compiler has a bug/misoptimization in checking for # Intel's compiler has a bug/misoptimization in checking for
# division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS. # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS.

View File

@ -430,10 +430,22 @@ if test "$GCC" = yes -a "$ICC" = no; then
# We want to suppress clang's unhelpful unused-command-line-argument warnings # We want to suppress clang's unhelpful unused-command-line-argument warnings
# but gcc won't complain about unrecognized -Wno-foo switches, so we have to # but gcc won't complain about unrecognized -Wno-foo switches, so we have to
# test for the positive form and if that works, add the negative form # test for the positive form and if that works, add the negative form
NOT_THE_CFLAGS=""
PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wunused-command-line-argument]) PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wunused-command-line-argument])
if test -n "$NOT_THE_CFLAGS"; then if test -n "$NOT_THE_CFLAGS"; then
CFLAGS="$CFLAGS -Wno-unused-command-line-argument" CFLAGS="$CFLAGS -Wno-unused-command-line-argument"
fi fi
# Similarly disable useless truncation warnings from gcc 8+
NOT_THE_CFLAGS=""
PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wformat-truncation])
if test -n "$NOT_THE_CFLAGS"; then
CFLAGS="$CFLAGS -Wno-format-truncation"
fi
NOT_THE_CFLAGS=""
PGAC_PROG_CC_VAR_OPT(NOT_THE_CFLAGS, [-Wstringop-truncation])
if test -n "$NOT_THE_CFLAGS"; then
CFLAGS="$CFLAGS -Wno-stringop-truncation"
fi
elif test "$ICC" = yes; then elif test "$ICC" = yes; then
# Intel's compiler has a bug/misoptimization in checking for # Intel's compiler has a bug/misoptimization in checking for
# division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS. # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS.