Adds VG_(describe_addr)() for generating symbolic descriptions of a
memory address, based on which variables are in scope at the time and
their types.

As part of this change, I restructured the symbol table parsing code,
by splitting the stabs and dwarf-specific parts into their own files.
I also added a new set of vg_symtypes.[ch] files which contains the
type system code and the core of the VG_(describe_addr)().

I've only implemented the stabs type parser.  I have not yet implemented
the DWARF2 parser.  It looks well-defined but complex.

The only skin which uses this is Helgrind at the moment.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1926 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am
index 6582ac2..a3efb56 100644
--- a/coregrind/Makefile.am
+++ b/coregrind/Makefile.am
@@ -58,6 +58,9 @@
 	vg_signals.c \
 	vg_startup.S \
 	vg_symtab2.c \
+	vg_symtab_dwarf.c \
+	vg_symtab_stabs.c \
+	vg_symtypes.c \
 	vg_syscalls.c \
 	vg_syscall.S \
 	vg_to_ucode.c \
@@ -84,6 +87,8 @@
 noinst_HEADERS = \
         vg_include.h            \
         vg_constants.h          \
+	vg_symtab2.h		\
+	vg_symtypes.h		\
 	vg_unsafe.h
 
 MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) .in_place/libpthread.so.0