]> git.saurik.com Git - bison.git/commitdiff
* data/glr.c (b4_shared_declarations): Put start-header first,
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 11 Sep 2006 18:56:58 +0000 (18:56 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 11 Sep 2006 18:56:58 +0000 (18:56 +0000)
before any #includes that we generate, so that feature-test
macros work.  Problem reported by Michael Deutschmann in
<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00004.html>.
* data/lalr1.cc: Likewise.
* doc/bison.texinfo (Prologue): Document that feature-test macros
should be defined before any Bison declarations.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Put defns
that depend on location.hh after, not before, Bison decls, since
we now include location.hh after the first user prologue.

ChangeLog
data/glr.cc
data/lalr1.cc
doc/bison.texinfo
tests/actions.at

index dde03052818835b0cf1edda155aefb508c884900..16802bb43d374b930ec4e930a77dab954026f874 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,27 @@
 2006-09-11  Paul Eggert  <eggert@cs.ucla.edu>
 
 2006-09-11  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * data/glr.c (b4_shared_declarations): Put start-header first,
+       before any #includes that we generate, so that feature-test
+       macros work.  Problem reported by Michael Deutschmann in
+       <http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00004.html>.
+       * data/lalr1.cc: Likewise.
+       * doc/bison.texinfo (Prologue): Document that feature-test macros
+       should be defined before any Bison declarations.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Put defns
+       that depend on location.hh after, not before, Bison decls, since
+       we now include location.hh after the first user prologue.
+
        * doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by
        Sander Brandenburg in
        <http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00002.html>.
        Also, fix minor white space and comment issues.
        * doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by
        Sander Brandenburg in
        <http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00002.html>.
        Also, fix minor white space and comment issues.
+       (Prologue): Mention that it's better to define feature-test macros
+       before Bison declarations.  Problem reported by Michael Deutschmann.
+
+       * README-cvs: Fix typo: "&" should be "&&".  Problem reported
+       by Jim Meyering.
+       * m4/.cvsignore: Add argmatch.m4.  Remove obstack.m4, strerror_r.m4.
+       This adjusts to recent gnulib changes.
 
 2006-09-04  Joel E. Denny  <jdenny@ces.clemson.edu>
 
 
 2006-09-04  Joel E. Denny  <jdenny@ces.clemson.edu>
 
index 59b9e3dd81b5478722d8e0837356d48a93610639..a3cafe8e0a05d27197e1ffb4d264d1306bc5a685 100644 (file)
@@ -221,6 +221,10 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++],
 #ifndef PARSER_HEADER_H
 # define PARSER_HEADER_H
 
 #ifndef PARSER_HEADER_H
 # define PARSER_HEADER_H
 
+]m4_ifdef([b4_start_header],
+[[/* Copy the %start-header blocks.  */
+]b4_user_start_header])[
+
 #include <string>
 #include <iostream>
 
 #include <string>
 #include <iostream>
 
@@ -233,10 +237,6 @@ namespace ]b4_namespace[
   class location;
 }
 
   class location;
 }
 
-]m4_ifdef([b4_start_header],
-[[/* Copy the %start-header blocks.  */
-]b4_user_start_header])[
-
 #include "location.hh"
 
 /* Enabling traces.  */
 #include "location.hh"
 
 /* Enabling traces.  */
index 377659e54100c6e56174310dad31b4742b317933..737342818b459fbe9fec7c3a4a3b5cc449be2901 100644 (file)
@@ -43,6 +43,10 @@ dnl FIXME: This is wrong, we want computed header guards.
 #ifndef PARSER_HEADER_H
 # define PARSER_HEADER_H
 
 #ifndef PARSER_HEADER_H
 # define PARSER_HEADER_H
 
+]m4_ifdef([b4_start_header],
+[[/* Copy the %start-header blocks.  */
+]b4_user_start_header])[
+
 #include <string>
 #include <iostream>
 #include "stack.hh"
 #include <string>
 #include <iostream>
 #include "stack.hh"
@@ -53,12 +57,7 @@ namespace ]b4_namespace[
   class location;
 }
 
   class location;
 }
 
-]m4_ifdef([b4_start_header],
-[[/* Copy the %start-header blocks.  */
-]b4_user_start_header])[
-
-]dnl Include location.hh here: it might depend on headers included above.
-[#include "location.hh"
+#include "location.hh"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
index cf95066a9f87e1d6f986a5c499c3a593537ecc3d..013847b5d884e5d9ea3a854f4d8fd79762417868 100644 (file)
@@ -2649,6 +2649,7 @@ can be done with two @var{Prologue} blocks, one before and one after the
 
 @smallexample
 %@{
 
 @smallexample
 %@{
+  #define _GNU_SOURCE
   #include <stdio.h>
   #include "ptypes.h"
 %@}
   #include <stdio.h>
   #include "ptypes.h"
 %@}
@@ -2666,6 +2667,13 @@ can be done with two @var{Prologue} blocks, one before and one after the
 @dots{}
 @end smallexample
 
 @dots{}
 @end smallexample
 
+When in doubt, it is usually safer to put prologue code before all
+Bison declarations, rather than after.  For example, any definitions
+of feature test macros like @code{_GNU_SOURCE} or
+@code{_POSIX_C_SOURCE} should appear before all Bison declarations, as
+feature test macros can affect the behavior of Bison-generated
+@code{#include} directives.
+
 @findex %before-header
 @findex %start-header
 @findex %after-header
 @findex %before-header
 @findex %start-header
 @findex %after-header
index e1b2cb9950fd67f3c74ba2ab31d4cf6c2e1c8077..6f52b0693cd775c454c7f82519eb5d321e9ef869 100644 (file)
@@ -190,7 +190,7 @@ m4_ifval([$6], [%union
   int ival;
 }])
 AT_LALR1_CC_IF([%define "global_tokens_and_yystype"])
   int ival;
 }])
 AT_LALR1_CC_IF([%define "global_tokens_and_yystype"])
-m4_ifval([$6], [[%end-header {]], [[%start-header {]])
+m4_ifval([$6], [[%end-header {]], [[%after-header {]])
 AT_LALR1_CC_IF([typedef yy::location YYLTYPE;
                 m4_ifval([$6], , [#define YYSTYPE int])])
 [static int yylex (]AT_LEX_FORMALS[);
 AT_LALR1_CC_IF([typedef yy::location YYLTYPE;
                 m4_ifval([$6], , [#define YYSTYPE int])])
 [static int yylex (]AT_LEX_FORMALS[);