Files
rtems/c/src/libmisc/stackchk
Joel Sherrill 254b445071 This set of changes is the build of what was required to convert to
GNU autoconf.  This is the first large step in allowing an RTEMS
user to perform a one-tree build (per crossgcc FAQ) including RTEMS
in the build process.  With this change RTEMS is configured in
built in the same style as the GNU tools, yet retains the basic
structure of its traditional Makefiles (ala Tony Bennett).
Jiri Gaisler (jgais@wd.estec.esa.nl) deserves (and received)
a big thank you for doing this.

There are still issues to be resolved but as of this commit, all target
which can be built on a linux host have been using a modified version
of the source Jiri submitted.  This source was merged and most targets
built in the tree before this commit.

There are some issues which remain to be resolved but they are primarily
related to host OS dependencies, script issues, the use of gawk
for hack_specs, and the dependence on gcc snapshots.  These will
be resolved.
1997-04-01 23:07:52 +00:00
..
1995-05-11 17:39:37 +00:00
1995-05-11 17:39:37 +00:00

#
#  $Id$
#

This directory contains a stack bounds checker.  It provides two
primary features:

   + check for stack overflow at each context switch
   + provides an educated guess at each task's stack usage

The stack overflow check at context switch works by looking for
a 16 byte pattern at the logical end of the stack to be corrupted.
The "guesser" assumes that the entire stack was prefilled with a known
pattern and assumes that the pattern is still in place if the memory
has not been used as a stack.

Both of these can be fooled by pushing large holes onto the stack
and not writing to them... or (much more unlikely) writing the
magic patterns into memory.

This code has not been extensively tested.  It is provided as a tool
for RTEMS users to catch the most common mistake in multitasking
systems ... too little stack space.  Suggestions and comments are appreciated.

NOTES:

1.  Stack usage information is questionable on CPUs which push
    large holes on stack.

2.  The stack checker has a tendency to generate a fault when
    trying to print the helpful diagnostic message.  If it comes
    out, congratulations. If not, then the variable Stack_check_Blown_task
    contains a pointer to the TCB of the offending task.  This
    is usually enough to go on.

FUTURE:

1.  Determine how/if gcc will generate stack probe calls and support that.

2.  Get accurate stack usage numbers on i960.. it pushes very large
    holes on the stack.