
The fast-fixincludes system now, to the best of our collective belief,
correctly implements exactly the same functionality as the previous
fixincludes and fixinc.* shell scripts.  On systems where many fixes
are required, this is accomplished by putting most of the
functionality into a binary executable.  On systems that had dedicated
fixinc.* shell scripts, those scripts are still used by default until
they can be converted.

POSSIBLE PROBLEMS

There may be some systems on which the fixinc binary program appears
to be functional, but fails to work.  Current thinking is that this
is due to some new process limitations (fork() calls) on those
systems.  If you are experiencing this problem, then copy the script
${src}/gcc/fixinc/inclhack.sh into ${builddir}/gcc/fixinc.sh and run
make again.

And, *please* also report the problem with a description of
the failure mode (symptoms) and the output from:

        egcs/config.guess

to me:  Bruce Korb <fixincludes@autogen.freeservers.com>

TO DO

* fixincl needs to be converted to use gcc's system.h, libiberty, and
  other portability frameworks.


THEORY OF OPERATION

See also:  http://autogen.freeservers.com

The set of fixes required was distilled down to just the data required
to specify what needed to happen for each fix.  Those data were edited
into a new file named gcc/fixinc/inclhack.def.  A program called
AutoGen (http://autogen.freeservers.com) uses these definitions to
instantiate several different templates (gcc/fixinc/*.tpl) that then
produces a fixincludes replacement shell script (inclhack.sh), a
replacement binary program (fixincl.x) and a script to drive the
binary fixincl.sh).

If there is no special purpose script, then mkfixinc.sh will try to
compile, link and test execute the binary version.  If it cannot be
successfully built, the shell version will be used instead.  If
mkfixinc.sh determines that your system needs machine-specific fixes
that have not yet been applied to inclhack.def, it will install and
use the current fixinc.* for that system instead.

Usually, the mkfixinc.sh script will be able to detect when
the binary is not runable.  If you do have problems, however,
please see "POSSIBLE PROBLEMS" above.  Thank you.

Regards,
	Bruce <fixincludes@autogen.freeservers.com>
	Robert <RobertLipe@usa.net>
	Manfred <manfred@s-direktnet.de>