]> Savannah Git Hosting - gnulib.git/commitdiff
manywarnings: port to 64-bit GCC builds of Emacs
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 4 Aug 2017 22:14:59 +0000 (15:14 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 4 Aug 2017 22:15:31 +0000 (15:15 -0700)
* 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.

ChangeLog
m4/manywarnings.m4

index 8d2b695b7ebdd258b9c36e40b301d8d3b866512d..caab63ee05c9fa1609c8aae206328c0a26974c74 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2017-08-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       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  <bruno@clisp.org>
 
        Relax the license of some modules with no runtime code.
index 6cf1be7d3d2fc84068f2d9d28b2a01ba6bb9eee4..6a8939b2c1e5fe7a1406b853dfb7575edc68921b 100644 (file)
@@ -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 <limits.h>
+      #include <stddef.h>
+      #include <stdint.h>
+    ]],
+    [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"