Changed lots of files for the new core/ + skin/ directory structure:

   - changed lots of Makefile.am files
   - changed configure.in
   - changed lots of #include lines for changed file names
   - changed lots of file headers n footers for changed file names
   - changed vg_regtest to handle new directory structure -- recursively
     traverses subdirectories for .vgtest test files
   - changed lots of paths in memcheck/ regression test expected outputs


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1090 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/Makefile.am b/Makefile.am
index 96911ed..66da88a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,18 +1,18 @@
 
-
-SUBDIRS = demangle . docs tests
+SUBDIRS = 	core . docs \
+		addrcheck \
+		memcheck \
+		cachegrind \
+		corecheck \
+		helgrind \
+		lackey \
+		none
 
 CFLAGS = $(WERROR) -DVG_LIBDIR="\"$(libdir)"\" \
 		-Winline -Wall -Wshadow -O -fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -g
 
 valdir = $(libdir)/valgrind
 
-#LDFLAGS = -Wl,-z -Wl,initfirst
-
-INCLUDES = -I$(srcdir)/demangle
-
-bin_SCRIPTS = valgrind vg_annotate
-
 SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
 
 val_DATA = $(SUPP_FILES) default.supp
@@ -27,147 +27,8 @@
 EXTRA_DIST = $(val_DATA) \
 	PATCHES_APPLIED ACKNOWLEDGEMENTS \
 	README_KDE3_FOLKS README_PACKAGERS \
-	README_MISSING_SYSCALL_OR_IOCTL TODO dosyms vg_libpthread.vs \
-	valgrind.spec valgrind.spec.in \
-	vg_profile.c \
-	vg_cachesim_I1.c vg_cachesim_D1.c vg_cachesim_L2.c vg_cachesim_gen.c
-
-val_PROGRAMS = \
-	valgrind.so \
-	valgrinq.so \
-	libpthread.so \
-	vgskin_memcheck.so \
-	vgskin_cachesim.so \
-	vgskin_eraser.so \
-	vgskin_addrcheck.so \
-	vgskin_none.so \
-	vgskin_lackey.so \
-	vgskin_corecheck.so
-
-libpthread_so_SOURCES = \
-	vg_libpthread.c \
-	vg_libpthread_unimp.c
-libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
-libpthread_so_LDFLAGS	   = -Werror -fno-omit-frame-pointer -UVG_LIBDIR -shared -fpic -Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-valgrinq_so_SOURCES = vg_valgrinq_dummy.c
-valgrinq_so_LDFLAGS = -shared
-
-valgrind_so_SOURCES = \
-	vg_clientfuncs.c \
-	vg_scheduler.c \
-	vg_clientmalloc.c \
-	vg_default.c \
-	vg_demangle.c \
-	vg_dispatch.S \
-	vg_errcontext.c \
-	vg_execontext.c \
-	vg_from_ucode.c \
-	vg_helpers.S \
-	vg_instrument.c \
-	vg_main.c \
-	vg_malloc2.c \
-	vg_memory.c \
-	vg_messages.c \
-	vg_mylibc.c \
-	vg_procselfmaps.c \
-	vg_dummy_profile.c \
-	vg_signals.c \
-	vg_startup.S \
-	vg_symtab2.c \
-	vg_syscalls.c \
-	vg_syscall.S \
-	vg_to_ucode.c \
-	vg_translate.c \
-	vg_transtab.c
-valgrind_so_LDFLAGS = -Wl,-z -Wl,initfirst -shared
-valgrind_so_LDADD = \
-	demangle/cp-demangle.o \
-	demangle/cplus-dem.o \
-	demangle/dyn-string.o \
-	demangle/safe-ctype.o
-
-vgskin_memcheck_so_SOURCES = \
-	vg_memcheck.c \
-	vg_memcheck_clientreqs.c \
-	vg_memcheck_errcontext.c \
-	vg_memcheck_from_ucode.c \
-	vg_memcheck_translate.c \
-	vg_memcheck_helpers.S
-vgskin_memcheck_so_LDFLAGS = -shared
-
-vgskin_cachesim_so_SOURCES = vg_cachesim.c
-vgskin_cachesim_so_LDFLAGS = -shared
-
-vgskin_eraser_so_SOURCES = vg_eraser.c
-vgskin_eraser_so_LDFLAGS = -shared
-
-vgskin_addrcheck_so_SOURCES = vg_addrcheck.c
-vgskin_addrcheck_so_LDFLAGS = -shared
-
-vgskin_none_so_SOURCES 	 = vg_none.c
-vgskin_none_so_LDFLAGS   = -shared
-
-vgskin_lackey_so_SOURCES = vg_lackey.c
-vgskin_lackey_so_LDFLAGS = -shared
-
-vgskin_corecheck_so_SOURCES = vg_corecheck.c
-vgskin_corecheck_so_LDFLAGS = -shared
-
-include_HEADERS = valgrind.h
-
-noinst_HEADERS = \
-        vg_kerneliface.h        \
-        vg_include.h            \
-        vg_skin.h               \
-        vg_constants.h          \
-        vg_constants_skin.h     \
-        vg_unsafe.h		\
-	vg_memcheck_include.h	\
-	vg_memcheck.h
-
-MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) 
-
-vg_memory.o: vg_memory.c $(MANUAL_DEPS)
-	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
-
-vg_clientfuncs.o: vg_clientfuncs.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-vg_libpthread.o: vg_libpthread.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-##valgrind.so$(EXEEXT): $(valgrind_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o valgrind.so \
-##		$(valgrind_so_OBJECTS) $(valgrind_so_LDADD)
-
-##valgrinq.so$(EXEEXT): $(valgrinq_so_OBJECTS)
-##	$(CC) $(CFLAGS) -shared -o valgrinq.so $(valgrinq_so_OBJECTS)
-
-##libpthread.so$(EXEEXT): $(libpthread_so_OBJECTS) $(srcdir)/vg_libpthread.vs
-##	$(CC) -Wall -Werror -g -O -shared -fpic -o libpthread.so \
-##		$(libpthread_so_OBJECTS) \
-##		-Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-##vgskin_memcheck.so$(EXEEXT): $(vgskin_memcheck_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_memcheck.so \
-##		$(vgskin_memcheck_so_OBJECTS)
-
-##vgskin_cachesim.so$(EXEEXT): $(vgskin_cachesim_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachesim.so \
-##		$(vgskin_cachesim_so_OBJECTS)
-
-##vgskin_eraser.so$(EXEEXT): $(vgskin_eraser_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_eraser.so \
-##		$(vgskin_eraser_so_OBJECTS)
-
-##vgskin_none.so$(EXEEXT): $(vgskin_none_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_none.so \
-##		$(vgskin_none_so_OBJECTS)
-
-##vgskin_lackey.so$(EXEEXT): $(vgskin_lackey_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_lackey.so \
-##		$(vgskin_lackey_so_OBJECTS)
+	README_MISSING_SYSCALL_OR_IOCTL TODO \
+	valgrind.spec valgrind.spec.in
 
 install-exec-hook:
 	$(mkinstalldirs) $(DESTDIR)$(valdir)
diff --git a/addrcheck/Makefile.am b/addrcheck/Makefile.am
index 96911ed..64b9b41 100644
--- a/addrcheck/Makefile.am
+++ b/addrcheck/Makefile.am
@@ -1,173 +1,21 @@
 
-
-SUBDIRS = demangle . docs tests
+INCLUDES = -I$(top_srcdir)/include
 
 CFLAGS = $(WERROR) -DVG_LIBDIR="\"$(libdir)"\" \
 		-Winline -Wall -Wshadow -O -fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -g
 
 valdir = $(libdir)/valgrind
 
-#LDFLAGS = -Wl,-z -Wl,initfirst
+val_PROGRAMS = vgskin_addrcheck.so
 
-INCLUDES = -I$(srcdir)/demangle
-
-bin_SCRIPTS = valgrind vg_annotate
-
-SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
-
-val_DATA = $(SUPP_FILES) default.supp
-
-BUILT_SOURCES = default.supp
-
-default.supp: $(SUPP_FILES)
-
-bzdist: dist
-	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
-
-EXTRA_DIST = $(val_DATA) \
-	PATCHES_APPLIED ACKNOWLEDGEMENTS \
-	README_KDE3_FOLKS README_PACKAGERS \
-	README_MISSING_SYSCALL_OR_IOCTL TODO dosyms vg_libpthread.vs \
-	valgrind.spec valgrind.spec.in \
-	vg_profile.c \
-	vg_cachesim_I1.c vg_cachesim_D1.c vg_cachesim_L2.c vg_cachesim_gen.c
-
-val_PROGRAMS = \
-	valgrind.so \
-	valgrinq.so \
-	libpthread.so \
-	vgskin_memcheck.so \
-	vgskin_cachesim.so \
-	vgskin_eraser.so \
-	vgskin_addrcheck.so \
-	vgskin_none.so \
-	vgskin_lackey.so \
-	vgskin_corecheck.so
-
-libpthread_so_SOURCES = \
-	vg_libpthread.c \
-	vg_libpthread_unimp.c
-libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
-libpthread_so_LDFLAGS	   = -Werror -fno-omit-frame-pointer -UVG_LIBDIR -shared -fpic -Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-valgrinq_so_SOURCES = vg_valgrinq_dummy.c
-valgrinq_so_LDFLAGS = -shared
-
-valgrind_so_SOURCES = \
-	vg_clientfuncs.c \
-	vg_scheduler.c \
-	vg_clientmalloc.c \
-	vg_default.c \
-	vg_demangle.c \
-	vg_dispatch.S \
-	vg_errcontext.c \
-	vg_execontext.c \
-	vg_from_ucode.c \
-	vg_helpers.S \
-	vg_instrument.c \
-	vg_main.c \
-	vg_malloc2.c \
-	vg_memory.c \
-	vg_messages.c \
-	vg_mylibc.c \
-	vg_procselfmaps.c \
-	vg_dummy_profile.c \
-	vg_signals.c \
-	vg_startup.S \
-	vg_symtab2.c \
-	vg_syscalls.c \
-	vg_syscall.S \
-	vg_to_ucode.c \
-	vg_translate.c \
-	vg_transtab.c
-valgrind_so_LDFLAGS = -Wl,-z -Wl,initfirst -shared
-valgrind_so_LDADD = \
-	demangle/cp-demangle.o \
-	demangle/cplus-dem.o \
-	demangle/dyn-string.o \
-	demangle/safe-ctype.o
-
-vgskin_memcheck_so_SOURCES = \
-	vg_memcheck.c \
-	vg_memcheck_clientreqs.c \
-	vg_memcheck_errcontext.c \
-	vg_memcheck_from_ucode.c \
-	vg_memcheck_translate.c \
-	vg_memcheck_helpers.S
-vgskin_memcheck_so_LDFLAGS = -shared
-
-vgskin_cachesim_so_SOURCES = vg_cachesim.c
-vgskin_cachesim_so_LDFLAGS = -shared
-
-vgskin_eraser_so_SOURCES = vg_eraser.c
-vgskin_eraser_so_LDFLAGS = -shared
-
-vgskin_addrcheck_so_SOURCES = vg_addrcheck.c
+vgskin_addrcheck_so_SOURCES = ac_main.c
 vgskin_addrcheck_so_LDFLAGS = -shared
 
-vgskin_none_so_SOURCES 	 = vg_none.c
-vgskin_none_so_LDFLAGS   = -shared
+noinst_HEADERS = ac_include.h
 
-vgskin_lackey_so_SOURCES = vg_lackey.c
-vgskin_lackey_so_LDFLAGS = -shared
-
-vgskin_corecheck_so_SOURCES = vg_corecheck.c
-vgskin_corecheck_so_LDFLAGS = -shared
-
-include_HEADERS = valgrind.h
-
-noinst_HEADERS = \
-        vg_kerneliface.h        \
-        vg_include.h            \
-        vg_skin.h               \
-        vg_constants.h          \
-        vg_constants_skin.h     \
-        vg_unsafe.h		\
-	vg_memcheck_include.h	\
-	vg_memcheck.h
-
-MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) 
-
-vg_memory.o: vg_memory.c $(MANUAL_DEPS)
-	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
-
-vg_clientfuncs.o: vg_clientfuncs.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-vg_libpthread.o: vg_libpthread.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-##valgrind.so$(EXEEXT): $(valgrind_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o valgrind.so \
-##		$(valgrind_so_OBJECTS) $(valgrind_so_LDADD)
-
-##valgrinq.so$(EXEEXT): $(valgrinq_so_OBJECTS)
-##	$(CC) $(CFLAGS) -shared -o valgrinq.so $(valgrinq_so_OBJECTS)
-
-##libpthread.so$(EXEEXT): $(libpthread_so_OBJECTS) $(srcdir)/vg_libpthread.vs
-##	$(CC) -Wall -Werror -g -O -shared -fpic -o libpthread.so \
-##		$(libpthread_so_OBJECTS) \
-##		-Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-##vgskin_memcheck.so$(EXEEXT): $(vgskin_memcheck_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_memcheck.so \
-##		$(vgskin_memcheck_so_OBJECTS)
-
-##vgskin_cachesim.so$(EXEEXT): $(vgskin_cachesim_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachesim.so \
-##		$(vgskin_cachesim_so_OBJECTS)
-
-##vgskin_eraser.so$(EXEEXT): $(vgskin_eraser_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_eraser.so \
-##		$(vgskin_eraser_so_OBJECTS)
-
-##vgskin_none.so$(EXEEXT): $(vgskin_none_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_none.so \
-##		$(vgskin_none_so_OBJECTS)
-
-##vgskin_lackey.so$(EXEEXT): $(vgskin_lackey_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_lackey.so \
-##		$(vgskin_lackey_so_OBJECTS)
+##vgskin_addrcheck.so$(EXEEXT): $(vgskin_addrcheck_so_OBJECTS)
+##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_addrcheck.so \
+##		$(vgskin_addrcheck_so_OBJECTS)
 
 install-exec-hook:
 	$(mkinstalldirs) $(DESTDIR)$(valdir)
