|
From: <sv...@va...> - 2013-10-01 10:35:08
|
Author: dejanj
Date: Tue Oct 1 10:34:54 2013
New Revision: 13593
Log:
mips32: Fix the align problem with mmap.
Valgrind is doing mmap always with MAP_FIXED. On mips32 we need to check arg4.
If the arg4 is MAP_SHARED we need to align the address to SHMLBA.
If the program tries to do mmap with VKI_FIXED Valgrind doesn't need to align
the address to SHMLBA.
Modified:
trunk/coregrind/m_syswrap/syswrap-mips32-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-mips32-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-mips32-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-mips32-linux.c Tue Oct 1 10:34:54 2013
@@ -448,14 +448,15 @@
mreq.rkind = MAny;
}
- if ((VKI_SHMLBA > VKI_PAGE_SIZE) && (VKI_MAP_SHARED & arg4)) {
+ if ((VKI_SHMLBA > VKI_PAGE_SIZE) && (VKI_MAP_SHARED & arg4)
+ && !(VKI_MAP_FIXED & arg4))
mreq.len = arg2 + VKI_SHMLBA - VKI_PAGE_SIZE;
- }
/* Enquire ... */
advised = VG_(am_get_advisory)( &mreq, True/*client*/, &mreq_ok );
- if ((VKI_SHMLBA > VKI_PAGE_SIZE) && (VKI_MAP_SHARED & arg4))
+ if ((VKI_SHMLBA > VKI_PAGE_SIZE) && (VKI_MAP_SHARED & arg4)
+ && !(VKI_MAP_FIXED & arg4))
advised = VG_ROUNDUP(advised, VKI_SHMLBA);
if (!mreq_ok) {
|