On Tue, 28 Apr 2009, Danny Backx wrote: > This started for me as a report from Ismail that the cegcc build broke > on his Mac. I asked about this on the binutils list, got a reply from > H-P that Ismail went on to verify. > > Now the result (below) appears to be that the MacOS problem in the > binutils/ld only appears when combined with bison 2.4.1. > I don't see the issue on my x86 linux PC (I moved bison to 2.4.1 but the > binutils build wouldn't break). > > Can anyone confirm that the patch below (moving some lines in > binutils/ld/deffilep.y up) is legitimate ?
Bison 2.3a changed the handling of the relative positions of %union and %{...%} in the .y file in a backward-incompatible manner. Based on the rest of your email, that appears to be the problem you encountered. It also looks like you're generating a deterministic (that is, LALR(1) not GLR) parser in C. In that case, the only change is that all %{...%} before the first %union are now inserted before rather than after the token definitions. Those %{...%} appearing after the first %union are still inserted after the token definitions. For a complete explanation, see the section for 2.3a in Bison's NEWS file. I apologize for the inconvenience here. The goal of the change was consistency among Bison's skeletons, but I was clearly naive to think users were not likely to be dependent on the previous behavior. Unfortunately, reverting at this point may just further frustrate all users who have managed to update. While Bison will continue to support %{...%}, you might encourage the maintainers of CeGCC to switch from %{...%} to %code {...}, which eliminates many of these subtle ordering issues. See the section "Prologue Alternatives" in the Bison manual for a complete explanation. _______________________________________________ help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison