Improvements to the error-collecting machinery:

- Don't waste a potentially huge amount of time calling describe_addr
  on addresses in errors we aren't going to show.

- If an invalid address is just below %ESP, say that it might be due
  to a gcc bug.  Increase the window in which this is allowed to
  1024 bytes below %ESP.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@229 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/vg_include.h b/vg_include.h
index 61d5517..b730254 100644
--- a/vg_include.h
+++ b/vg_include.h
@@ -106,7 +106,7 @@
 
 /* These many bytes below %ESP are considered addressible if we're
    doing the --workaround-gcc296-bugs hack. */
-#define VG_GCC296_BUG_STACK_SLOP 256
+#define VG_GCC296_BUG_STACK_SLOP 1024
 
 /* The maximum number of calls we're prepared to save in a
    backtrace. */
@@ -1152,7 +1152,11 @@
 
 /* The classification of a faulting address. */
 typedef 
-   enum { Stack, Unknown, Freed, Mallocd, UserG, UserS }
+   enum { Undescribed, /* as-yet unclassified */
+          Stack, 
+          Unknown, /* classification yielded nothing useful */
+          Freed, Mallocd, 
+          UserG, UserS }
    AddrKind;
 
 /* Records info about a faulting address. */
@@ -1168,6 +1172,8 @@
       ExeContext* lastchange;
       /* Stack */
       ThreadId stack_tid;
+      /* True if is just-below %esp -- could be a gcc bug. */
+      Bool maybe_gcc;
    }
    AddrInfo;