binutils-gdb/gdb/regformats
Patrick Palka bdf61915fc Have regdat.sh always rewrite the output register file
The rules for generating the output register files look like:

amd64.c : $(srcdir)/../regformats/i386/amd64.dat $(regdat_sh)
	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64.dat amd64.c

According to this rule, if regdat.sh is newer than amd64.c, then
regdat.sh shall be invoked on amd64.dat.  According to regdat.sh, if the
script determines that the output file amd64.c has not changed, then it
will not overwrite the existing output file.  This means that a
subsequent invocation of make will trigger the above rule again as
regdat.sh will be perpetually newer than amd64.c.

This then shows up in the make output like so:

/bin/bash ./../regformats/regdat.sh ./../regformats/i386/amd64-linux.dat amd64-linux.c
amd64-linux.c unchanged.
/bin/bash ./../regformats/regdat.sh ./../regformats/i386/amd64-avx-linux.dat amd64-avx-linux.c
amd64-avx-linux.c unchanged.
...

To fix this pathological behavior, it suffices to have regdat.sh
unconditionally rewrite the output register file.

On my machine, which has a regdat.sh file that is newer than some of the
input register files, this change speeds up every invocation of make
under gdb/ by about 5 seconds.
2014-01-13 12:53:53 -07:00
..
i386
rs6000
aarch64.dat
arm-with-iwmmxt.dat
arm-with-neon.dat
arm-with-vfpv2.dat
arm-with-vfpv3.dat
mips64-dsp-linux.dat
mips64-linux.dat
mips-dsp-linux.dat
mips-linux.dat
nios2-linux.dat
reg-arm.dat
reg-bfin.dat
reg-cf.dat
reg-cris.dat
reg-crisv32.dat
reg-ia64.dat
reg-m32r.dat
reg-m68k.dat
reg-sh.dat
reg-sparc64.dat
reg-spu.dat
reg-tilegx32.dat
reg-tilegx.dat
reg-xtensa.dat
regdat.sh
regdef.h
s390-linux32.dat
s390-linux32v1.dat
s390-linux32v2.dat
s390-linux64.dat
s390-linux64v1.dat
s390-linux64v2.dat
s390-te-linux64.dat
s390x-linux64.dat
s390x-linux64v1.dat
s390x-linux64v2.dat
s390x-te-linux64.dat
tic6x-c62x-linux.dat
tic6x-c62x.dat
tic6x-c64x-linux.dat
tic6x-c64x.dat
tic6x-c64xp-linux.dat
tic6x-c64xp.dat