diff --git a/addrcheck/ac_include.h b/addrcheck/ac_include.h
index ef6b147..d4ef41d 100644
--- a/addrcheck/ac_include.h
+++ b/addrcheck/ac_include.h
@@ -1,7 +1,7 @@
 
 /*--------------------------------------------------------------------*/
 /*--- A header file for the AddrCheck skin.                        ---*/
-/*---                                       vg_addrcheck_include.h ---*/
+/*---                                                 ac_include.h ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -29,8 +29,8 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#ifndef __VG_ADDRCHECK_INCLUDE_H
-#define __VG_ADDRCHECK_INCLUDE_H
+#ifndef __AC_INCLUDE_H
+#define __AC_INCLUDE_H
 
 #include "vg_skin.h"
 
@@ -115,6 +115,6 @@
 #endif
 
 /*--------------------------------------------------------------------*/
-/*--- end                                   vg_addrcheck_include.h ---*/
+/*--- end                                             ac_include.h ---*/
 /*--------------------------------------------------------------------*/
 
diff --git a/addrcheck/ac_main.c b/addrcheck/ac_main.c
index a8d9075..c57c596 100644
--- a/addrcheck/ac_main.c
+++ b/addrcheck/ac_main.c
@@ -2,7 +2,7 @@
 /*--------------------------------------------------------------------*/
 /*--- The AddrCheck skin: like MemCheck, but only does address     ---*/
 /*--- checking.  No definedness checking.                          ---*/
-/*---                                               vg_addrcheck.c ---*/
+/*---                                                    ac_main.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -30,7 +30,7 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_addrcheck_include.h"
+#include "ac_include.h"
 //#include "vg_profile.c"
 
 /*------------------------------------------------------------*/
@@ -2583,5 +2583,5 @@
 }
 
 /*--------------------------------------------------------------------*/
-/*--- end                                           vg_addrcheck.c ---*/
+/*--- end                                                ac_main.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/cachegrind/Makefile.am b/cachegrind/Makefile.am
index 96911ed..f7f1738 100644
--- a/cachegrind/Makefile.am
+++ b/cachegrind/Makefile.am
@@ -1,176 +1,28 @@
 
 
-SUBDIRS = demangle . docs tests
+SUBDIRS = . tests docs
+
+INCLUDES = -I$(srcdir)/demangle -I$(top_srcdir)/include
 
 CFLAGS = $(WERROR) -DVG_LIBDIR="\"$(libdir)"\" \
 		-Winline -Wall -Wshadow -O -fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -g
 
 valdir = $(libdir)/valgrind
 
-#LDFLAGS = -Wl,-z -Wl,initfirst
+bin_SCRIPTS = cg_annotate
 
-INCLUDES = -I$(srcdir)/demangle
+EXTRA_DIST = \
+	cg_sim_I1.c \
+	cg_sim_D1.c \
+	cg_sim_L2.c \
+	cg_sim_gen.c
 
-bin_SCRIPTS = valgrind vg_annotate
+val_PROGRAMS = vgskin_cachegrind.so
 
-SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+vgskin_cachegrind_so_SOURCES = cg_main.c
+vgskin_cachegrind_so_LDFLAGS = -shared
 
-val_DATA = $(SUPP_FILES) default.supp
-
-BUILT_SOURCES = default.supp
-
-default.supp: $(SUPP_FILES)
-
-bzdist: dist
-	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
-
-EXTRA_DIST = $(val_DATA) \
-	PATCHES_APPLIED ACKNOWLEDGEMENTS \
-	README_KDE3_FOLKS README_PACKAGERS \
-	README_MISSING_SYSCALL_OR_IOCTL TODO dosyms vg_libpthread.vs \
-	valgrind.spec valgrind.spec.in \
-	vg_profile.c \
-	vg_cachesim_I1.c vg_cachesim_D1.c vg_cachesim_L2.c vg_cachesim_gen.c
-
-val_PROGRAMS = \
-	valgrind.so \
-	valgrinq.so \
-	libpthread.so \
-	vgskin_memcheck.so \
-	vgskin_cachesim.so \
-	vgskin_eraser.so \
-	vgskin_addrcheck.so \
-	vgskin_none.so \
-	vgskin_lackey.so \
-	vgskin_corecheck.so
-
-libpthread_so_SOURCES = \
-	vg_libpthread.c \
-	vg_libpthread_unimp.c
-libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
-libpthread_so_LDFLAGS	   = -Werror -fno-omit-frame-pointer -UVG_LIBDIR -shared -fpic -Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-valgrinq_so_SOURCES = vg_valgrinq_dummy.c
-valgrinq_so_LDFLAGS = -shared
-
-valgrind_so_SOURCES = \
-	vg_clientfuncs.c \
-	vg_scheduler.c \
-	vg_clientmalloc.c \
-	vg_default.c \
-	vg_demangle.c \
-	vg_dispatch.S \
-	vg_errcontext.c \
-	vg_execontext.c \
-	vg_from_ucode.c \
-	vg_helpers.S \
-	vg_instrument.c \
-	vg_main.c \
-	vg_malloc2.c \
-	vg_memory.c \
-	vg_messages.c \
-	vg_mylibc.c \
-	vg_procselfmaps.c \
-	vg_dummy_profile.c \
-	vg_signals.c \
-	vg_startup.S \
-	vg_symtab2.c \
-	vg_syscalls.c \
-	vg_syscall.S \
-	vg_to_ucode.c \
-	vg_translate.c \
-	vg_transtab.c
-valgrind_so_LDFLAGS = -Wl,-z -Wl,initfirst -shared
-valgrind_so_LDADD = \
-	demangle/cp-demangle.o \
-	demangle/cplus-dem.o \
-	demangle/dyn-string.o \
-	demangle/safe-ctype.o
-
-vgskin_memcheck_so_SOURCES = \
-	vg_memcheck.c \
-	vg_memcheck_clientreqs.c \
-	vg_memcheck_errcontext.c \
-	vg_memcheck_from_ucode.c \
-	vg_memcheck_translate.c \
-	vg_memcheck_helpers.S
-vgskin_memcheck_so_LDFLAGS = -shared
-
-vgskin_cachesim_so_SOURCES = vg_cachesim.c
-vgskin_cachesim_so_LDFLAGS = -shared
-
-vgskin_eraser_so_SOURCES = vg_eraser.c
-vgskin_eraser_so_LDFLAGS = -shared
-
-vgskin_addrcheck_so_SOURCES = vg_addrcheck.c
-vgskin_addrcheck_so_LDFLAGS = -shared
-
-vgskin_none_so_SOURCES 	 = vg_none.c
-vgskin_none_so_LDFLAGS   = -shared
-
-vgskin_lackey_so_SOURCES = vg_lackey.c
-vgskin_lackey_so_LDFLAGS = -shared
-
-vgskin_corecheck_so_SOURCES = vg_corecheck.c
-vgskin_corecheck_so_LDFLAGS = -shared
-
-include_HEADERS = valgrind.h
-
-noinst_HEADERS = \
-        vg_kerneliface.h        \
-        vg_include.h            \
-        vg_skin.h               \
-        vg_constants.h          \
-        vg_constants_skin.h     \
-        vg_unsafe.h		\
-	vg_memcheck_include.h	\
-	vg_memcheck.h
-
-MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) 
-
-vg_memory.o: vg_memory.c $(MANUAL_DEPS)
-	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
-
-vg_clientfuncs.o: vg_clientfuncs.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-vg_libpthread.o: vg_libpthread.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-##valgrind.so$(EXEEXT): $(valgrind_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o valgrind.so \
-##		$(valgrind_so_OBJECTS) $(valgrind_so_LDADD)
-
-##valgrinq.so$(EXEEXT): $(valgrinq_so_OBJECTS)
-##	$(CC) $(CFLAGS) -shared -o valgrinq.so $(valgrinq_so_OBJECTS)
-
-##libpthread.so$(EXEEXT): $(libpthread_so_OBJECTS) $(srcdir)/vg_libpthread.vs
-##	$(CC) -Wall -Werror -g -O -shared -fpic -o libpthread.so \
-##		$(libpthread_so_OBJECTS) \
-##		-Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-##vgskin_memcheck.so$(EXEEXT): $(vgskin_memcheck_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_memcheck.so \
-##		$(vgskin_memcheck_so_OBJECTS)
-
-##vgskin_cachesim.so$(EXEEXT): $(vgskin_cachesim_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachesim.so \
-##		$(vgskin_cachesim_so_OBJECTS)
-
-##vgskin_eraser.so$(EXEEXT): $(vgskin_eraser_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_eraser.so \
-##		$(vgskin_eraser_so_OBJECTS)
-
-##vgskin_none.so$(EXEEXT): $(vgskin_none_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_none.so \
-##		$(vgskin_none_so_OBJECTS)
-
-##vgskin_lackey.so$(EXEEXT): $(vgskin_lackey_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_lackey.so \
-##		$(vgskin_lackey_so_OBJECTS)
-
-install-exec-hook:
-	$(mkinstalldirs) $(DESTDIR)$(valdir)
-	rm -f $(DESTDIR)$(valdir)/libpthread.so.0
-	$(LN_S) libpthread.so $(DESTDIR)$(valdir)/libpthread.so.0
+##vgskin_cachegrind.so$(EXEEXT): $(vgskin_cachegrind_so_OBJECTS)
+##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachegrind.so \
+##		$(vgskin_cachegrind_so_OBJECTS)
 
diff --git a/cachegrind/cg_main.c b/cachegrind/cg_main.c
index b21815e..045748f 100644
--- a/cachegrind/cg_main.c
+++ b/cachegrind/cg_main.c
@@ -2,7 +2,7 @@
 /*--------------------------------------------------------------------*/
 /*--- The cache simulation skin: cache detection; instrumentation, ---*/
 /*--- recording and results printing.                              ---*/
-/*---                                                vg_cachesim.c ---*/
+/*---                                                    cg_main.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -40,9 +40,9 @@
     int line_size;  /* bytes */ 
 } cache_t;
 
-#include "vg_cachesim_L2.c"
-#include "vg_cachesim_I1.c"
-#include "vg_cachesim_D1.c"
+#include "cg_sim_L2.c"
+#include "cg_sim_I1.c"
+#include "cg_sim_D1.c"
 
 /*------------------------------------------------------------*/
 /*--- Constants                                            ---*/
@@ -1999,5 +1999,5 @@
 #endif
 
 /*--------------------------------------------------------------------*/
-/*--- end                                            vg_cachesim.c ---*/
+/*--- end                                                cg_main.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/cachegrind/cg_sim_D1.c b/cachegrind/cg_sim_D1.c
index 19d11ba..ee277c5 100644
--- a/cachegrind/cg_sim_D1.c
+++ b/cachegrind/cg_sim_D1.c
@@ -1,6 +1,6 @@
 /*--------------------------------------------------------------------*/
 /*--- D1 cache simulation.                                         ---*/
-/*---                                             vg_cachesim_D1.c ---*/
+/*---                                                  cg_sim_D1.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -28,11 +28,11 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_cachesim_gen.c"
+#include "cg_sim_gen.c"
 
 CACHESIM(D1, { (*m1)++; cachesim_L2_doref(a, size, m1, m2); } );
 
 /*--------------------------------------------------------------------*/
-/*--- end                                         vg_cachesim_D1.c ---*/
+/*--- end                                              cg_sim_D1.c ---*/
 /*--------------------------------------------------------------------*/
 
diff --git a/cachegrind/cg_sim_I1.c b/cachegrind/cg_sim_I1.c
index 8993ecb..59f8417 100644
--- a/cachegrind/cg_sim_I1.c
+++ b/cachegrind/cg_sim_I1.c
@@ -1,6 +1,6 @@
 /*--------------------------------------------------------------------*/
 /*--- I1 cache simulation.                                         ---*/
-/*---                                             vg_cachesim_I1.c ---*/
+/*---                                                  cg_sim_I1.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -28,11 +28,11 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_cachesim_gen.c"
+#include "cg_sim_gen.c"
 
 CACHESIM(I1, { (*m1)++; cachesim_L2_doref(a, size, m1, m2); } );
 
 /*--------------------------------------------------------------------*/
-/*--- end                                         vg_cachesim_I1.c ---*/
+/*--- end                                             cg_sim_gen.c ---*/
 /*--------------------------------------------------------------------*/
 
diff --git a/cachegrind/cg_sim_L2.c b/cachegrind/cg_sim_L2.c
index e870db2..9945f1e 100644
--- a/cachegrind/cg_sim_L2.c
+++ b/cachegrind/cg_sim_L2.c
@@ -1,6 +1,6 @@
 /*--------------------------------------------------------------------*/
 /*--- L2 cache simulation.                                         ---*/
-/*---                                             vg_cachesim_L2.c ---*/
+/*---                                                  cg_sim_L2.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -28,11 +28,11 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_cachesim_gen.c"
+#include "cg_sim_gen.c"
 
 CACHESIM(L2, (*m2)++ );
 
 /*--------------------------------------------------------------------*/
-/*--- end                                         vg_cachesim_L2.c ---*/
+/*--- end                                              cg_sim_L2.c ---*/
 /*--------------------------------------------------------------------*/
 
diff --git a/cachegrind/cg_sim_gen.c b/cachegrind/cg_sim_gen.c
index 89d3337..a05d1ac 100644
--- a/cachegrind/cg_sim_gen.c
+++ b/cachegrind/cg_sim_gen.c
@@ -1,7 +1,7 @@
 
 /*--------------------------------------------------------------------*/
 /*--- Generic stuff shared by all cache simulation files.          ---*/
-/*---                                            vg_cachesim_gen.c ---*/
+/*---                                                 cg_sim_gen.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -39,8 +39,8 @@
       - both blocks miss                 --> one miss (not two)
 */
 
