Add support for new mremap syscall.

This can be offered upstream.

--- valgrind-3.22.0/coregrind/m_aspacemgr/aspacemgr-common.c
+++ valgrind-3.22.0/coregrind/m_aspacemgr/aspacemgr-common.c
@@ -223,7 +223,7 @@ SysRes ML_(am_do_extend_mapping_NO_NOTIF
    /* Extend the mapping old_addr .. old_addr+old_len-1 to have length
       new_len, WITHOUT moving it.  If it can't be extended in place,
       fail. */
-#  if defined(VGO_linux)
+#  if defined(VGO_linux) || defined(VGO_solaris)
    return VG_(do_syscall5)(
              __NR_mremap, 
              old_addr, old_len, new_len, 
@@ -244,7 +244,7 @@ SysRes ML_(am_do_relocate_nooverlap_mapp
       location and with the new length.  Only needs to handle the case
       where the two areas do not overlap, neither length is zero, and
       all args are page aligned. */
-#  if defined(VGO_linux)
+#  if defined(VGO_linux) || defined(VGO_solaris)
    return VG_(do_syscall5)(
              __NR_mremap, 
              old_addr, old_len, new_len, 
--- valgrind-3.22.0/include/vki/vki-solaris.h
+++ valgrind-3.22.0/include/vki/vki-solaris.h
@@ -664,6 +664,11 @@ typedef struct vki_kcf_door_arg_s {
 #define vki_meminfo_t meminfo_t
 
 
+#include <sys/mman.h>
+#define VKI_MREMAP_FIXED MREMAP_FIXED
+#define VKI_MREMAP_MAYMOVE MREMAP_MAYMOVE
+
+
 #include <sys/mntio.h>
 #define VKI_MNTIOC_GETEXTMNTENT MNTIOC_GETEXTMNTENT
 #define VKI_MNTIOC_GETMNTANY MNTIOC_GETMNTANY
--- valgrind-3.22.0/include/vki/vki-scnums-solaris.h
+++ valgrind-3.22.0/include/vki/vki-scnums-solaris.h
@@ -178,6 +178,7 @@
 #if defined(SOLARIS_UUIDSYS_SYSCALL)
 #define __NR_uuidsys                    SYS_uuidsys
 #endif /* SOLARIS_UUIDSYS_SYSCALL */
+#define __NR_mremap                     SYS_mremap
 #define __NR_mmapobj                    SYS_mmapobj
 #define __NR_setrlimit                  SYS_setrlimit
 #define __NR_getrlimit                  SYS_getrlimit
--- valgrind-3.21.0/coregrind/m_syswrap/syswrap-solaris.c
+++ valgrind-3.21.0/coregrind/m_syswrap/syswrap-solaris.c
@@ -10951,6 +10951,9 @@ static SyscallTableEntry syscall_table[]
 #if defined(SOLARIS_UUIDSYS_SYSCALL)
    SOLXY(__NR_uuidsys,              sys_uuidsys),               /* 124 */
 #endif /* SOLARIS_UUIDSYS_SYSCALL */
+#if defined(HAVE_MREMAP)
+   GENX_(__NR_mremap,               sys_mremap),                /* 126 */
+#endif /* HAVE_MREMAP */
    SOLX_(__NR_mmapobj,              sys_mmapobj),               /* 127 */
    GENX_(__NR_setrlimit,            sys_setrlimit),             /* 128 */
    GENXY(__NR_getrlimit,            sys_getrlimit),             /* 129 */