From dfda4402552ac26ce91399e2a812aee4772a512e Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Tue, 06 Jul 2010 20:00:44 +0000 Subject: 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 --- diff --git a/ChangeLog b/ChangeLog index e9e465b..33eca5a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2010-07-10 Eric Blake + and Ralf Wildenhues + + 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. + 2010-07-08 Eric Blake and Ralf Wildenhues diff --git a/NEWS b/NEWS index 5053557..6256d40 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,9 @@ GNU Autoconf NEWS - User visible changes. ** AC_CONFIG_SUBDIRS with more than one subdirectory at a time works again. Regression introduced in 2.66. +** AC_CHECK_SIZEOF of a pointer type works again. Regression introduced in + 2.66. + * Major changes in Autoconf 2.66 (2010-07-02) [stable] Released by Eric Blake, based on git versions 2.65.*. 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) ]) -- cgit v0.8.2.1