-#ifndef __VG_CACHESIM_GEN_C
-#define __VG_CACHESIM_GEN_C
+#ifndef __CG_SIM_GEN_C
+#define __CG_SIM_GEN_C
 
 typedef struct {
    int          size;                   /* bytes */
@@ -204,9 +204,9 @@
    return;                                                                  \
 }
 
-#endif  /* ndef __VG_CACHESIM_GEN_C */
+#endif  /* ndef __CG_SIM_GEN_C */
 
 /*--------------------------------------------------------------------*/
-/*--- end                                        vg_cachesim_gen.c ---*/
+/*--- end                                             cg_sim_gen.c ---*/
 /*--------------------------------------------------------------------*/
 
diff --git a/cachegrind/tests/dlclose.stderr.exp b/cachegrind/tests/dlclose.stderr.exp
index 89483cd..ae980c5 100644
--- a/cachegrind/tests/dlclose.stderr.exp
+++ b/cachegrind/tests/dlclose.stderr.exp
@@ -1,6 +1,6 @@
 
 discard ... (... -> ...) translations in range 0x........ .. 0x........
-discard syms in /.../tests/cachesim/myprint.so due to munmap()
+discard syms in /.../tests/myprint.so due to munmap()
 
 I   refs:
 I1  misses:
diff --git a/cachegrind/tests/dlclose.stderr.exp.hd b/cachegrind/tests/dlclose.stderr.exp.hd
index 89483cd..ae980c5 100644
--- a/cachegrind/tests/dlclose.stderr.exp.hd
+++ b/cachegrind/tests/dlclose.stderr.exp.hd
@@ -1,6 +1,6 @@
 
 discard ... (... -> ...) translations in range 0x........ .. 0x........
-discard syms in /.../tests/cachesim/myprint.so due to munmap()
+discard syms in /.../tests/myprint.so due to munmap()
 
 I   refs:
 I1  misses:
diff --git a/cachegrind/tests/filter_cachesim_discards b/cachegrind/tests/filter_cachesim_discards
index a4f6732..f405cf5 100755
--- a/cachegrind/tests/filter_cachesim_discards
+++ b/cachegrind/tests/filter_cachesim_discards
@@ -2,4 +2,4 @@
 
 dir=`dirname $0`
 
-$dir/filter_stderr | $dir/../filter_discards
+$dir/filter_stderr | $dir/../../tests/filter_discards
diff --git a/cachegrind/tests/filter_stderr b/cachegrind/tests/filter_stderr
index c33214c..2100a19 100755
--- a/cachegrind/tests/filter_stderr
+++ b/cachegrind/tests/filter_stderr
@@ -2,7 +2,7 @@
 
 dir=`dirname $0`
 
-$dir/../filter_stderr_basic                         |
+$dir/../../tests/filter_stderr_basic                |
 
 # Remove numbers from I/D/L2 "refs:" lines
 sed "s/\(\(I\|D\|L2\) *refs:\)[ 0-9,()+rdw]*$/\1/"  |
diff --git a/configure.in b/configure.in
index 731b29b..0c1b751 100644
--- a/configure.in
+++ b/configure.in
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
-AC_INIT(vg_clientmalloc.c)
+AC_INIT(core/vg_clientmalloc.c)   # give me a source file, any source file...
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(valgrind, post-1.0.0-ERASER)
+AM_INIT_AUTOMAKE(valgrind, HEAD)
 
 AM_MAINTAINER_MODE
 
@@ -291,17 +291,28 @@
 AC_CHECK_FUNCS([floor memchr memset mkdir strchr strdup strpbrk strrchr strstr])
 
 AC_OUTPUT(
-   vg_annotate
-   valgrind
-   valgrind.spec
    Makefile 
+   valgrind.spec
+   core/Makefile 
+   core/demangle/Makefile 
+   core/docs/Makefile
+   core/valgrind
    docs/Makefile 
-   tests/Makefile 
-   tests/cachesim/Makefile 
-   tests/corecheck/Makefile 
-   tests/none/Makefile 
-   tests/memcheck/Makefile 
-   demangle/Makefile)
+   addrcheck/Makefile
+   memcheck/Makefile
+   memcheck/tests/Makefile
+   memcheck/docs/Makefile
+   cachegrind/Makefile
+   cachegrind/cg_annotate
+   cachegrind/tests/Makefile
+   cachegrind/docs/Makefile
+   corecheck/Makefile
+   corecheck/tests/Makefile
+   helgrind/Makefile
+   lackey/Makefile
+   none/Makefile
+   none/tests/Makefile
+) 
 
 cat<<EOF
 
diff --git a/corecheck/Makefile.am b/corecheck/Makefile.am
index 96911ed..be2ac0d 100644
--- a/corecheck/Makefile.am
+++ b/corecheck/Makefile.am
@@ -1,176 +1,18 @@
 
-
-SUBDIRS = demangle . docs tests
+SUBDIRS = . tests
 
 CFLAGS = $(WERROR) -DVG_LIBDIR="\"$(libdir)"\" \
 		-Winline -Wall -Wshadow -O -fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -g
 
 valdir = $(libdir)/valgrind
 
-#LDFLAGS = -Wl,-z -Wl,initfirst
+INCLUDES = -I$(srcdir)/demangle -I$(top_srcdir)/include
 
-INCLUDES = -I$(srcdir)/demangle
+val_PROGRAMS = vgskin_corecheck.so
 
-bin_SCRIPTS = valgrind vg_annotate
-
-SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
-
-val_DATA = $(SUPP_FILES) default.supp
-
-BUILT_SOURCES = default.supp
-
-default.supp: $(SUPP_FILES)
-
-bzdist: dist
-	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
-
-EXTRA_DIST = $(val_DATA) \
-	PATCHES_APPLIED ACKNOWLEDGEMENTS \
-	README_KDE3_FOLKS README_PACKAGERS \
-	README_MISSING_SYSCALL_OR_IOCTL TODO dosyms vg_libpthread.vs \
-	valgrind.spec valgrind.spec.in \
-	vg_profile.c \
-	vg_cachesim_I1.c vg_cachesim_D1.c vg_cachesim_L2.c vg_cachesim_gen.c
-
-val_PROGRAMS = \
-	valgrind.so \
-	valgrinq.so \
-	libpthread.so \
-	vgskin_memcheck.so \
-	vgskin_cachesim.so \
-	vgskin_eraser.so \
-	vgskin_addrcheck.so \
-	vgskin_none.so \
-	vgskin_lackey.so \
-	vgskin_corecheck.so
-
-libpthread_so_SOURCES = \
-	vg_libpthread.c \
-	vg_libpthread_unimp.c
-libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
-libpthread_so_LDFLAGS	   = -Werror -fno-omit-frame-pointer -UVG_LIBDIR -shared -fpic -Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-valgrinq_so_SOURCES = vg_valgrinq_dummy.c
-valgrinq_so_LDFLAGS = -shared
-
-valgrind_so_SOURCES = \
-	vg_clientfuncs.c \
-	vg_scheduler.c \
-	vg_clientmalloc.c \
-	vg_default.c \
-	vg_demangle.c \
-	vg_dispatch.S \
-	vg_errcontext.c \
-	vg_execontext.c \
-	vg_from_ucode.c \
-	vg_helpers.S \
-	vg_instrument.c \
-	vg_main.c \
-	vg_malloc2.c \
-	vg_memory.c \
-	vg_messages.c \
-	vg_mylibc.c \
-	vg_procselfmaps.c \
-	vg_dummy_profile.c \
-	vg_signals.c \
-	vg_startup.S \
-	vg_symtab2.c \
-	vg_syscalls.c \
-	vg_syscall.S \
-	vg_to_ucode.c \
-	vg_translate.c \
-	vg_transtab.c
-valgrind_so_LDFLAGS = -Wl,-z -Wl,initfirst -shared
-valgrind_so_LDADD = \
-	demangle/cp-demangle.o \
-	demangle/cplus-dem.o \
-	demangle/dyn-string.o \
-	demangle/safe-ctype.o
-
-vgskin_memcheck_so_SOURCES = \
-	vg_memcheck.c \
-	vg_memcheck_clientreqs.c \
-	vg_memcheck_errcontext.c \
-	vg_memcheck_from_ucode.c \
-	vg_memcheck_translate.c \
-	vg_memcheck_helpers.S
-vgskin_memcheck_so_LDFLAGS = -shared
-
-vgskin_cachesim_so_SOURCES = vg_cachesim.c
-vgskin_cachesim_so_LDFLAGS = -shared
-
-vgskin_eraser_so_SOURCES = vg_eraser.c
-vgskin_eraser_so_LDFLAGS = -shared
-
-vgskin_addrcheck_so_SOURCES = vg_addrcheck.c
-vgskin_addrcheck_so_LDFLAGS = -shared
-
-vgskin_none_so_SOURCES 	 = vg_none.c
-vgskin_none_so_LDFLAGS   = -shared
-
-vgskin_lackey_so_SOURCES = vg_lackey.c
-vgskin_lackey_so_LDFLAGS = -shared
-
-vgskin_corecheck_so_SOURCES = vg_corecheck.c
+vgskin_corecheck_so_SOURCES = cc_main.c
 vgskin_corecheck_so_LDFLAGS = -shared
 
-include_HEADERS = valgrind.h
-
-noinst_HEADERS = \
-        vg_kerneliface.h        \
-        vg_include.h            \
-        vg_skin.h               \
-        vg_constants.h          \
-        vg_constants_skin.h     \
-        vg_unsafe.h		\
-	vg_memcheck_include.h	\
-	vg_memcheck.h
-
-MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) 
-
-vg_memory.o: vg_memory.c $(MANUAL_DEPS)
-	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
-
-vg_clientfuncs.o: vg_clientfuncs.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-vg_libpthread.o: vg_libpthread.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-##valgrind.so$(EXEEXT): $(valgrind_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o valgrind.so \
-##		$(valgrind_so_OBJECTS) $(valgrind_so_LDADD)
-
-##valgrinq.so$(EXEEXT): $(valgrinq_so_OBJECTS)
-##	$(CC) $(CFLAGS) -shared -o valgrinq.so $(valgrinq_so_OBJECTS)
-
-##libpthread.so$(EXEEXT): $(libpthread_so_OBJECTS) $(srcdir)/vg_libpthread.vs
-##	$(CC) -Wall -Werror -g -O -shared -fpic -o libpthread.so \
-##		$(libpthread_so_OBJECTS) \
-##		-Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-##vgskin_memcheck.so$(EXEEXT): $(vgskin_memcheck_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_memcheck.so \
-##		$(vgskin_memcheck_so_OBJECTS)
-
-##vgskin_cachesim.so$(EXEEXT): $(vgskin_cachesim_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachesim.so \
-##		$(vgskin_cachesim_so_OBJECTS)
-
-##vgskin_eraser.so$(EXEEXT): $(vgskin_eraser_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_eraser.so \
-##		$(vgskin_eraser_so_OBJECTS)
-
-##vgskin_none.so$(EXEEXT): $(vgskin_none_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_none.so \
-##		$(vgskin_none_so_OBJECTS)
-
-##vgskin_lackey.so$(EXEEXT): $(vgskin_lackey_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_lackey.so \
-##		$(vgskin_lackey_so_OBJECTS)
-
-install-exec-hook:
-	$(mkinstalldirs) $(DESTDIR)$(valdir)
-	rm -f $(DESTDIR)$(valdir)/libpthread.so.0
-	$(LN_S) libpthread.so $(DESTDIR)$(valdir)/libpthread.so.0
-
+##vgskin_corecheck.so$(EXEEXT): $(vgskin_corecheck_so_OBJECTS)
+##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_corecheck.so \
+##		$(vgskin_corecheck_so_OBJECTS)
diff --git a/corecheck/cc_main.c b/corecheck/cc_main.c
index 58568d4..09a8986 100644
--- a/corecheck/cc_main.c
+++ b/corecheck/cc_main.c
@@ -1,6 +1,6 @@
 
 /*--------------------------------------------------------------------*/
-/*--- Skin reporting errors detected in core.       vg_corecheck.c ---*/
+/*--- Skin reporting errors detected in core.            cc_main.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -55,5 +55,5 @@
 }
 
 /*--------------------------------------------------------------------*/
