https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92008
Jim Wilson <wilson at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wilson at gcc dot gnu.org --- Comment #21 from Jim Wilson <wilson at gcc dot gnu.org> --- This looks the same as a binutils bug. https://sourceware.org/bugzilla/show_bug.cgi?id=22941 The easy solution is to touch intl/plural.c after checkout, so that bison won't be run. The contrib/gcc_update script already does this. So the simplest solution for the original problem is to use contrib/gcc_update to update a gcc tree, or "contrib/gcc_update --touch" if you want to fix a gcc tree without updating it. If your gcc git source tree was already mangled by a bad bison run, you will have to manually reset it to a clean tree, e.g. "git reset --hard" or "git diff > tmp.file; patch -p1 --reverse < tmp.file; rm tmp.file" or whatever, and then run the contrib/gcc_update --touch command. Binutils unfortunately does not have an equivalent to the gcc_update script and hence requires a fix. git unfortunately does not preserve file timestamps across commit and checkout, so when you checkout a file it gets the current time. git also tends to check out files in alphabetical order. If you are on a fast filesystem, i.e. linux, plural.c and plural.y almost always get the same timestamp and bison isn't run. If you are on a slow filesystem, i.e. cygwin, plural.c is often older than plural.y, and bison must be run, and the current bison version fails. This is why it is cygwin folk that most commonly run into this problem.