This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Bison 3.0 incomptatibility (was: Cygwin build for mingw32 host build failure in binutils-gdb/intl with make 4.0)
- From: "Pierre Muller" <pierre dot muller at ics-cnrs dot unistra dot fr>
- To: <binutils at sourceware dot org>
- Date: Thu, 11 Dec 2014 16:13:28 +0100
- Subject: Bison 3.0 incomptatibility (was: Cygwin build for mingw32 host build failure in binutils-gdb/intl with make 4.0)
- Authentication-results: sourceware.org; auth=none
- References: <005901d01477$eaa21960$bfe64c20$ at muller@ics-cnrs.unistra.fr>
After some research, I found out that this is a known issue:
this issue is fixed in glibc
fixed gettext compatibility with bison 3.0
plural.y was incompatible with newer bison versions
https://github.com/zerovm/glibc/commit/9f3f5229848390ae921f77c92f666ca6f0bff
c00
Is there a "master" intl which we should update from?
Pierre Muller
> -----Message d'origine-----
> De : binutils-owner@sourceware.org [mailto:binutils-
> owner@sourceware.org] De la part de Pierre Muller
> Envoyé : mercredi 10 décembre 2014 13:51
> À : binutils@sourceware.org
> Objet : Cygwin build for mingw32 host build failure in binutils-
> gdb/intl with make 4.0
>
> Hi,
>
> I get build failure trying to compile mingw32 using
> i686-w64-mingw32-gcc on a cygwin installation.
>
> After some checks, I suspect that the problem comes from the fact
> that cygwin has make 4.0 version.
>
> in intl sub-directory,
> plural.c is regenerated using
> bison -y -d --name-prefix=__gettext --output plural.c
> ../../../binutils-gdb/intl/plural.y
> command,
> while on msys with make 3.81,
> the file ../../../binutils-gdb/intl/plural.c source is used.
>
> Installed bison version is 3.0.2
> and the newly generated plural.c leads to this error below:
>
> It seems that this problem is also mingw32 specific because
> for native cygwin compilation, the all target in intl sub-directory is
> all-no.
> But forcing the compilation by running
> make ?C intl all-yes
> also leads to a generation of plural.c aand to the same compilation
> error.
>
> How should this problem be fixed?
>
> Pierre Muller
>
>
>
> i686-w64-mingw32-gcc -c -gstabs+ -O0 -D__USE_MINGW_ACCESS -
> DHAVE_CONFIG_H
> -I. -I../../../binutils-gdb/intl plural.c
> In file included from ../../../binutils-gdb/intl/plural.y:35:0:
> ../../../binutils-gdb/intl/plural-exp.h:102:23: error: conflicting
> types for
> 'libintl_gettextparse'
> # define PLURAL_PARSE libintl_gettextparse
> ^
> ../../../binutils-gdb/intl/plural.y:40:25: note: in expansion of macro
> 'PLURAL_PARSE'
> # define __gettextparse PLURAL_PARSE
> ^
> plural.c:185:5: note: in expansion of macro '__gettextparse'
> int __gettextparse (void);
> ^
> ../../../binutils-gdb/intl/plural-exp.h:102:23: note: previous
> declaration
> of 'libintl_gettextparse' was here
> # define PLURAL_PARSE libintl_gettextparse
> ^
> ../../../binutils-gdb/intl/plural-exp.h:114:12: note: in expansion of
> macro
> 'PLURAL_PARSE'
> extern int PLURAL_PARSE PARAMS ((void *arg));
> ^
> ../../../binutils-gdb/intl/plural-exp.h:102:23: error: conflicting
> types for
> 'libintl_gettextparse'
> # define PLURAL_PARSE libintl_gettextparse
> ^
> ../../../binutils-gdb/intl/plural.y:40:25: note: in expansion of macro
> 'PLURAL_PARSE'
> # define __gettextparse PLURAL_PARSE
> ^
> plural.c:63:25: note: in expansion of macro '__gettextparse'
> #define yyparse __gettextparse
> ^
> plural.c:1130:1: note: in expansion of macro 'yyparse'
> yyparse (void)
> ^
> ../../../binutils-gdb/intl/plural-exp.h:102:23: note: previous
> declaration
> of 'libintl_gettextparse' was here
> # define PLURAL_PARSE libintl_gettextparse
> ^
> ../../../binutils-gdb/intl/plural-exp.h:114:12: note: in expansion of
> macro
> 'PLURAL_PARSE'
> extern int PLURAL_PARSE PARAMS ((void *arg));
> ^
> plural.c: In function 'libintl_gettextparse':
> plural.c:1299:7: error: too few arguments to function '__gettextlex'
> yychar = yylex (&yylval);
> ^
> plural.c:64:25: note: declared here
> #define yylex __gettextlex
> ^
> ../../../binutils-gdb/intl/plural.y:69:12: note: in expansion of macro
> 'yylex'
> static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
> ^
> ../../../binutils-gdb/intl/plural.y:178:29: error: 'arg' undeclared
> (first
> use in this function)
> ((struct parse_args *) arg)->res = $1;
> ^
> ../../../binutils-gdb/intl/plural.y:178:29: note: each undeclared
> identifier
> is reported only once for each function it appears in
> Makefile:133: recipe for target 'plural.o' failed
> make: *** [plural.o] Error 1