-/*--- end                                           vg_corecheck.c ---*/
+/*--- end                                                cc_main.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/corecheck/tests/filter_stderr b/corecheck/tests/filter_stderr
index 31c5258..7618981 100755
--- a/corecheck/tests/filter_stderr
+++ b/corecheck/tests/filter_stderr
@@ -2,4 +2,4 @@
 
 dir=`dirname $0`
 
-$dir/../filter_stderr_basic
+$dir/../../tests/filter_stderr_basic
diff --git a/corecheck/tests/malloc3.vgtest b/corecheck/tests/malloc3.vgtest
index 9feb8f0..5e1b749 100644
--- a/corecheck/tests/malloc3.vgtest
+++ b/corecheck/tests/malloc3.vgtest
@@ -1,2 +1,2 @@
 prog: malloc3
-stdout_filter: ../filter_addresses
+stdout_filter: ../../tests/filter_addresses
diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am
index 96911ed..98a7de9 100644
--- a/coregrind/Makefile.am
+++ b/coregrind/Makefile.am
@@ -1,48 +1,23 @@
 
-
-SUBDIRS = demangle . docs tests
+SUBDIRS = demangle .
 
 CFLAGS = $(WERROR) -DVG_LIBDIR="\"$(libdir)"\" \
 		-Winline -Wall -Wshadow -O -fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -g
 
 valdir = $(libdir)/valgrind
 
-#LDFLAGS = -Wl,-z -Wl,initfirst
+INCLUDES = -I$(srcdir)/demangle -I$(top_srcdir)/include
 
-INCLUDES = -I$(srcdir)/demangle
-
-bin_SCRIPTS = valgrind vg_annotate
-
-SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
-
-val_DATA = $(SUPP_FILES) default.supp
-
-BUILT_SOURCES = default.supp
+bin_SCRIPTS = valgrind
 
 default.supp: $(SUPP_FILES)
 
-bzdist: dist
-	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
-
-EXTRA_DIST = $(val_DATA) \
-	PATCHES_APPLIED ACKNOWLEDGEMENTS \
-	README_KDE3_FOLKS README_PACKAGERS \
-	README_MISSING_SYSCALL_OR_IOCTL TODO dosyms vg_libpthread.vs \
-	valgrind.spec valgrind.spec.in \
-	vg_profile.c \
-	vg_cachesim_I1.c vg_cachesim_D1.c vg_cachesim_L2.c vg_cachesim_gen.c
-
 val_PROGRAMS = \
 	valgrind.so \
 	valgrinq.so \
-	libpthread.so \
-	vgskin_memcheck.so \
-	vgskin_cachesim.so \
-	vgskin_eraser.so \
-	vgskin_addrcheck.so \
-	vgskin_none.so \
-	vgskin_lackey.so \
-	vgskin_corecheck.so
+	libpthread.so
+
+EXTRA_DIST = vg_libpthread.vs
 
 libpthread_so_SOURCES = \
 	vg_libpthread.c \
@@ -87,44 +62,11 @@
 	demangle/dyn-string.o \
 	demangle/safe-ctype.o
 
-vgskin_memcheck_so_SOURCES = \
-	vg_memcheck.c \
-	vg_memcheck_clientreqs.c \
-	vg_memcheck_errcontext.c \
-	vg_memcheck_from_ucode.c \
-	vg_memcheck_translate.c \
-	vg_memcheck_helpers.S
-vgskin_memcheck_so_LDFLAGS = -shared
-
-vgskin_cachesim_so_SOURCES = vg_cachesim.c
-vgskin_cachesim_so_LDFLAGS = -shared
-
-vgskin_eraser_so_SOURCES = vg_eraser.c
-vgskin_eraser_so_LDFLAGS = -shared
-
-vgskin_addrcheck_so_SOURCES = vg_addrcheck.c
-vgskin_addrcheck_so_LDFLAGS = -shared
-
-vgskin_none_so_SOURCES 	 = vg_none.c
-vgskin_none_so_LDFLAGS   = -shared
-
-vgskin_lackey_so_SOURCES = vg_lackey.c
-vgskin_lackey_so_LDFLAGS = -shared
-
-vgskin_corecheck_so_SOURCES = vg_corecheck.c
-vgskin_corecheck_so_LDFLAGS = -shared
-
-include_HEADERS = valgrind.h
-
 noinst_HEADERS = \
         vg_kerneliface.h        \
         vg_include.h            \
-        vg_skin.h               \
         vg_constants.h          \
-        vg_constants_skin.h     \
-        vg_unsafe.h		\
-	vg_memcheck_include.h	\
-	vg_memcheck.h
+        vg_unsafe.h
 
 MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) 
 
@@ -148,29 +90,3 @@
 ##	$(CC) -Wall -Werror -g -O -shared -fpic -o libpthread.so \
 ##		$(libpthread_so_OBJECTS) \
 ##		-Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-##vgskin_memcheck.so$(EXEEXT): $(vgskin_memcheck_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_memcheck.so \
-##		$(vgskin_memcheck_so_OBJECTS)
-
-##vgskin_cachesim.so$(EXEEXT): $(vgskin_cachesim_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachesim.so \
-##		$(vgskin_cachesim_so_OBJECTS)
-
-##vgskin_eraser.so$(EXEEXT): $(vgskin_eraser_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_eraser.so \
-##		$(vgskin_eraser_so_OBJECTS)
-
-##vgskin_none.so$(EXEEXT): $(vgskin_none_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_none.so \
-##		$(vgskin_none_so_OBJECTS)
-
-##vgskin_lackey.so$(EXEEXT): $(vgskin_lackey_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_lackey.so \
-##		$(vgskin_lackey_so_OBJECTS)
-
-install-exec-hook:
-	$(mkinstalldirs) $(DESTDIR)$(valdir)
-	rm -f $(DESTDIR)$(valdir)/libpthread.so.0
-	$(LN_S) libpthread.so $(DESTDIR)$(valdir)/libpthread.so.0
-
diff --git a/coregrind/demangle/Makefile.am b/coregrind/demangle/Makefile.am
index 554c75b..5c4c4c3 100644
--- a/coregrind/demangle/Makefile.am
+++ b/coregrind/demangle/Makefile.am
@@ -1,4 +1,5 @@
-INCLUDES = -I$(top_srcdir)
+
+INCLUDES = -I$(top_srcdir)/core -I$(top_srcdir)/include
 
 CFLAGS = $(WERROR) -Winline -Wall -Wshadow -O -fomit-frame-pointer -g
 
diff --git a/coregrind/valgrind.in b/coregrind/valgrind.in
index 4fee909..7359eb6 100755
--- a/coregrind/valgrind.in
+++ b/coregrind/valgrind.in
@@ -71,7 +71,7 @@
 skin_so="vgskin_${skin}.so"
 if [ ! -r $VALGRIND/$skin_so ] ; then
    echo
-   echo "Extension error:"
+   echo "Skin error:"
    echo "  The shared library \`$skin_so' for the chosen"
    echo "  skin \`$skin' could not be found in"
    echo "  $VALGRIND"
diff --git a/helgrind/Makefile.am b/helgrind/Makefile.am
index 96911ed..1930b34 100644
--- a/helgrind/Makefile.am
+++ b/helgrind/Makefile.am
@@ -1,176 +1,16 @@
 
-
-SUBDIRS = demangle . docs tests
-
 CFLAGS = $(WERROR) -DVG_LIBDIR="\"$(libdir)"\" \
 		-Winline -Wall -Wshadow -O -fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -g
 
 valdir = $(libdir)/valgrind
 
-#LDFLAGS = -Wl,-z -Wl,initfirst
+INCLUDES = -I$(srcdir)/demangle -I$(top_srcdir)/include
 
-INCLUDES = -I$(srcdir)/demangle
+val_PROGRAMS = vgskin_helgrind.so
 
-bin_SCRIPTS = valgrind vg_annotate
+vgskin_helgrind_so_SOURCES = hg_main.c
+vgskin_helgrind_so_LDFLAGS = -shared
 
-SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
-
-val_DATA = $(SUPP_FILES) default.supp
-
-BUILT_SOURCES = default.supp
-
-default.supp: $(SUPP_FILES)
-
-bzdist: dist
-	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
-
-EXTRA_DIST = $(val_DATA) \
-	PATCHES_APPLIED ACKNOWLEDGEMENTS \
-	README_KDE3_FOLKS README_PACKAGERS \
-	README_MISSING_SYSCALL_OR_IOCTL TODO dosyms vg_libpthread.vs \
-	valgrind.spec valgrind.spec.in \
-	vg_profile.c \
-	vg_cachesim_I1.c vg_cachesim_D1.c vg_cachesim_L2.c vg_cachesim_gen.c
-
-val_PROGRAMS = \
-	valgrind.so \
-	valgrinq.so \
-	libpthread.so \
-	vgskin_memcheck.so \
-	vgskin_cachesim.so \
-	vgskin_eraser.so \
-	vgskin_addrcheck.so \
-	vgskin_none.so \
-	vgskin_lackey.so \
-	vgskin_corecheck.so
-
-libpthread_so_SOURCES = \
-	vg_libpthread.c \
-	vg_libpthread_unimp.c
-libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
-libpthread_so_LDFLAGS	   = -Werror -fno-omit-frame-pointer -UVG_LIBDIR -shared -fpic -Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-valgrinq_so_SOURCES = vg_valgrinq_dummy.c
-valgrinq_so_LDFLAGS = -shared
-
-valgrind_so_SOURCES = \
-	vg_clientfuncs.c \
-	vg_scheduler.c \
-	vg_clientmalloc.c \
-	vg_default.c \
-	vg_demangle.c \
-	vg_dispatch.S \
-	vg_errcontext.c \
-	vg_execontext.c \
-	vg_from_ucode.c \
-	vg_helpers.S \
-	vg_instrument.c \
-	vg_main.c \
-	vg_malloc2.c \
-	vg_memory.c \
-	vg_messages.c \
-	vg_mylibc.c \
-	vg_procselfmaps.c \
-	vg_dummy_profile.c \
-	vg_signals.c \
-	vg_startup.S \
-	vg_symtab2.c \
-	vg_syscalls.c \
-	vg_syscall.S \
-	vg_to_ucode.c \
-	vg_translate.c \
-	vg_transtab.c
-valgrind_so_LDFLAGS = -Wl,-z -Wl,initfirst -shared
-valgrind_so_LDADD = \
-	demangle/cp-demangle.o \
-	demangle/cplus-dem.o \
-	demangle/dyn-string.o \
-	demangle/safe-ctype.o
-
-vgskin_memcheck_so_SOURCES = \
-	vg_memcheck.c \
-	vg_memcheck_clientreqs.c \
-	vg_memcheck_errcontext.c \
-	vg_memcheck_from_ucode.c \
-	vg_memcheck_translate.c \
-	vg_memcheck_helpers.S
-vgskin_memcheck_so_LDFLAGS = -shared
-
-vgskin_cachesim_so_SOURCES = vg_cachesim.c
-vgskin_cachesim_so_LDFLAGS = -shared
-
-vgskin_eraser_so_SOURCES = vg_eraser.c
-vgskin_eraser_so_LDFLAGS = -shared
-
-vgskin_addrcheck_so_SOURCES = vg_addrcheck.c
-vgskin_addrcheck_so_LDFLAGS = -shared
-
-vgskin_none_so_SOURCES 	 = vg_none.c
-vgskin_none_so_LDFLAGS   = -shared
-
-vgskin_lackey_so_SOURCES = vg_lackey.c
-vgskin_lackey_so_LDFLAGS = -shared
-
-vgskin_corecheck_so_SOURCES = vg_corecheck.c
-vgskin_corecheck_so_LDFLAGS = -shared
-
-include_HEADERS = valgrind.h
-
-noinst_HEADERS = \
-        vg_kerneliface.h        \
-        vg_include.h            \
-        vg_skin.h               \
-        vg_constants.h          \
-        vg_constants_skin.h     \
-        vg_unsafe.h		\
-	vg_memcheck_include.h	\
-	vg_memcheck.h
-
-MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) 
-
-vg_memory.o: vg_memory.c $(MANUAL_DEPS)
-	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
-
-vg_clientfuncs.o: vg_clientfuncs.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-vg_libpthread.o: vg_libpthread.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-##valgrind.so$(EXEEXT): $(valgrind_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o valgrind.so \
-##		$(valgrind_so_OBJECTS) $(valgrind_so_LDADD)
-
-##valgrinq.so$(EXEEXT): $(valgrinq_so_OBJECTS)
-##	$(CC) $(CFLAGS) -shared -o valgrinq.so $(valgrinq_so_OBJECTS)
-
-##libpthread.so$(EXEEXT): $(libpthread_so_OBJECTS) $(srcdir)/vg_libpthread.vs
-##	$(CC) -Wall -Werror -g -O -shared -fpic -o libpthread.so \
-##		$(libpthread_so_OBJECTS) \
-##		-Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-##vgskin_memcheck.so$(EXEEXT): $(vgskin_memcheck_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_memcheck.so \
-##		$(vgskin_memcheck_so_OBJECTS)
-
-##vgskin_cachesim.so$(EXEEXT): $(vgskin_cachesim_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachesim.so \
-##		$(vgskin_cachesim_so_OBJECTS)
-
-##vgskin_eraser.so$(EXEEXT): $(vgskin_eraser_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_eraser.so \
-##		$(vgskin_eraser_so_OBJECTS)
-
-##vgskin_none.so$(EXEEXT): $(vgskin_none_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_none.so \
-##		$(vgskin_none_so_OBJECTS)
-
-##vgskin_lackey.so$(EXEEXT): $(vgskin_lackey_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_lackey.so \
-##		$(vgskin_lackey_so_OBJECTS)
-
-install-exec-hook:
-	$(mkinstalldirs) $(DESTDIR)$(valdir)
-	rm -f $(DESTDIR)$(valdir)/libpthread.so.0
-	$(LN_S) libpthread.so $(DESTDIR)$(valdir)/libpthread.so.0
-
+##vgskin_helgrind.so$(EXEEXT): $(vgskin_helgrind_so_OBJECTS)
+##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_helgrind.so \
+##		$(vgskin_helgrind_so_OBJECTS)
diff --git a/helgrind/hg_main.c b/helgrind/hg_main.c
index 43e46bc..6f6dd01 100644
--- a/helgrind/hg_main.c
+++ b/helgrind/hg_main.c
@@ -1,7 +1,7 @@
 /*--------------------------------------------------------------------*/
 /*--- The Eraser skin: checking for data races in threaded         ---*/
 /*--- programs.                                                    ---*/
-/*---                                                  vg_eraser.c ---*/
+/*---                                                    hg_main.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -1411,5 +1411,5 @@
 }
 
 /*--------------------------------------------------------------------*/
-/*--- end                                              vg_eraser.c ---*/
+/*--- end                                                hg_main.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/include/vg_skin.h b/include/vg_skin.h
index 2ecd3ae..0bfba87 100644
--- a/include/vg_skin.h
+++ b/include/vg_skin.h
@@ -99,7 +99,7 @@
    definitions.
    ------------------------------------------------------------------ */
 
-#include "./vg_kerneliface.h"
+#include "core/vg_kerneliface.h"
 
 
 /*====================================================================*/
diff --git a/lackey/Makefile.am b/lackey/Makefile.am
index 96911ed..c8028a3 100644
--- a/lackey/Makefile.am
+++ b/lackey/Makefile.am
@@ -1,176 +1,16 @@
 
