Further cleanups to low-level memory management.  It's still a
conceptual mess and needs a redesign, but this is a start.  Most stuff
now works again.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3247 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/core.h b/coregrind/core.h
index a389f90..6f500f1 100644
--- a/coregrind/core.h
+++ b/coregrind/core.h
@@ -1031,6 +1031,7 @@
                         UInt sf_flags, UInt fd, OffT offset );
 extern Int  VG_(munmap)( void* start, SizeT length );
 extern Int  VG_(mprotect)( void *start, SizeT length, UInt prot );
+extern Int VG_(mprotect_native)( void *start, SizeT length, UInt prot );
 
 
 /* Move an fd into the Valgrind-safe range */
@@ -1279,6 +1280,7 @@
    // These are valid if (flags & SF_FILE)
    OffT        offset;        // file offset
    const Char* filename;      // filename (NULL if unknown)
+   Int         fnIdx;         // filename table index (-1 if unknown)
    UInt        dev;           // device
    UInt        ino;           // inode
 
@@ -1358,7 +1360,8 @@
    Exports of vg_syscalls.c
    ------------------------------------------------------------------ */
 
-extern Char *VG_(resolve_filename)(Int fd);
+extern HChar* VG_(resolve_filename_nodup)(Int fd);
+extern HChar* VG_(resolve_filename)(Int fd);
 
 extern Bool VG_(pre_syscall) ( ThreadId tid );
 extern void VG_(post_syscall)( ThreadId tid, Bool restart );