bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Fix variadic declaration of yyerror() and yylex() function p


From: Jeannot Langlois
Subject: Re: [PATCH] Fix variadic declaration of yyerror() and yylex() function prototypes
Date: Tue, 21 Jun 2005 20:42:59 -0400
User-agent: Mozilla Thunderbird 0.8 (X11/20040913)

Akim Demaille wrote:

I don't know if the patch was installed, but in case it is not yet...

> diff -r -u tests/testsuite tests/testsuite
> --- tests/testsuite        2005-05-22 03:02:00.000000000 -0400
> +++ tests/testsuite        2005-05-28 17:19:06.000000000 -0400

these are `wrong': it is not testsuite you need to patch, but the *.at

files.
Hi Akim,

I've taken some time to put together a new patch that will fix the .at files rather than the testsuite directly and which seems to work here one one of my machines. However, I have ran into a problem on my usual development machine (which has older development tools) which I'd like to verify with you first to ensure I will not submit anything that could be buggy.

I tried my new patch on two different systems (one with Slackware 10.0/autoconf v2.59/automake 1.8.5 and another running an older Slackware 9.0/autoconf 2.53/automake 1.5).

On the machine running the more recent versions of autoconf and automake, my patched bison-2.0a tree built and passed successfully all the testcases using "make check".

However, on the older system with autoconf v2.53 and automake 1.5, I ran into a strange error that would abort and corrupt the testsuite file when running "make check". I have narrowed down the problem to the .at files I have modified:

----------------------------------------------------------------
diff -u -r tests/local.at tests/local.at
--- tests/local.at      2005-05-14 02:52:29.000000000 -0400
+++ tests/local.at      2005-06-19 14:44:40.000000000 -0400
@@ -45,6 +45,9 @@
[m4_bmatch([$3], ["lalr1.cc"], [$1], [$2])])
m4_pushdef([AT_GLR_IF],
[m4_bmatch([$3], [%glr-parser], [$1], [$2])])
+# Using %yacc?
+m4_pushdef([AT_YACCMODE_IF],
+[m4_bmatch([$3], [%yacc], [$1], [$2])])
# Using yacc.c?
m4_pushdef([AT_YACC_IF],
[m4_bmatch([$3], [%glr-parser\|%skeleton], [$2], [$1])])
@@ -121,6 +124,7 @@
m4_popdef([AT_LOCATION_IF])
m4_popdef([AT_PARAM_IF])
m4_popdef([AT_YACC_IF])
+m4_popdef([AT_YACCMODE_IF])
m4_popdef([AT_GLR_IF])
m4_popdef([AT_LALR1_CC_IF])
])# AT_BISON_OPTION_POPDEFS
diff -u -r tests/calc.at tests/calc.at
--- tests/calc.at       2005-05-22 01:06:07.000000000 -0400
+++ tests/calc.at       2005-06-19 15:16:30.000000000 -0400
@@ -72,7 +72,8 @@
[/* yyerror receives the location if:
   - %location & %pure & %glr
   - %location & %pure & %yacc & %parse-param. */
-static void yyerror (AT_YYERROR_ARG_LOC_IF([YYLTYPE *yylloc, ])
+static AT_YACCMODE_IF([int], [void])
+yyerror (AT_YYERROR_ARG_LOC_IF([YYLTYPE *yylloc, ])
                     AT_PARAM_IF([semantic_value *result, int *count, ])
                     const char *s
                     );])[
@@ -144,7 +145,7 @@
  return parser.parse ();
}
],
-[static void
+[static AT_YACCMODE_IF([int], [void])
yyerror (AT_YYERROR_ARG_LOC_IF([YYLTYPE *yylloc, ])
         AT_PARAM_IF([semantic_value *result, int *count, ])
         const char *s)
@@ -161,6 +162,7 @@
            AT_LOC.last_column - 1);
  fprintf (stderr, ": ");])
  fprintf (stderr, "%s\n", s);
+  AT_YACCMODE_IF([return 0;], [])
}])[


diff -u -r tests/cxx-type.at tests/cxx-type.at
--- tests/cxx-type.at   2005-05-14 02:52:29.000000000 -0400
+++ tests/cxx-type.at   2005-06-19 15:18:06.000000000 -0400
@@ -55,7 +55,7 @@
# define ERROR_PARAMETERS char const *s
#endif
  int yylex (LEX_PARAMETERS);
-  int yyerror (ERROR_PARAMETERS);
+  ]AT_YACCMODE_IF([int], [void])[ yyerror (ERROR_PARAMETERS);
%}

%token TYPENAME ID
@@ -188,7 +188,7 @@
    }
}

-int
+]AT_YACCMODE_IF([int], [void])[
yyerror (ERROR_PARAMETERS)
{
#if YYPURE && YYLSP_NEEDED
@@ -197,7 +197,7 @@
    abort ();
#endif
  fprintf (stderr, "%s\n", s);
-  return 0;
+  ]AT_YACCMODE_IF([return 0;], [])[
}


diff -u -r tests/glr-regression.at tests/glr-regression.at
--- tests/glr-regression.at     2005-05-22 01:12:23.000000000 -0400
+++ tests/glr-regression.at     2005-06-19 15:18:31.000000000 -0400
@@ -34,7 +34,7 @@
#define YYSTYPE int
static YYSTYPE exprMerge (YYSTYPE x0, YYSTYPE x1);
int yylex (void);
-int yyerror (char const *msg);
+]AT_YACCMODE_IF([int], [void])[ yyerror (char const *msg);
%}


@@ -70,11 +70,11 @@
  return yyparse ();
}

-int
+]AT_YACCMODE_IF([int], [void])[
yyerror (char const *msg)
{
  fprintf (stderr, "%s\n", msg);
-  exit (4);
+  ]AT_YACCMODE_IF([exit(4);], [])[
}


----------------------------------------------------------------


Here's the output I get when running "make check" from my patched bison-2.0a tree; I can't see why these small changes could be causing so many errors:

----[SNIP]----
make[2]: Entering directory `/usr/src/bison-2.0a-numbersix/tests'
/bin/sh /usr/src/bison-2.0a-numbersix/build-aux/missing --run autom4te --language=autotest -I . testsuite.at -o testsuite.tmp
input.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
input.at:28: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
input.at:46: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
input.at:64: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
input.at:89: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
input.at:130: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
input.at:281: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:38: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:41: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:43: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:45: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:47: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:49: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:51: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:55: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:57: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:60: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:64: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:66: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:70: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:75: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:78: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:82: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
output.at:86: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
sets.at:59: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
sets.at:66: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
sets.at:151: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
sets.at:193: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
reduce.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
reduce.at:26: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
reduce.at:70: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
reduce.at:125: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
reduce.at:212: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
reduce.at:301: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
reduce.at:342: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
synclines.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
synclines.at:93: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
synclines.at:113: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
synclines.at:136: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
synclines.at:155: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
synclines.at:173: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
headers.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
headers.at:27: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
headers.at:76: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
headers.at:77: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
headers.at:86: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
actions.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
actions.at:25: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
actions.at:91: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
actions.at:520: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
actions.at:521: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
actions.at:526: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
actions.at:527: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
actions.at:529: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
actions.at:530: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:20: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:32: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:52: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:129: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:236: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:358: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:477: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:497: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:514: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:534: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:554: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:580: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
conflicts.at:604: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:534: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:543: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:545: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:546: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:547: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:548: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:549: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:550: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:552: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:553: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:555: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:557: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:558: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:560: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:562: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:569: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:579: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:581: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:582: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:583: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:584: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:585: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:586: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:588: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:589: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:591: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:593: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:594: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:596: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:598: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:605: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:616: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:618: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:628: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:631: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:633: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
calc.at:635: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
torture.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
torture.at:141: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
torture.at:232: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
torture.at:367: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
torture.at:441: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
torture.at:466: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
existing.at:21: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
existing.at:26: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
existing.at:366: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
existing.at:1218: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:27: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:65: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:87: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:113: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:257: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:280: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:312: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:365: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:396: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:573: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:815: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:816: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
regression.at:817: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
c++.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
c++.at:102: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
c++.at:103: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:316: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:323: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:329: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:336: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:343: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:350: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:357: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:363: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
cxx-type.at:370: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
glr-regression.at:19: /usr/bin/m4: Non-numeric argument to built-in `m4_incr' glr-regression.at:25: /usr/bin/m4: Non-numeric argument to built-in `m4_incr' glr-regression.at:117: /usr/bin/m4: Non-numeric argument to built-in `m4_incr' glr-regression.at:230: /usr/bin/m4: Non-numeric argument to built-in `m4_incr'
mv testsuite.tmp testsuite
/bin/sh ./testsuite
./testsuite: line 8: syntax error near unexpected token `)'
./testsuite: line 8: `  banner- ) # Banner . input.at:19'
make[2]: *** [check-local] Error 2
make[2]: Leaving directory `/usr/src/bison-2.0a-numbersix/tests'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/usr/src/bison-2.0a-numbersix/tests'
make: *** [check-recursive] Error 1
address@hidden:/usr/src/bison-2.0a-numbersix#
----[SNIP]----

Again, the *exact same patch* applied to the *same* bison-2.0a patched tree on my second machine works perfectly. Could the version of autoconf/automake be too outdated on my older Slackware system? Could there be any other package I should check for?

In all cases, as I got the testsuite successfully working on one system with more recent development tools, should I submit my new patch anyway?


Regards,

--
*Jeannot Langlois*
B. Sc.  Computer Science / B. Sc.  Informatique
Software Developer / Programmeur-Analyste
System/Network Administrator / Administrateur Système/Réseau
**
LINUX_LOGO







reply via email to

[Prev in Thread] Current Thread [Next in Thread]