-
-SUBDIRS = demangle . docs tests
-
 CFLAGS = $(WERROR) -DVG_LIBDIR="\"$(libdir)"\" \
 		-Winline -Wall -Wshadow -O -fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -g
 
 valdir = $(libdir)/valgrind
 
-#LDFLAGS = -Wl,-z -Wl,initfirst
+INCLUDES = -I$(srcdir)/demangle -I$(top_srcdir)/include
 
-INCLUDES = -I$(srcdir)/demangle
+val_PROGRAMS = vgskin_lackey.so
 
-bin_SCRIPTS = valgrind vg_annotate
-
-SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
-
-val_DATA = $(SUPP_FILES) default.supp
-
-BUILT_SOURCES = default.supp
-
-default.supp: $(SUPP_FILES)
-
-bzdist: dist
-	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
-
-EXTRA_DIST = $(val_DATA) \
-	PATCHES_APPLIED ACKNOWLEDGEMENTS \
-	README_KDE3_FOLKS README_PACKAGERS \
-	README_MISSING_SYSCALL_OR_IOCTL TODO dosyms vg_libpthread.vs \
-	valgrind.spec valgrind.spec.in \
-	vg_profile.c \
-	vg_cachesim_I1.c vg_cachesim_D1.c vg_cachesim_L2.c vg_cachesim_gen.c
-
-val_PROGRAMS = \
-	valgrind.so \
-	valgrinq.so \
-	libpthread.so \
-	vgskin_memcheck.so \
-	vgskin_cachesim.so \
-	vgskin_eraser.so \
-	vgskin_addrcheck.so \
-	vgskin_none.so \
-	vgskin_lackey.so \
-	vgskin_corecheck.so
-
-libpthread_so_SOURCES = \
-	vg_libpthread.c \
-	vg_libpthread_unimp.c
-libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
-libpthread_so_LDFLAGS	   = -Werror -fno-omit-frame-pointer -UVG_LIBDIR -shared -fpic -Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-valgrinq_so_SOURCES = vg_valgrinq_dummy.c
-valgrinq_so_LDFLAGS = -shared
-
-valgrind_so_SOURCES = \
-	vg_clientfuncs.c \
-	vg_scheduler.c \
-	vg_clientmalloc.c \
-	vg_default.c \
-	vg_demangle.c \
-	vg_dispatch.S \
-	vg_errcontext.c \
-	vg_execontext.c \
-	vg_from_ucode.c \
-	vg_helpers.S \
-	vg_instrument.c \
-	vg_main.c \
-	vg_malloc2.c \
-	vg_memory.c \
-	vg_messages.c \
-	vg_mylibc.c \
-	vg_procselfmaps.c \
-	vg_dummy_profile.c \
-	vg_signals.c \
-	vg_startup.S \
-	vg_symtab2.c \
-	vg_syscalls.c \
-	vg_syscall.S \
-	vg_to_ucode.c \
-	vg_translate.c \
-	vg_transtab.c
-valgrind_so_LDFLAGS = -Wl,-z -Wl,initfirst -shared
-valgrind_so_LDADD = \
-	demangle/cp-demangle.o \
-	demangle/cplus-dem.o \
-	demangle/dyn-string.o \
-	demangle/safe-ctype.o
-
-vgskin_memcheck_so_SOURCES = \
-	vg_memcheck.c \
-	vg_memcheck_clientreqs.c \
-	vg_memcheck_errcontext.c \
-	vg_memcheck_from_ucode.c \
-	vg_memcheck_translate.c \
-	vg_memcheck_helpers.S
-vgskin_memcheck_so_LDFLAGS = -shared
-
-vgskin_cachesim_so_SOURCES = vg_cachesim.c
-vgskin_cachesim_so_LDFLAGS = -shared
-
-vgskin_eraser_so_SOURCES = vg_eraser.c
-vgskin_eraser_so_LDFLAGS = -shared
-
-vgskin_addrcheck_so_SOURCES = vg_addrcheck.c
-vgskin_addrcheck_so_LDFLAGS = -shared
-
-vgskin_none_so_SOURCES 	 = vg_none.c
-vgskin_none_so_LDFLAGS   = -shared
-
-vgskin_lackey_so_SOURCES = vg_lackey.c
+vgskin_lackey_so_SOURCES = lk_main.c
 vgskin_lackey_so_LDFLAGS = -shared
 
-vgskin_corecheck_so_SOURCES = vg_corecheck.c
-vgskin_corecheck_so_LDFLAGS = -shared
-
-include_HEADERS = valgrind.h
-
-noinst_HEADERS = \
-        vg_kerneliface.h        \
-        vg_include.h            \
-        vg_skin.h               \
-        vg_constants.h          \
-        vg_constants_skin.h     \
-        vg_unsafe.h		\
-	vg_memcheck_include.h	\
-	vg_memcheck.h
-
-MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) 
-
-vg_memory.o: vg_memory.c $(MANUAL_DEPS)
-	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
-
-vg_clientfuncs.o: vg_clientfuncs.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-vg_libpthread.o: vg_libpthread.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-##valgrind.so$(EXEEXT): $(valgrind_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o valgrind.so \
-##		$(valgrind_so_OBJECTS) $(valgrind_so_LDADD)
-
-##valgrinq.so$(EXEEXT): $(valgrinq_so_OBJECTS)
-##	$(CC) $(CFLAGS) -shared -o valgrinq.so $(valgrinq_so_OBJECTS)
-
-##libpthread.so$(EXEEXT): $(libpthread_so_OBJECTS) $(srcdir)/vg_libpthread.vs
-##	$(CC) -Wall -Werror -g -O -shared -fpic -o libpthread.so \
-##		$(libpthread_so_OBJECTS) \
-##		-Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-##vgskin_memcheck.so$(EXEEXT): $(vgskin_memcheck_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_memcheck.so \
-##		$(vgskin_memcheck_so_OBJECTS)
-
-##vgskin_cachesim.so$(EXEEXT): $(vgskin_cachesim_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachesim.so \
-##		$(vgskin_cachesim_so_OBJECTS)
-
-##vgskin_eraser.so$(EXEEXT): $(vgskin_eraser_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_eraser.so \
-##		$(vgskin_eraser_so_OBJECTS)
-
-##vgskin_none.so$(EXEEXT): $(vgskin_none_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_none.so \
-##		$(vgskin_none_so_OBJECTS)
-
 ##vgskin_lackey.so$(EXEEXT): $(vgskin_lackey_so_OBJECTS)
 ##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_lackey.so \
 ##		$(vgskin_lackey_so_OBJECTS)
-
-install-exec-hook:
-	$(mkinstalldirs) $(DESTDIR)$(valdir)
-	rm -f $(DESTDIR)$(valdir)/libpthread.so.0
-	$(LN_S) libpthread.so $(DESTDIR)$(valdir)/libpthread.so.0
-
diff --git a/lackey/lk_main.c b/lackey/lk_main.c
index 4592cc6..12dfea9 100644
--- a/lackey/lk_main.c
+++ b/lackey/lk_main.c
@@ -1,6 +1,6 @@
 /*--------------------------------------------------------------------*/
 /*--- Simple skin for counting UInstrs, using a C helper.          ---*/
-/*---                                                  vg_lackey.c ---*/
+/*---                                                    lk_main.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -79,7 +79,7 @@
    needs->name        = "lackey";
    needs->description = "a UInstr counter";
 
-   //VG_(register_compact_helper)((Addr) & add_one_dlrr_call);
+   VG_(register_compact_helper)((Addr) & add_one_dlrr_call);
    VG_(register_compact_helper)((Addr) & add_one_BB);
    VG_(register_compact_helper)((Addr) & add_one_x86_instr);
    VG_(register_compact_helper)((Addr) & add_one_UInstr);
@@ -219,6 +219,6 @@
 }
 
 /*--------------------------------------------------------------------*/
-/*--- end                                              vg_lackey.c ---*/
+/*--- end                                                lk_main.c ---*/
 /*--------------------------------------------------------------------*/
 
diff --git a/memcheck/Makefile.am b/memcheck/Makefile.am
index 96911ed..521ca3b 100644
--- a/memcheck/Makefile.am
+++ b/memcheck/Makefile.am
@@ -1,176 +1,30 @@
 
+SUBDIRS = . tests docs
 
-SUBDIRS = demangle . docs tests
+INCLUDES = -I$(top_srcdir)/include
 
 CFLAGS = $(WERROR) -DVG_LIBDIR="\"$(libdir)"\" \
 		-Winline -Wall -Wshadow -O -fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -g
 
 valdir = $(libdir)/valgrind
 
-#LDFLAGS = -Wl,-z -Wl,initfirst
-
-INCLUDES = -I$(srcdir)/demangle
-
-bin_SCRIPTS = valgrind vg_annotate
-
-SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
-
-val_DATA = $(SUPP_FILES) default.supp
-
-BUILT_SOURCES = default.supp
-
-default.supp: $(SUPP_FILES)
-
-bzdist: dist
-	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
-
-EXTRA_DIST = $(val_DATA) \
-	PATCHES_APPLIED ACKNOWLEDGEMENTS \
-	README_KDE3_FOLKS README_PACKAGERS \
-	README_MISSING_SYSCALL_OR_IOCTL TODO dosyms vg_libpthread.vs \
-	valgrind.spec valgrind.spec.in \
-	vg_profile.c \
-	vg_cachesim_I1.c vg_cachesim_D1.c vg_cachesim_L2.c vg_cachesim_gen.c
-
-val_PROGRAMS = \
-	valgrind.so \
-	valgrinq.so \
-	libpthread.so \
-	vgskin_memcheck.so \
-	vgskin_cachesim.so \
-	vgskin_eraser.so \
-	vgskin_addrcheck.so \
-	vgskin_none.so \
-	vgskin_lackey.so \
-	vgskin_corecheck.so
-
-libpthread_so_SOURCES = \
-	vg_libpthread.c \
-	vg_libpthread_unimp.c
-libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
-libpthread_so_LDFLAGS	   = -Werror -fno-omit-frame-pointer -UVG_LIBDIR -shared -fpic -Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-valgrinq_so_SOURCES = vg_valgrinq_dummy.c
-valgrinq_so_LDFLAGS = -shared
-
-valgrind_so_SOURCES = \
-	vg_clientfuncs.c \
-	vg_scheduler.c \
-	vg_clientmalloc.c \
-	vg_default.c \
-	vg_demangle.c \
-	vg_dispatch.S \
-	vg_errcontext.c \
-	vg_execontext.c \
-	vg_from_ucode.c \
-	vg_helpers.S \
-	vg_instrument.c \
-	vg_main.c \
-	vg_malloc2.c \
-	vg_memory.c \
-	vg_messages.c \
-	vg_mylibc.c \
-	vg_procselfmaps.c \
-	vg_dummy_profile.c \
-	vg_signals.c \
-	vg_startup.S \
-	vg_symtab2.c \
-	vg_syscalls.c \
-	vg_syscall.S \
-	vg_to_ucode.c \
-	vg_translate.c \
-	vg_transtab.c
-valgrind_so_LDFLAGS = -Wl,-z -Wl,initfirst -shared
-valgrind_so_LDADD = \
-	demangle/cp-demangle.o \
-	demangle/cplus-dem.o \
-	demangle/dyn-string.o \
-	demangle/safe-ctype.o
+val_PROGRAMS = vgskin_memcheck.so
 
 vgskin_memcheck_so_SOURCES = \
-	vg_memcheck.c \
-	vg_memcheck_clientreqs.c \
-	vg_memcheck_errcontext.c \
-	vg_memcheck_from_ucode.c \
-	vg_memcheck_translate.c \
-	vg_memcheck_helpers.S
+	mc_main.c \
+	mc_clientreqs.c \
+	mc_errcontext.c \
+	mc_from_ucode.c \
+	mc_translate.c \
+	mc_helpers.S
 vgskin_memcheck_so_LDFLAGS = -shared
 
-vgskin_cachesim_so_SOURCES = vg_cachesim.c
-vgskin_cachesim_so_LDFLAGS = -shared
-
-vgskin_eraser_so_SOURCES = vg_eraser.c
-vgskin_eraser_so_LDFLAGS = -shared
-
-vgskin_addrcheck_so_SOURCES = vg_addrcheck.c
-vgskin_addrcheck_so_LDFLAGS = -shared
-
-vgskin_none_so_SOURCES 	 = vg_none.c
-vgskin_none_so_LDFLAGS   = -shared
-
-vgskin_lackey_so_SOURCES = vg_lackey.c
-vgskin_lackey_so_LDFLAGS = -shared
-
-vgskin_corecheck_so_SOURCES = vg_corecheck.c
-vgskin_corecheck_so_LDFLAGS = -shared
-
-include_HEADERS = valgrind.h
-
 noinst_HEADERS = \
-        vg_kerneliface.h        \
-        vg_include.h            \
-        vg_skin.h               \
-        vg_constants.h          \
-        vg_constants_skin.h     \
-        vg_unsafe.h		\
-	vg_memcheck_include.h	\
-	vg_memcheck.h
+	mc_include.h	\
+	memcheck.h
 
 MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) 
 
-vg_memory.o: vg_memory.c $(MANUAL_DEPS)
-	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
-
-vg_clientfuncs.o: vg_clientfuncs.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-vg_libpthread.o: vg_libpthread.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-##valgrind.so$(EXEEXT): $(valgrind_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o valgrind.so \
-##		$(valgrind_so_OBJECTS) $(valgrind_so_LDADD)
-
-##valgrinq.so$(EXEEXT): $(valgrinq_so_OBJECTS)
-##	$(CC) $(CFLAGS) -shared -o valgrinq.so $(valgrinq_so_OBJECTS)
-
-##libpthread.so$(EXEEXT): $(libpthread_so_OBJECTS) $(srcdir)/vg_libpthread.vs
-##	$(CC) -Wall -Werror -g -O -shared -fpic -o libpthread.so \
-##		$(libpthread_so_OBJECTS) \
-##		-Wl,-version-script $(srcdir)/vg_libpthread.vs
-
 ##vgskin_memcheck.so$(EXEEXT): $(vgskin_memcheck_so_OBJECTS)
 ##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_memcheck.so \
 ##		$(vgskin_memcheck_so_OBJECTS)
