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.

Reply via email to