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 +#define VKI_MREMAP_FIXED MREMAP_FIXED +#define VKI_MREMAP_MAYMOVE MREMAP_MAYMOVE + + #include #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 */