Merge all remaining changes from branches/PTRCHECK.  These are some
relatively minor extensions to m_debuginfo, a major overhaul of
m_debuginfo/readdwarf3.c to get its space usage under control, and
changes throughout the system to enable heap-use profiling.

The majority of the merged changes were committed into
branches/PTRCHECK as the following revs: 8591 8595 8598 8599 8601 and
8161.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8621 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/include/pub_tool_machine.h b/include/pub_tool_machine.h
index 6775bc1..ae9669c 100644
--- a/include/pub_tool_machine.h
+++ b/include/pub_tool_machine.h
@@ -81,8 +81,12 @@
 extern void VG_(set_SP) ( ThreadId tid, Addr sp );
 extern void VG_(set_IP) ( ThreadId tid, Addr ip );
 
-// For get/set, 'area' is where the asked-for shadow state will be copied
-// into/from.
+// For get/set, 'area' is where the asked-for guest state will be copied
+// into/from.  If shadowNo == 0, the real (non-shadow) guest state is
+// accessed.  If shadowNo == 1, the first shadow area is accessed, and
+// if shadowNo == 2, the second shadow area is accessed.  This gives a
+// completely general way to read/modify a thread's guest register state
+// providing you know the offsets you need.
 void
 VG_(get_shadow_regs_area) ( ThreadId tid, 
                             /*DST*/UChar* dst,
@@ -92,6 +96,14 @@
                             /*DST*/Int shadowNo, OffT offset, SizeT size,
                             /*SRC*/const UChar* src );
 
+// Sets the shadow values for the syscall return value register(s).
+// This is platform specific.
+void VG_(set_syscall_return_shadows) ( ThreadId tid,
+                                       /* shadow vals for the result */
+                                       UWord s1res, UWord s2res,
+                                       /* shadow vals for the error val */
+                                       UWord s1err, UWord s2err );
+
 // Apply a function 'f' to all the general purpose registers in all the
 // current threads.
 // This is very Memcheck-specific -- it's used to find the roots when