summaryrefslogtreecommitdiffstats
path: root/main/autoconf/0002-Fix-regression-of-AC_CHECK_SIZEOF-on-pointer-types.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/autoconf/0002-Fix-regression-of-AC_CHECK_SIZEOF-on-pointer-types.patch')
-rw-r--r--main/autoconf/0002-Fix-regression-of-AC_CHECK_SIZEOF-on-pointer-types.patch111
1 files changed, 111 insertions, 0 deletions
diff --git a/main/autoconf/0002-Fix-regression-of-AC_CHECK_SIZEOF-on-pointer-types.patch b/main/autoconf/0002-Fix-regression-of-AC_CHECK_SIZEOF-on-pointer-types.patch
new file mode 100644
index 000000000..c19783933
--- /dev/null
+++ b/main/autoconf/0002-Fix-regression-of-AC_CHECK_SIZEOF-on-pointer-types.patch
@@ -0,0 +1,111 @@
+From dfda4402552ac26ce91399e2a812aee4772a512e Mon Sep 17 00:00:00 2001
+From: Eric Blake <eblake@redhat.com>
+Date: Tue, 6 Jul 2010 22:00:44 +0200
+Subject: [PATCH 2/5] Fix regression of AC_CHECK_SIZEOF on pointer types.
+
+* lib/autoconf/types.m4 (AC_CHECK_SIZEOF): Translate `*' to `p'
+when checking literal-ness of the type, for pointer types.
+* lib/m4sugar/m4sh.m4 (_AS_TR_SH): Also consider `*' as literal.
+(_AS_TR_CPP): Likewise.
+* tests/semantics.at (AC_CHECK_ALIGNOF struct): When checking
+for numeric answer, be sure to not allow variable references.
+(AC_CHECK_SIZEOF struct): Likewise. Also, test the
+`AC_CHECK_SIZEOF([int *])' example from the manual.
+* doc/autoconf.texi (Generic Compiler Characteristics): Add
+example marker.
+* NEWS: Update.
+Reports by Nishio Futoshi and Roberto Bagnara.
+
+Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+---
+ ChangeLog | 17 +++++++++++++++++
+ NEWS | 3 +++
+ doc/autoconf.texi | 1 +
+ lib/autoconf/types.m4 | 2 +-
+ lib/m4sugar/m4sh.m4 | 4 ++--
+ tests/semantics.at | 10 +++++++---
+ 6 files changed, 31 insertions(+), 6 deletions(-)
+
+diff --git a/doc/autoconf.texi b/doc/autoconf.texi
+index 39c2ba6..76b01c9 100644
+--- a/doc/autoconf.texi
++++ b/doc/autoconf.texi
+@@ -6957,6 +6957,7 @@ argument was used when cross-compiling.
+ For example, the call
+
+ @example
++@c If you change this example, adjust tests/semantics.at:AC_F77_DUMMY_MAIN usage.
+ AC_CHECK_SIZEOF([int *])
+ @end example
+
+diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
+index ee07148..9f482da 100644
+--- a/lib/autoconf/types.m4
++++ b/lib/autoconf/types.m4
+@@ -763,7 +763,7 @@ Remove this warning and the `AC_CACHE_CHECK' when you adjust the code.])
+ # AC_CHECK_SIZEOF(TYPE, [IGNORED], [INCLUDES = DEFAULT-INCLUDES])
+ # ---------------------------------------------------------------
+ AC_DEFUN([AC_CHECK_SIZEOF],
+-[AS_LITERAL_IF([$1], [],
++[AS_LITERAL_IF(m4_translit([[$1]], [*], [p]), [],
+ [m4_fatal([$0: requires literal arguments])])]dnl
+ [# The cast to long int works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4
+index e1d03d9..6fbc9e1 100644
+--- a/lib/m4sugar/m4sh.m4
++++ b/lib/m4sugar/m4sh.m4
+@@ -1779,7 +1779,7 @@ m4_defun_init([AS_TR_SH],
+ [_$0(m4_expand([$1]))])
+
+ m4_define([_AS_TR_SH],
+-[_AS_LITERAL_IF([$1], [ ][
++[_AS_LITERAL_IF([$1], [*][ ][
+ ])([], [$0_INDIR], [$0_LITERAL])([$1])])
+
+ m4_define([_AS_TR_SH_LITERAL],
+@@ -1812,7 +1812,7 @@ m4_defun_init([AS_TR_CPP],
+ [_$0(m4_expand([$1]))])
+
+ m4_define([_AS_TR_CPP],
+-[_AS_LITERAL_IF([$1], [ ][
++[_AS_LITERAL_IF([$1], [*][ ][
+ ])([], [$0_INDIR], [$0_LITERAL])([$1])])
+
+ m4_define([_AS_TR_CPP_LITERAL],
+diff --git a/tests/semantics.at b/tests/semantics.at
+index b703fd4..48136cd 100644
+--- a/tests/semantics.at
++++ b/tests/semantics.at
+@@ -350,7 +350,7 @@ AT_CHECK_MACRO_CROSS([AC_CHECK_ALIGNOF struct],
+ [[AC_CHECK_ALIGNOF([struct { char c; }])
+ AC_CHECK_ALIGNOF([struct nosuchstruct])
+ ]],
+-[AT_CHECK([[grep "#define ALIGNOF_STRUCT___CHAR_C___ [^0]" config.h]],
++[AT_CHECK([[grep "#define ALIGNOF_STRUCT___CHAR_C___ [1-9]" config.h]],
+ 0, ignore)
+ AT_CHECK([[grep "#define ALIGNOF_STRUCT_NOSUCHSTRUCT 0" config.h]],
+ 0, ignore)
+@@ -379,13 +379,17 @@ AT_CHECK_MACRO_CROSS([AC_CHECK_SIZEOF struct],
+ AC_CHECK_SIZEOF([struct x], [], [struct x { char c; int x; };])
+ AC_CHECK_SIZEOF([const struct x], [], [struct x { const char *p; int x; };])
+ AC_CHECK_SIZEOF([struct nosuchstruct])
++# Taken from autoconf.texi:Generic Compiler Characteristics.
++AC_CHECK_SIZEOF([int *])
+ ]],
+-[AT_CHECK([[grep "#define SIZEOF_STRUCT_X [^0]" config.h]],
++[AT_CHECK([[grep "#define SIZEOF_STRUCT_X [1-9]" config.h]],
+ 0, ignore)
+-AT_CHECK([[grep "#define SIZEOF_CONST_STRUCT_X [^0]" config.h]],
++AT_CHECK([[grep "#define SIZEOF_CONST_STRUCT_X [1-9]" config.h]],
+ 0, ignore)
+ AT_CHECK([[grep "#define SIZEOF_STRUCT_NOSUCHSTRUCT 0" config.h]],
+ 0, ignore)
++AT_CHECK([[grep "#define SIZEOF_INT_P [1-9]" config.h]],
++ 0, ignore)
+ ])
+
+
+--
+1.7.1.1
+