From: Paul Eggert Date: Fri, 4 Aug 2017 22:14:59 +0000 (-0700) Subject: manywarnings: port to 64-bit GCC builds of Emacs X-Git-Tag: v1.0~6025 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=9cfe2a3983e5eb92aa9bd2c033cd3f1579a9c225;p=gnulib.git manywarnings: port to 64-bit GCC builds of Emacs * m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Compute max safe object size rather than hardwiring 2147483647. This is needed to build GNU Emacs, which has one conditional (and used only-in-theory) call to malloc with a literal greater than 2147483647. --- diff --git a/ChangeLog b/ChangeLog index 8d2b695b7e..caab63ee05 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2017-08-04 Paul Eggert + + manywarnings: port to 64-bit GCC builds of Emacs + * m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Compute max safe + object size rather than hardwiring 2147483647. This is needed to + build GNU Emacs, which has one conditional (and used + only-in-theory) call to malloc with a literal greater than + 2147483647. + 2017-08-04 Bruno Haible Relax the license of some modules with no runtime code. diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4 index 6cf1be7d3d..6a8939b2c1 100644 --- a/m4/manywarnings.m4 +++ b/m4/manywarnings.m4 @@ -1,4 +1,4 @@ -# manywarnings.m4 serial 9 +# manywarnings.m4 serial 10 dnl Copyright (C) 2008-2017 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -258,9 +258,20 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC], # gcc --help=warnings outputs an unusual form for these options; list # them here so that the above 'comm' command doesn't report a false match. - # Would prefer "min (PTRDIFF_MAX, SIZE_MAX)", but it must be a literal: - ptrdiff_max_min=2147483647 - gl_manywarn_set="$gl_manywarn_set -Walloc-size-larger-than=$ptrdiff_max_min" + # Would prefer "min (PTRDIFF_MAX, SIZE_MAX)", but it must be a literal + # and AC_COMPUTE_INT requires it to fit in a long: + AC_MSG_CHECKING([max safe object size]) + AC_COMPUTE_INT([gl_alloc_max], + [(LONG_MAX < PTRDIFF_MAX ? LONG_MAX : PTRDIFF_MAX) < (size_t) -1 + ? (LONG_MAX < PTRDIFF_MAX ? LONG_MAX : PTRDIFF_MAX) + : (size_t) -1], + [[#include + #include + #include + ]], + [gl_alloc_max=2147483647]) + AC_MSG_RESULT([$gl_alloc_max]) + gl_manywarn_set="$gl_manywarn_set -Walloc-size-larger-than=$gl_alloc_max" gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2" gl_manywarn_set="$gl_manywarn_set -Wformat-overflow=2" gl_manywarn_set="$gl_manywarn_set -Wformat-truncation=2"