-
-##vgskin_cachesim.so$(EXEEXT): $(vgskin_cachesim_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachesim.so \
-##		$(vgskin_cachesim_so_OBJECTS)
-
-##vgskin_eraser.so$(EXEEXT): $(vgskin_eraser_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_eraser.so \
-##		$(vgskin_eraser_so_OBJECTS)
-
-##vgskin_none.so$(EXEEXT): $(vgskin_none_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_none.so \
-##		$(vgskin_none_so_OBJECTS)
-
-##vgskin_lackey.so$(EXEEXT): $(vgskin_lackey_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_lackey.so \
-##		$(vgskin_lackey_so_OBJECTS)
-
-install-exec-hook:
-	$(mkinstalldirs) $(DESTDIR)$(valdir)
-	rm -f $(DESTDIR)$(valdir)/libpthread.so.0
-	$(LN_S) libpthread.so $(DESTDIR)$(valdir)/libpthread.so.0
-
diff --git a/memcheck/mc_clientreqs.c b/memcheck/mc_clientreqs.c
index b5284bd..e78afdd 100644
--- a/memcheck/mc_clientreqs.c
+++ b/memcheck/mc_clientreqs.c
@@ -2,7 +2,7 @@
 /*--------------------------------------------------------------------*/
 /*--- Part of the MemCheck skin: for when the client advises       ---*/
 /*--- Valgrind about memory permissions.                           ---*/
-/*---                                     vg_memcheck_clientreqs.c ---*/
+/*---                                              mc_clientreqs.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -30,9 +30,9 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_memcheck_include.h"
+#include "mc_include.h"
 
-#include "vg_memcheck.h"  /* for VG_USERREQ__* */
+#include "memcheck.h"  /* for VG_USERREQ__* */
 
 
 /*------------------------------------------------------------*/
@@ -363,5 +363,5 @@
 
 
 /*--------------------------------------------------------------------*/
-/*--- end                                 vg_memcheck_clientreqs.c ---*/
+/*--- end                                          mc_clientreqs.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/memcheck/mc_errcontext.c b/memcheck/mc_errcontext.c
index 81f420c..01f574c 100644
--- a/memcheck/mc_errcontext.c
+++ b/memcheck/mc_errcontext.c
@@ -2,7 +2,7 @@
 /*--------------------------------------------------------------------*/
 /*--- Part of the MemCheck skin: management of memory error        ---*/
 /*--- messages.                                                    ---*/
-/*---                                     vg_memcheck_errcontext.c ---*/
+/*---                                              mc_errcontext.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -30,7 +30,7 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_memcheck_include.h"
+#include "mc_include.h"
 
 /*------------------------------------------------------------*/
 /*--- Defns                                                ---*/
@@ -606,5 +606,5 @@
 #  undef STREQ
 
 /*--------------------------------------------------------------------*/
-/*--- end                                 vg_memcheck_errcontext.c ---*/
+/*--- end                                          mc_errcontext.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/memcheck/mc_from_ucode.c b/memcheck/mc_from_ucode.c
index 82550b7..84e4386 100644
--- a/memcheck/mc_from_ucode.c
+++ b/memcheck/mc_from_ucode.c
@@ -2,7 +2,7 @@
 /*--------------------------------------------------------------------*/
 /*--- Part of the MemCheck skin: Generate code for skin-specific   ---*/
 /*--- UInstrs.                                                     ---*/
-/*---                                     vg_memcheck_from_ucode.c ---*/
+/*---                                              mc_from_ucode.c ---*/
 /*--------------------------------------------------------------------*/
 /*
    This file is part of Valgrind, an x86 protected-mode emulator 
@@ -29,7 +29,7 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_memcheck_include.h"
+#include "mc_include.h"
 
 /*------------------------------------------------------------*/
 /*--- Renamings of frequently-used global functions.       ---*/
@@ -638,5 +638,5 @@
 }
 
 /*--------------------------------------------------------------------*/
-/*--- end                                 vg_memcheck_from_ucode.c ---*/
+/*--- end                                          mc_from_ucode.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/memcheck/mc_helpers.S b/memcheck/mc_helpers.S
index 515c873..e37d101 100644
--- a/memcheck/mc_helpers.S
+++ b/memcheck/mc_helpers.S
@@ -1,6 +1,6 @@
 ##--------------------------------------------------------------------##
 ##--- Support routines for the memory checker.                     ---##
-##---                                        vg_memcheck_helpers.S ---##
+##---                                        	      mc_helpers.S ---##
 ##--------------------------------------------------------------------##
 
 /*
@@ -28,7 +28,7 @@
   The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_constants.h"
+#include "vg_constants_skin.h"
 
 .global SK_(helper_value_check0_fail)
 SK_(helper_value_check0_fail):
@@ -58,5 +58,7 @@
 	popal
 	ret
 
-
+##--------------------------------------------------------------------##
+##--- end                                    	      mc_helpers.S ---##
+##--------------------------------------------------------------------##
 
diff --git a/memcheck/mc_include.h b/memcheck/mc_include.h
index 82bcae7..61ed261 100644
--- a/memcheck/mc_include.h
+++ b/memcheck/mc_include.h
@@ -1,6 +1,6 @@
 /*--------------------------------------------------------------------*/
 /*--- A header file for all parts of the MemCheck skin.            ---*/
-/*---                                        vg_memcheck_include.h ---*/
+/*---                                                 mc_include.h ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -28,8 +28,8 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#ifndef __VG_MEMCHECK_INCLUDE_H
-#define __VG_MEMCHECK_INCLUDE_H
+#ifndef __MC_INCLUDE_H
+#define __MC_INCLUDE_H
 
 #include "vg_skin.h"
 
@@ -204,6 +204,6 @@
 #endif
 
 /*--------------------------------------------------------------------*/
-/*--- end                                    vg_memcheck_include.h ---*/
+/*--- end                                             mc_include.h ---*/
 /*--------------------------------------------------------------------*/
 
diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c
index 4ee380f..29276d8 100644
--- a/memcheck/mc_main.c
+++ b/memcheck/mc_main.c
@@ -2,7 +2,7 @@
 /*--- Part of the MemCheck skin: Maintain bitmaps of memory,       ---*/
 /*--- tracking the accessibility (A) and validity (V) status of    ---*/
 /*--- each byte.                                                   ---*/
-/*---                                                vg_memcheck.c ---*/
+/*---                                                    mc_main.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -30,8 +30,8 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_memcheck_include.h"
-#include "vg_memcheck.h"   /* for client requests */
+#include "mc_include.h"
+#include "memcheck.h"   /* for client requests */
 //#include "vg_profile.c"
 
 /* Define to debug the mem audit system. */
@@ -2424,5 +2424,5 @@
 }
 
 /*--------------------------------------------------------------------*/
-/*--- end                                            vg_memcheck.c ---*/
+/*--- end                                                mc_main.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c
index 34f9643..139b3d1 100644
--- a/memcheck/mc_translate.c
+++ b/memcheck/mc_translate.c
@@ -1,7 +1,7 @@
 /*--------------------------------------------------------------------*/
 /*--- Part of the MemCheck skin: instrument UCode to perform       ---*/
 /*--- memory checking operations.                                  ---*/
-/*---                                      vg_memcheck_translate.c ---*/
+/*---                                               mc_translate.c ---*/
 /*--------------------------------------------------------------------*/
 /*
    This file is part of Valgrind, an x86 protected-mode emulator 
@@ -28,7 +28,7 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "vg_memcheck_include.h"
+#include "mc_include.h"
 
 /* ---------------------------------------------------------------------
    Template functions for extending UCode
@@ -1466,5 +1466,5 @@
 #undef dis
 
 /*--------------------------------------------------------------------*/
-/*--- end                                  vg_memcheck_translate.c ---*/
+/*--- end                                           mc_translate.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/memcheck/memcheck.h b/memcheck/memcheck.h
index b126ffb..d48aad9 100644
--- a/memcheck/memcheck.h
+++ b/memcheck/memcheck.h
@@ -56,8 +56,8 @@
 */
 
 
