diff --git a/Makefile.am b/Makefile.am index 7a752d7d..339a3c63 100644 --- a/Makefile.am +++ b/Makefile.am @@ -78,11 +78,11 @@ dist-hook: gen-ChangeLog .PHONY: update-b4-copyright update-package-copyright-year update-b4-copyright: - find $(srcdir)/data -type f \ + $(AM_V_GEN)find $(srcdir)/data -type f \ | xargs $(srcdir)/build-aux/$@ @echo 'warning: src/parse-gram.[hc] may need to be regenerated.' update-package-copyright-year: - $(srcdir)/build-aux/$@ $(srcdir)/configure.ac + $(AM_V_GEN)$(srcdir)/build-aux/$@ $(srcdir)/configure.ac gen_start_date = 2012-01-16 .PHONY: gen-ChangeLog diff --git a/NEWS b/NEWS index 406521b9..d7d89d2a 100644 --- a/NEWS +++ b/NEWS @@ -569,6 +569,16 @@ GNU Bison NEWS ... } +* Noteworthy changes in release ?.? (????-??-??) [?] + +** Bug fixes + +*** Fix compiler attribute portability (yacc.c) + + With locations enabled, __attribute__ was used unprotected. + +*** Fix some compiler warnings (lalr1.cc) + * Noteworthy changes in release 2.7 (2012-12-12) [stable] ** Bug fixes diff --git a/THANKS b/THANKS index f30602cb..a7d1d47e 100644 --- a/THANKS +++ b/THANKS @@ -107,6 +107,7 @@ Ralf Wildenhues Ralf.Wildenhues@gmx.de Richard Stallman rms@gnu.org Rob Vermaas rob.vermaas@gmail.com Robert Anisko anisko_r@epita.fr +Rob Conde rob.conde@ai-solutions.com Roland Levillain roland@lrde.epita.fr Satya Kiran Popuri satyakiran@gmail.com Sebastian Setzer sebastian.setzer.ext@siemens.com @@ -127,6 +128,7 @@ Tommy Nordgren tommy.nordgren@chello.se Troy A. Johnson troyj@ecn.purdue.edu Tys Lefering gccbison@gmail.com Valentin Tolmer nitnelave1@gmail.com +Victor Khomenko victor.khomenko@newcastle.ac.uk Vin Shelton acs@alumni.princeton.edu W.C.A. Wijngaards wouter@NLnetLabs.nl Wayne Green wayne@infosavvy.com diff --git a/bootstrap b/bootstrap index bee7765f..96f1e762 100755 --- a/bootstrap +++ b/bootstrap @@ -1,6 +1,6 @@ #! /bin/sh # Print a version string. -scriptversion=2013-01-20.16; # UTC +scriptversion=2013-03-08.16; # UTC # Bootstrap this package from checked-out sources. @@ -630,9 +630,13 @@ esac if $bootstrap_sync; then cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || { echo "$0: updating bootstrap and restarting..." + case $(sh -c 'echo "$1"' -- a) in + a) ignored=--;; + *) ignored=ignored;; + esac exec sh -c \ 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ - -- "$GNULIB_SRCDIR/build-aux/bootstrap" \ + $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \ "$0" "$@" --no-bootstrap-sync } fi diff --git a/build-aux/local.mk b/build-aux/local.mk index c5f87ad2..8922ea5f 100644 --- a/build-aux/local.mk +++ b/build-aux/local.mk @@ -1,5 +1,3 @@ -## Makefile for Bison testsuite. - # Copyright (C) 2000-2013 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify diff --git a/data/bison.m4 b/data/bison.m4 index dc12ad2b..910cdf26 100644 --- a/data/bison.m4 +++ b/data/bison.m4 @@ -461,6 +461,24 @@ m4_define([b4_symbol_destructor], [b4_symbol_action([$1], [destructor])]) m4_define([b4_symbol_printer], [b4_symbol_action([$1], [printer])]) +# b4_symbol_actions(KIND, [TYPE = yytype]) +# ---------------------------------------- +# Emit the symbol actions for KIND ("printer" or "destructor"). +# Dispatch on TYPE. +m4_define([b4_symbol_actions], +[m4_pushdef([b4_actions_], m4_expand([b4_symbol_foreach([b4_symbol_$1])]))dnl +m4_ifval(m4_defn([b4_actions_]), +[switch (m4_default([$2], [yytype])) + { + m4_defn([b4_actions_]) + default: + break; + }dnl +], +[YYUSE (m4_default([$2], [yytype]));])dnl +m4_popdef([b4_actions_])dnl +]) + # b4_symbol_case_(SYMBOL-NUM) # --------------------------- # Issue a "case NUM" for SYMBOL-NUM. diff --git a/data/c.m4 b/data/c.m4 index edf9991f..abc769b9 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -199,6 +199,31 @@ m4_define([b4_table_value_equals], [(!!(($2) == ($3)))])]) +## ----------------- ## +## Compiler issues. ## +## ----------------- ## + +# b4_attribute_define +# ------------------- +# Provide portability for __attribute__. +m4_define([b4_attribute_define], +[#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(E) ((void) (E)) +#else +# define YYUSE(E) /* empty */ +#endif +]) + + ## ---------## ## Values. ## ## ---------## @@ -421,12 +446,7 @@ m4_ifset([b4_parse_param], [, b4_parse_param]))[ yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) - { -]b4_symbol_foreach([b4_symbol_destructor])dnl -[ default: - break; - } + ]b4_symbol_actions([destructor])[ }]dnl ]) @@ -459,12 +479,7 @@ m4_if(b4_skeleton, ["yacc.c"], YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif ]])dnl -[ switch (yytype) - { -]b4_symbol_foreach([b4_symbol_printer])dnl -[ default: - break; - } + b4_symbol_actions([printer])[ } diff --git a/data/glr.c b/data/glr.c index 7ab38235..ff70890f 100644 --- a/data/glr.c +++ b/data/glr.c @@ -246,13 +246,6 @@ b4_percent_code_get[]dnl # endif #endif -/* Suppress unused-variable warnings by "using" E. */ -#ifdef __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - #ifndef YYFREE # define YYFREE free #endif @@ -281,17 +274,7 @@ b4_percent_code_get[]dnl # define YYLONGJMP(Env, Val) (longjmp (Env, Val), YYASSERT (0)) #endif -/*-----------------. -| GCC extensions. | -`-----------------*/ - -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ -# endif -#endif +]b4_attribute_define[ #ifndef YYASSERT # define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0))) diff --git a/data/glr.cc b/data/glr.cc index 0164eda6..e57308bd 100644 --- a/data/glr.cc +++ b/data/glr.cc @@ -187,12 +187,7 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl std::ostream& yyoutput = debug_stream (); std::ostream& yyo = yyoutput; YYUSE (yyo); - switch (yytype) - { -]b4_symbol_foreach([b4_symbol_printer])dnl -[ default: - break; - } + ]b4_symbol_actions([printer])[ } diff --git a/data/lalr1.cc b/data/lalr1.cc index 4eec878a..3294f591 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -40,7 +40,6 @@ m4_define([b4_integral_parser_table_define], };dnl ]) - # b4_symbol_value_template(VAL, [TYPE]) # ------------------------------------- # Same as b4_symbol_value, but used in a template method. It makes @@ -205,6 +204,10 @@ b4_location_define])])[ void error (const syntax_error& err); private: + /// This class is not copyable. + ]b4_parser_class_name[ (const ]b4_parser_class_name[&); + ]b4_parser_class_name[& operator= (const ]b4_parser_class_name[&); + /// State numbers. typedef int state_type; @@ -595,13 +598,7 @@ m4_if(b4_prefix, [yy], [], YY_SYMBOL_PRINT (yymsg, yysym);]b4_variant_if([], [ // User destructor. - symbol_number_type yytype = yysym.type_get (); - switch (yytype) - { -]b4_symbol_foreach([b4_symbol_destructor])dnl -[ default: - break; - }])[ + b4_symbol_actions([destructor], [yysym.type_get ()])])[ } #if ]b4_api_PREFIX[DEBUG @@ -616,12 +613,7 @@ m4_if(b4_prefix, [yy], [], yyo << (yytype < yyntokens_ ? "token" : "nterm") << ' ' << yytname_[yytype] << " ("]b4_locations_if([ << yysym.location << ": "])[; - switch (yytype) - { -]b4_symbol_foreach([b4_symbol_printer])dnl -[ default: - break; - } + ]b4_symbol_actions([printer])[ yyo << ')'; } #endif @@ -741,7 +733,7 @@ b4_dollar_popdef])[]dnl yynewstate, since the latter expects the semantical and the location values to have been already stored, initialize these stacks with a primary value. */ - yystack_ = stack_type (0); + yystack_.clear (); yypush_ (YY_NULL, 0, yyla); // A new symbol was pushed on the stack. diff --git a/data/stack.hh b/data/stack.hh index 037c212f..aa64d63d 100644 --- a/data/stack.hh +++ b/data/stack.hh @@ -72,6 +72,12 @@ m4_define([b4_stack_define], seq_.pop_back (); } + void + clear () + { + seq_.clear (); + } + inline typename S::size_type size () const @@ -94,6 +100,8 @@ m4_define([b4_stack_define], } private: + stack (const stack&); + stack& operator= (const stack&); /// The wrapped container. S seq_; }; diff --git a/data/yacc.c b/data/yacc.c index c47114ab..74fadd1d 100644 --- a/data/yacc.c +++ b/data/yacc.c @@ -430,12 +430,7 @@ typedef short int yytype_int16; # endif #endif -/* Suppress unused-variable warnings by "using" E. */ -#ifdef __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif +]b4_attribute_define[ #if ]b4_lac_if([[1]], [[! defined yyoverflow || YYERROR_VERBOSE]])[ diff --git a/gnulib b/gnulib index 38e8c084..076ac82d 160000 --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit 38e8c084b95e98c4e763df8cfc43a141aa93fc5f +Subproject commit 076ac82d1d7f4df54630f1b4917b3c14f227f032 diff --git a/tests/glr-regression.at b/tests/glr-regression.at index 9eb429c7..711ab7ec 100644 --- a/tests/glr-regression.at +++ b/tests/glr-regression.at @@ -486,8 +486,8 @@ start: ; %% -]AT_YYLEX_DEFINE(["a"])[ ]AT_YYERROR_DEFINE[ +]AT_YYLEX_DEFINE(["a"])[ ]AT_MAIN_DEFINE[ ]]) AT_BISON_OPTION_POPDEFS @@ -1679,8 +1679,8 @@ start: b: 'b'; d: /* nada. */; %% -]AT_YYLEX_DEFINE(["abc"])[ ]AT_YYERROR_DEFINE[ +]AT_YYLEX_DEFINE(["abc"])[ ]AT_MAIN_DEFINE[ ]]) AT_BISON_OPTION_POPDEFS