-#ifndef __VG_MEMCHECK_H
-#define __VG_MEMCHECK_H
+#ifndef __MEMCHECK_H
+#define __MEMCHECK_H
 
 
 /* This file is for inclusion into client (your!) code.
diff --git a/memcheck/tests/badaddrvalue.stderr.exp b/memcheck/tests/badaddrvalue.stderr.exp
index 8888c85..28143a1 100644
--- a/memcheck/tests/badaddrvalue.stderr.exp
+++ b/memcheck/tests/badaddrvalue.stderr.exp
@@ -2,22 +2,22 @@
 Invalid write of size 1
    at 0x........: main (badaddrvalue.c:8)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/badaddrvalue)
+   by 0x........: (within /.../tests/badaddrvalue)
    Address 0x........ is 1 bytes before a block of size 8 alloc'd
    at 0x........: malloc (vg_clientfuncs.c:...)
    by 0x........: main (badaddrvalue.c:7)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/badaddrvalue)
+   by 0x........: (within /.../tests/badaddrvalue)
 
 Invalid read of size 1
    at 0x........: main (badaddrvalue.c:9)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/badaddrvalue)
+   by 0x........: (within /.../tests/badaddrvalue)
    Address 0x........ is 1 bytes before a block of size 8 alloc'd
    at 0x........: malloc (vg_clientfuncs.c:...)
    by 0x........: main (badaddrvalue.c:7)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/badaddrvalue)
+   by 0x........: (within /.../tests/badaddrvalue)
 
 ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 8 bytes in 1 blocks.
diff --git a/memcheck/tests/badaddrvalue.stderr.exp.hd b/memcheck/tests/badaddrvalue.stderr.exp.hd
index 8888c85..28143a1 100644
--- a/memcheck/tests/badaddrvalue.stderr.exp.hd
+++ b/memcheck/tests/badaddrvalue.stderr.exp.hd
@@ -2,22 +2,22 @@
 Invalid write of size 1
    at 0x........: main (badaddrvalue.c:8)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/badaddrvalue)
+   by 0x........: (within /.../tests/badaddrvalue)
    Address 0x........ is 1 bytes before a block of size 8 alloc'd
    at 0x........: malloc (vg_clientfuncs.c:...)
    by 0x........: main (badaddrvalue.c:7)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/badaddrvalue)
+   by 0x........: (within /.../tests/badaddrvalue)
 
 Invalid read of size 1
    at 0x........: main (badaddrvalue.c:9)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/badaddrvalue)
+   by 0x........: (within /.../tests/badaddrvalue)
    Address 0x........ is 1 bytes before a block of size 8 alloc'd
    at 0x........: malloc (vg_clientfuncs.c:...)
    by 0x........: main (badaddrvalue.c:7)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/badaddrvalue)
+   by 0x........: (within /.../tests/badaddrvalue)
 
 ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 8 bytes in 1 blocks.
diff --git a/memcheck/tests/badfree.stderr.exp b/memcheck/tests/badfree.stderr.exp
index 37c9b3e..c17c3e6 100644
--- a/memcheck/tests/badfree.stderr.exp
+++ b/memcheck/tests/badfree.stderr.exp
@@ -3,14 +3,14 @@
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (badfree.c:12)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/badfree)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/badfree)
    Address 0x........ is not stack'd, malloc'd or free'd
 
 Invalid free() / delete / delete[]
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (badfree.c:15)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/badfree)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/badfree)
    Address 0x........ is on thread 1's stack
 
 ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
diff --git a/memcheck/tests/badloop.stderr.exp b/memcheck/tests/badloop.stderr.exp
index ebfa1c2..9ecb284 100644
--- a/memcheck/tests/badloop.stderr.exp
+++ b/memcheck/tests/badloop.stderr.exp
@@ -2,7 +2,7 @@
 Conditional jump or move depends on uninitialised value(s)
    at 0x........: main (badloop.c:12)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/badloop)
+   by 0x........: (within /.../tests/badloop)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
diff --git a/memcheck/tests/buflen_check.stderr.exp b/memcheck/tests/buflen_check.stderr.exp
index a1b9b36..42fab53 100644
--- a/memcheck/tests/buflen_check.stderr.exp
+++ b/memcheck/tests/buflen_check.stderr.exp
@@ -2,13 +2,13 @@
 Syscall param socketcall.getsockname(name) contains unaddressable byte(s)
    at 0x........: getsockname (in /...libc...)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: socket@@GLIBC_2.0 (in /.../tests/memcheck/buflen_check)
+   by 0x........: socket@@GLIBC_2.0 (in /.../tests/buflen_check)
    Address 0x........ is not stack'd, malloc'd or free'd
 
 Syscall param socketcall.getsockname(namelen_in) contains uninitialised or unaddressable byte(s)
    at 0x........: getsockname (in /...libc...)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: socket@@GLIBC_2.0 (in /.../tests/memcheck/buflen_check)
+   by 0x........: socket@@GLIBC_2.0 (in /.../tests/buflen_check)
    Address 0x........ is not stack'd, malloc'd or free'd
 getsockname(1) failed
 getsockname(2) failed
diff --git a/memcheck/tests/buflen_check.stderr.exp.hd b/memcheck/tests/buflen_check.stderr.exp.hd
index 855f51e..97e3452 100644
--- a/memcheck/tests/buflen_check.stderr.exp.hd
+++ b/memcheck/tests/buflen_check.stderr.exp.hd
@@ -2,7 +2,7 @@
 Syscall param socketcall.getsockname(name) contains unaddressable byte(s)
    at 0x........: getsockname (in /...libc...)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: socket@@GLIBC_2.0 (in /.../tests/memcheck/buflen_check)
+   by 0x........: socket@@GLIBC_2.0 (in /.../tests/buflen_check)
    Address 0x........ is not stack'd, malloc'd or free'd
 getsockname(1) failed
 getsockname(2) failed
diff --git a/memcheck/tests/doublefree.stderr.exp b/memcheck/tests/doublefree.stderr.exp
index 282523f..6f1e5b1 100644
--- a/memcheck/tests/doublefree.stderr.exp
+++ b/memcheck/tests/doublefree.stderr.exp
@@ -3,12 +3,12 @@
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (doublefree.c:10)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/doublefree)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/doublefree)
    Address 0x........ is 0 bytes inside a block of size 177 free'd
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (doublefree.c:10)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/doublefree)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/doublefree)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
diff --git a/memcheck/tests/exitprog.stderr.exp b/memcheck/tests/exitprog.stderr.exp
index 1b30fe0..97a58a4 100644
--- a/memcheck/tests/exitprog.stderr.exp
+++ b/memcheck/tests/exitprog.stderr.exp
@@ -2,12 +2,12 @@
 Invalid write of size 1
    at 0x........: main (exitprog.c:15)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/exitprog)
+   by 0x........: (within /.../tests/exitprog)
    Address 0x........ is 0 bytes after a block of size 1000000 alloc'd
    at 0x........: malloc (vg_clientfuncs.c:...)
    by 0x........: main (exitprog.c:12)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/exitprog)
+   by 0x........: (within /.../tests/exitprog)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 1000000 bytes in 1 blocks.
diff --git a/memcheck/tests/filter_stderr b/memcheck/tests/filter_stderr
index 0d5e763..b764a13 100755
--- a/memcheck/tests/filter_stderr
+++ b/memcheck/tests/filter_stderr
@@ -6,15 +6,15 @@
 
 dir=`dirname $0`
 
-$dir/../filter_stderr_basic                             |
+$dir/../../tests/filter_stderr_basic                    |
 
 # Anonymise addresses
-$dir/../filter_addresses                                |
+$dir/../../tests/filter_addresses                       |
 
 # Anonymise line numbers in vg_clientfuncs.c
 sed "s/vg_clientfuncs.c:[0-9]\+/vg_clientfuncs.c:.../"  |
 
-$dir/../filter_test_paths                               |
+$dir/../../tests/filter_test_paths                      |
 
 # Anonymise paths like "(in /foo/bar/libc-baz.so)"
 sed "s/(in \/.*libc.*)$/(in \/...libc...)/"             |
diff --git a/memcheck/tests/fprw.stderr.exp b/memcheck/tests/fprw.stderr.exp
index 2137572..2a21864 100644
--- a/memcheck/tests/fprw.stderr.exp
+++ b/memcheck/tests/fprw.stderr.exp
@@ -2,79 +2,79 @@
 Use of uninitialised value of size 8
    at 0x........: main (fprw.c:14)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
 
 Use of uninitialised value of size 4
    at 0x........: main (fprw.c:15)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
 
 Use of uninitialised value of size 8
    at 0x........: main (fprw.c:16)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
 
 Use of uninitialised value of size 4
    at 0x........: main (fprw.c:17)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
 
 Invalid read of size 8
    at 0x........: main (fprw.c:20)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
    Address 0x........ is 0 bytes inside a block of size 8 free'd
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (fprw.c:18)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
 
 Invalid write of size 8
    at 0x........: main (fprw.c:20)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
    Address 0x........ is 0 bytes inside a block of size 8 free'd
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (fprw.c:18)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
 
 Invalid read of size 4
    at 0x........: main (fprw.c:21)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
    Address 0x........ is 0 bytes inside a block of size 4 free'd
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (fprw.c:19)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
 
 Invalid write of size 4
    at 0x........: main (fprw.c:21)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
    Address 0x........ is 0 bytes inside a block of size 4 free'd
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (fprw.c:19)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
 
 Invalid free() / delete / delete[]
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (fprw.c:22)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
    Address 0x........ is not stack'd, malloc'd or free'd
 
 Invalid write of size 8
    at 0x........: main (fprw.c:24)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
    Address 0x........ is 0 bytes inside a block of size 4 alloc'd
    at 0x........: malloc (vg_clientfuncs.c:...)
    by 0x........: main (fprw.c:23)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/fprw)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/fprw)
 
 ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 4 bytes in 1 blocks.
diff --git a/memcheck/tests/inits.stderr.exp b/memcheck/tests/inits.stderr.exp
index e703ced..f723d5e 100644
--- a/memcheck/tests/inits.stderr.exp
+++ b/memcheck/tests/inits.stderr.exp
@@ -2,7 +2,7 @@
 Conditional jump or move depends on uninitialised value(s)
    at 0x........: main (inits.c:17)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/inits)
+   by 0x........: (within /.../tests/inits)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
diff --git a/memcheck/tests/inline.stderr.exp b/memcheck/tests/inline.stderr.exp
index a2225c1..bb83301 100644
--- a/memcheck/tests/inline.stderr.exp
+++ b/memcheck/tests/inline.stderr.exp
@@ -3,12 +3,12 @@
    at 0x........: addemup (inline.c:10)
    by 0x........: main (inline.c:18)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: calloc@@GLIBC_2.0 (in /.../tests/memcheck/inline)
+   by 0x........: calloc@@GLIBC_2.0 (in /.../tests/inline)
    Address 0x........ is 0 bytes after a block of size 40 alloc'd
    at 0x........: calloc (vg_clientfuncs.c:...)
    by 0x........: main (inline.c:17)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: calloc@@GLIBC_2.0 (in /.../tests/memcheck/inline)
+   by 0x........: calloc@@GLIBC_2.0 (in /.../tests/inline)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 40 bytes in 1 blocks.
diff --git a/memcheck/tests/malloc1.stderr.exp b/memcheck/tests/malloc1.stderr.exp
index 1e4c67f..0c501cf 100644
--- a/memcheck/tests/malloc1.stderr.exp
+++ b/memcheck/tests/malloc1.stderr.exp
@@ -3,7 +3,7 @@
    at 0x........: really (malloc1.c:20)
    by 0x........: main (malloc1.c:10)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/malloc1)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/malloc1)
    Address 0x........ is 1 bytes inside a block of size 10 free'd
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: really (malloc1.c:19)
@@ -14,7 +14,7 @@
    at 0x........: really (malloc1.c:23)
    by 0x........: main (malloc1.c:10)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/malloc1)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/malloc1)
    Address 0x........ is 1 bytes before a block of size 10 alloc'd
    at 0x........: malloc (vg_clientfuncs.c:...)
    by 0x........: really (malloc1.c:21)
diff --git a/memcheck/tests/malloc2.stderr.exp b/memcheck/tests/malloc2.stderr.exp
index dd86b2d..968c5f1 100644
--- a/memcheck/tests/malloc2.stderr.exp
+++ b/memcheck/tests/malloc2.stderr.exp
@@ -2,23 +2,23 @@
 Invalid write of size 1
    at 0x........: main (malloc2.c:39)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/malloc2)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/malloc2)
    Address 0x........ is 0 bytes inside a block of size 429 free'd
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (malloc2.c:38)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/malloc2)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/malloc2)
 
 Invalid free() / delete / delete[]
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (malloc2.c:43)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/malloc2)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/malloc2)
    Address 0x........ is 0 bytes inside a block of size 429 free'd
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (malloc2.c:38)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: free@@GLIBC_2.0 (in /.../tests/memcheck/malloc2)
+   by 0x........: free@@GLIBC_2.0 (in /.../tests/malloc2)
 
 ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
diff --git a/memcheck/tests/manuel1.stderr.exp b/memcheck/tests/manuel1.stderr.exp
index c674937..f19d9f8 100644
--- a/memcheck/tests/manuel1.stderr.exp
+++ b/memcheck/tests/manuel1.stderr.exp
@@ -2,7 +2,7 @@
 Conditional jump or move depends on uninitialised value(s)
    at 0x........: main (manuel1.c:7)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/manuel1)
+   by 0x........: (within /.../tests/manuel1)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
diff --git a/memcheck/tests/manuel2.stderr.exp b/memcheck/tests/manuel2.stderr.exp
index 55ff720..c72b3de 100644
--- a/memcheck/tests/manuel2.stderr.exp
+++ b/memcheck/tests/manuel2.stderr.exp
@@ -2,7 +2,7 @@
 Use of uninitialised value of size 4
    at 0x........: main (manuel2.c:8)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/manuel2)
+   by 0x........: (within /.../tests/manuel2)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
diff --git a/memcheck/tests/memalign_test.stderr.exp b/memcheck/tests/memalign_test.stderr.exp
index 4725928..8137843 100644
--- a/memcheck/tests/memalign_test.stderr.exp
+++ b/memcheck/tests/memalign_test.stderr.exp
@@ -3,12 +3,12 @@
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (memalign_test.c:17)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: valloc@@GLIBC_2.0 (in /.../tests/memcheck/memalign_test)
+   by 0x........: valloc@@GLIBC_2.0 (in /.../tests/memalign_test)
    Address 0x........ is 0 bytes inside a block of size 111110 free'd
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (memalign_test.c:15)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: valloc@@GLIBC_2.0 (in /.../tests/memcheck/memalign_test)
+   by 0x........: valloc@@GLIBC_2.0 (in /.../tests/memalign_test)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
diff --git a/memcheck/tests/memcmptest.stderr.exp b/memcheck/tests/memcmptest.stderr.exp
index d7b1c3a..56c325f 100644
--- a/memcheck/tests/memcmptest.stderr.exp
+++ b/memcheck/tests/memcmptest.stderr.exp
@@ -2,12 +2,12 @@
 Conditional jump or move depends on uninitialised value(s)
    at 0x........: memcmp (in /...libc...)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/memcmptest)
+   by 0x........: (within /.../tests/memcmptest)
 
 Conditional jump or move depends on uninitialised value(s)
    at 0x........: memcmp (in /...libc...)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/memcmptest)
+   by 0x........: (within /.../tests/memcmptest)
 
 ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 20 bytes in 2 blocks.
diff --git a/memcheck/tests/mismatches.stderr.exp b/memcheck/tests/mismatches.stderr.exp
index caf65dc..765d8e9 100644
--- a/memcheck/tests/mismatches.stderr.exp
+++ b/memcheck/tests/mismatches.stderr.exp
@@ -3,67 +3,67 @@
    at 0x........: __builtin_delete (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:6)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
    Address 0x........ is 0 bytes inside a block of size 10 alloc'd
    at 0x........: malloc (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:5)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
 
 Mismatched free() / delete / delete []
    at 0x........: __builtin_vec_delete (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:8)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
    Address 0x........ is 0 bytes inside a block of size 10 alloc'd
    at 0x........: malloc (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:7)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
 
 Mismatched free() / delete / delete []
    at 0x........: __builtin_delete (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:13)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
    Address 0x........ is 0 bytes inside a block of size 40 alloc'd
    at 0x........: __builtin_vec_new (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:12)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
 
 Mismatched free() / delete / delete []
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:15)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
    Address 0x........ is 0 bytes inside a block of size 40 alloc'd
    at 0x........: __builtin_vec_new (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:14)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
 
 Mismatched free() / delete / delete []
    at 0x........: __builtin_vec_delete (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:20)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
    Address 0x........ is 0 bytes inside a block of size 4 alloc'd
    at 0x........: __builtin_new (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:19)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
 
 Mismatched free() / delete / delete []
    at 0x........: free (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:22)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
    Address 0x........ is 0 bytes inside a block of size 4 alloc'd
    at 0x........: __builtin_new (vg_clientfuncs.c:...)
    by 0x........: main (mismatches.cpp:21)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: __builtin_new (in /.../tests/memcheck/mismatches)
+   by 0x........: __builtin_new (in /.../tests/mismatches)
 
 ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
diff --git a/memcheck/tests/new_override.stderr.exp b/memcheck/tests/new_override.stderr.exp
index 8ba31b6..2196abe 100644
--- a/memcheck/tests/new_override.stderr.exp
+++ b/memcheck/tests/new_override.stderr.exp
@@ -2,7 +2,7 @@
 Conditional jump or move depends on uninitialised value(s)
    at 0x........: main (new_override.cpp:25)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/new_override)
+   by 0x........: (within /.../tests/new_override)
 
 ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 32 bytes in 1 blocks.
diff --git a/memcheck/tests/pushfpopf.stderr.exp b/memcheck/tests/pushfpopf.stderr.exp
index 8e10fb2..9a02a80 100644
--- a/memcheck/tests/pushfpopf.stderr.exp
+++ b/memcheck/tests/pushfpopf.stderr.exp
@@ -1,9 +1,9 @@
 
 Conditional jump or move depends on uninitialised value(s)
-   at 0x........: fooble (in /.../tests/memcheck/pushfpopf)
+   at 0x........: fooble (in /.../tests/pushfpopf)
    by 0x........: main (pushfpopf_c.c:12)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: (within /.../tests/memcheck/pushfpopf)
+   by 0x........: (within /.../tests/pushfpopf)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
diff --git a/memcheck/tests/sigaltstack.stderr.exp b/memcheck/tests/sigaltstack.stderr.exp
index ceeb462..6b194c7 100644
--- a/memcheck/tests/sigaltstack.stderr.exp
+++ b/memcheck/tests/sigaltstack.stderr.exp
@@ -5,7 +5,7 @@
    at 0x........: __libc_sigaction (...libc...)
    by 0x........: main (sigaltstack.c:27)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: sigaltstack@@GLIBC_2.0 (in /.../tests/memcheck/sigaltstack)
+   by 0x........: sigaltstack@@GLIBC_2.0 (in /.../tests/sigaltstack)
    Address 0x........ is on thread 1's stack
 res = 0
 raising the signal
diff --git a/memcheck/tests/signal2.stderr.exp b/memcheck/tests/signal2.stderr.exp
index 3ab7302..6805e9e 100644
--- a/memcheck/tests/signal2.stderr.exp
+++ b/memcheck/tests/signal2.stderr.exp
@@ -2,7 +2,7 @@
 Invalid write of size 4
    at 0x........: main (signal2.c:17)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: exit@@GLIBC_2.0 (in /.../tests/memcheck/signal2)
+   by 0x........: exit@@GLIBC_2.0 (in /.../tests/signal2)
    Address 0x........ is not stack'd, malloc'd or free'd
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
diff --git a/memcheck/tests/signal2.stderr.exp.hd b/memcheck/tests/signal2.stderr.exp.hd
index 2cd1fc8..d10cf18 100644
--- a/memcheck/tests/signal2.stderr.exp.hd
+++ b/memcheck/tests/signal2.stderr.exp.hd
@@ -2,7 +2,7 @@
 Invalid write of size 4
    at 0x........: main (signal2.c:16)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: exit@@GLIBC_2.0 (in /.../tests/memcheck/signal2)
+   by 0x........: exit@@GLIBC_2.0 (in /.../tests/signal2)
    Address 0x........ is not stack'd, malloc'd or free'd
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
diff --git a/memcheck/tests/weirdioctl.stderr.exp b/memcheck/tests/weirdioctl.stderr.exp
index 7d5c9aa..5d64354 100644
--- a/memcheck/tests/weirdioctl.stderr.exp
+++ b/memcheck/tests/weirdioctl.stderr.exp
@@ -2,7 +2,7 @@
 Syscall param ioctl(TCSET{A,AW,AF}) contains uninitialised or unaddressable byte(s)
    at 0x........: __ioctl (in /...libc...)
    by 0x........: __libc_start_main (...libc...)
-   by 0x........: ioctl@@GLIBC_2.0 (in /.../tests/memcheck/weirdioctl)
+   by 0x........: ioctl@@GLIBC_2.0 (in /.../tests/weirdioctl)
    Address 0x........ is on thread 1's stack
 
 ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
diff --git a/none/Makefile.am b/none/Makefile.am
index 96911ed..4c4db7f 100644
--- a/none/Makefile.am
+++ b/none/Makefile.am
@@ -1,176 +1,18 @@
 
-
-SUBDIRS = demangle . docs tests
+SUBDIRS = . tests
 
 CFLAGS = $(WERROR) -DVG_LIBDIR="\"$(libdir)"\" \
 		-Winline -Wall -Wshadow -O -fomit-frame-pointer @PREFERRED_STACK_BOUNDARY@ -g
 
 valdir = $(libdir)/valgrind
 
-#LDFLAGS = -Wl,-z -Wl,initfirst
+INCLUDES = -I$(srcdir)/demangle -I$(top_srcdir)/include
 
-INCLUDES = -I$(srcdir)/demangle
+val_PROGRAMS = vgskin_none.so
 
-bin_SCRIPTS = valgrind vg_annotate
-
-SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
-
-val_DATA = $(SUPP_FILES) default.supp
-
-BUILT_SOURCES = default.supp
-
-default.supp: $(SUPP_FILES)
-
-bzdist: dist
-	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
-
-EXTRA_DIST = $(val_DATA) \
-	PATCHES_APPLIED ACKNOWLEDGEMENTS \
-	README_KDE3_FOLKS README_PACKAGERS \
-	README_MISSING_SYSCALL_OR_IOCTL TODO dosyms vg_libpthread.vs \
-	valgrind.spec valgrind.spec.in \
-	vg_profile.c \
-	vg_cachesim_I1.c vg_cachesim_D1.c vg_cachesim_L2.c vg_cachesim_gen.c
-
-val_PROGRAMS = \
-	valgrind.so \
-	valgrinq.so \
-	libpthread.so \
-	vgskin_memcheck.so \
-	vgskin_cachesim.so \
-	vgskin_eraser.so \
-	vgskin_addrcheck.so \
-	vgskin_none.so \
-	vgskin_lackey.so \
-	vgskin_corecheck.so
-
-libpthread_so_SOURCES = \
-	vg_libpthread.c \
-	vg_libpthread_unimp.c
-libpthread_so_DEPENDENCIES = $(srcdir)/vg_libpthread.vs
-libpthread_so_LDFLAGS	   = -Werror -fno-omit-frame-pointer -UVG_LIBDIR -shared -fpic -Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-valgrinq_so_SOURCES = vg_valgrinq_dummy.c
-valgrinq_so_LDFLAGS = -shared
-
-valgrind_so_SOURCES = \
-	vg_clientfuncs.c \
-	vg_scheduler.c \
-	vg_clientmalloc.c \
-	vg_default.c \
-	vg_demangle.c \
-	vg_dispatch.S \
-	vg_errcontext.c \
-	vg_execontext.c \
-	vg_from_ucode.c \
-	vg_helpers.S \
-	vg_instrument.c \
-	vg_main.c \
-	vg_malloc2.c \
-	vg_memory.c \
-	vg_messages.c \
-	vg_mylibc.c \
-	vg_procselfmaps.c \
-	vg_dummy_profile.c \
-	vg_signals.c \
-	vg_startup.S \
-	vg_symtab2.c \
-	vg_syscalls.c \
-	vg_syscall.S \
-	vg_to_ucode.c \
-	vg_translate.c \
-	vg_transtab.c
-valgrind_so_LDFLAGS = -Wl,-z -Wl,initfirst -shared
-valgrind_so_LDADD = \
-	demangle/cp-demangle.o \
-	demangle/cplus-dem.o \
-	demangle/dyn-string.o \
-	demangle/safe-ctype.o
-
-vgskin_memcheck_so_SOURCES = \
-	vg_memcheck.c \
-	vg_memcheck_clientreqs.c \
-	vg_memcheck_errcontext.c \
-	vg_memcheck_from_ucode.c \
-	vg_memcheck_translate.c \
-	vg_memcheck_helpers.S
-vgskin_memcheck_so_LDFLAGS = -shared
-
-vgskin_cachesim_so_SOURCES = vg_cachesim.c
-vgskin_cachesim_so_LDFLAGS = -shared
-
-vgskin_eraser_so_SOURCES = vg_eraser.c
-vgskin_eraser_so_LDFLAGS = -shared
-
-vgskin_addrcheck_so_SOURCES = vg_addrcheck.c
-vgskin_addrcheck_so_LDFLAGS = -shared
-
-vgskin_none_so_SOURCES 	 = vg_none.c
+vgskin_none_so_SOURCES 	 = nl_main.c
 vgskin_none_so_LDFLAGS   = -shared
 
-vgskin_lackey_so_SOURCES = vg_lackey.c
-vgskin_lackey_so_LDFLAGS = -shared
-
-vgskin_corecheck_so_SOURCES = vg_corecheck.c
-vgskin_corecheck_so_LDFLAGS = -shared
-
-include_HEADERS = valgrind.h
-
-noinst_HEADERS = \
-        vg_kerneliface.h        \
-        vg_include.h            \
-        vg_skin.h               \
-        vg_constants.h          \
-        vg_constants_skin.h     \
-        vg_unsafe.h		\
-	vg_memcheck_include.h	\
-	vg_memcheck.h
-
-MANUAL_DEPS = $(noinst_HEADERS) $(include_HEADERS) 
-
-vg_memory.o: vg_memory.c $(MANUAL_DEPS)
-	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
-
-vg_clientfuncs.o: vg_clientfuncs.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-vg_libpthread.o: vg_libpthread.c $(MANUAL_DEPS)
-	$(COMPILE) -fno-omit-frame-pointer -c $<
-
-##valgrind.so$(EXEEXT): $(valgrind_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o valgrind.so \
-##		$(valgrind_so_OBJECTS) $(valgrind_so_LDADD)
-
-##valgrinq.so$(EXEEXT): $(valgrinq_so_OBJECTS)
-##	$(CC) $(CFLAGS) -shared -o valgrinq.so $(valgrinq_so_OBJECTS)
-
-##libpthread.so$(EXEEXT): $(libpthread_so_OBJECTS) $(srcdir)/vg_libpthread.vs
-##	$(CC) -Wall -Werror -g -O -shared -fpic -o libpthread.so \
-##		$(libpthread_so_OBJECTS) \
-##		-Wl,-version-script $(srcdir)/vg_libpthread.vs
-
-##vgskin_memcheck.so$(EXEEXT): $(vgskin_memcheck_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_memcheck.so \
-##		$(vgskin_memcheck_so_OBJECTS)
-
-##vgskin_cachesim.so$(EXEEXT): $(vgskin_cachesim_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_cachesim.so \
-##		$(vgskin_cachesim_so_OBJECTS)
-
-##vgskin_eraser.so$(EXEEXT): $(vgskin_eraser_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_eraser.so \
-##		$(vgskin_eraser_so_OBJECTS)
-
 ##vgskin_none.so$(EXEEXT): $(vgskin_none_so_OBJECTS)
 ##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_none.so \
 ##		$(vgskin_none_so_OBJECTS)
-
-##vgskin_lackey.so$(EXEEXT): $(vgskin_lackey_so_OBJECTS)
-##	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o vgskin_lackey.so \
-##		$(vgskin_lackey_so_OBJECTS)
-
-install-exec-hook:
-	$(mkinstalldirs) $(DESTDIR)$(valdir)
-	rm -f $(DESTDIR)$(valdir)/libpthread.so.0
-	$(LN_S) libpthread.so $(DESTDIR)$(valdir)/libpthread.so.0
-
diff --git a/none/nl_main.c b/none/nl_main.c
index 398b88e..f369631 100644
--- a/none/nl_main.c
+++ b/none/nl_main.c
@@ -1,6 +1,6 @@
 
 /*--------------------------------------------------------------------*/
-/*--- The null skin.                                     vg_none.c ---*/
+/*--- The null skin.                                     nl_main.c ---*/
 /*--------------------------------------------------------------------*/
 
 /*
@@ -53,5 +53,5 @@
 }
 
 /*--------------------------------------------------------------------*/
-/*--- end                                                vg_none.c ---*/
+/*--- end                                                nl_main.c ---*/
 /*--------------------------------------------------------------------*/
diff --git a/none/tests/filter_stderr b/none/tests/filter_stderr
index 07d877d..c502e9e 100755
--- a/none/tests/filter_stderr
+++ b/none/tests/filter_stderr
@@ -1,3 +1,3 @@
 #! /bin/sh
 
-../filter_stderr_basic
+../../tests/filter_stderr_basic
diff --git a/tests/vg_regtest b/tests/vg_regtest
index d76a1b6..3a0ef86 100755
--- a/tests/vg_regtest
+++ b/tests/vg_regtest
@@ -37,7 +37,7 @@
 # - Add directory to valgrind/configure.in
 # - Write a Makefile.am for it
 # - Write a filter_stderr for it;  it should always call
-#   ../filter_stderr_basic as its first step
+#   ../../tests/filter_stderr_basic as its first step
 # - Add test programs, .vgtest, .stderr.exp{,.hd}, .stdout.exp files
 #
 # Note that if you add new basis filters in tests/, if they call other basic
@@ -64,8 +64,8 @@
 
 my $exp = "";           # --eraser is default
 
-# Assumes we're in tests/
-my $valgrind = "../bin/valgrind";
+# Assumes we're in valgrind/
+my $valgrind = "bin/valgrind";
 
 chomp(my $tests_dir = `pwd`);
 
@@ -187,6 +187,14 @@
     (system($_[0]) != 2) or exit 1;      # 2 is SIGINT
 }
 
+# from a directory name like "/foo/cachesim/tests/" determine the skin name
+sub determine_skin()
+{
+    my $dir = `pwd`;
+    $dir =~ /.*\/([^\/]+)\/tests.*/;   # foo/skin_name/tests/foo
+    return $1;
+}
+
 sub do_one_test($$) 
 {
     my ($dir, $vgtest) = @_;
@@ -203,7 +211,8 @@
     if ($exp eq ".hd") {
         mysystem("$valgrind $vgopts $prog $args > $name.stdout.out 2> $name.stderr.out");
     } else {
-        mysystem("$valgrind --skin=$dir $vgopts $prog $args > $name.stdout.out 2> $name.stderr.out");
+        my $skin=determine_skin();
+        mysystem("$valgrind --skin=$skin $vgopts $prog $args > $name.stdout.out 2> $name.stderr.out");
     }
 
     if (defined $stdout_filter) {
@@ -243,23 +252,33 @@
 }
 
 #----------------------------------------------------------------------------
-# Test one directory
+# Test one directory (and any subdirs)
 #----------------------------------------------------------------------------
+sub test_one_dir($);    # forward declaration
+
 sub test_one_dir($) 
 {
     my ($dir) = @_;
     $dir =~ s/\/$//;    # trim a trailing '/'
 
+    if ($dir =~ /^(CVS|docs)$/) { return; }    # ignore CVS/ and docs/ dirs
+
     print "-- Running tests in $dir ----------------------------------\n";
     chdir($dir) or die "Could not change into $dir\n";
 
-    my @vgtests = glob "*\.vgtest";
-    
-    foreach my $vgtest (@vgtests) {
-        do_one_test($dir, $vgtest);
+#    my @vgtests = glob "*\.vgtest";
+    my @fs = glob "*";
+
+    foreach my $f (@fs) {
+        if (-d $f) {
+            test_one_dir($f);
+        } elsif ($f =~ /\.vgtest$/) {
+            do_one_test($dir, $f);
+        }
     }
+    
+    print "-- Finished tests in $dir ----------------------------------\n";
     chdir("..");
-    print "\n";
 }
 
 #----------------------------------------------------------------------------
@@ -267,7 +286,7 @@
 #----------------------------------------------------------------------------
 sub summarise_results 
 {
-    print "-- Failed tests -------------------------------\n";
+    print "\n== Failed tests ===============================\n";
     if (0 == @failures) {
         print "   (none)\n";
     } else {