Don't mark segments as SF_FIXED when VKI_MAP_FIXED isn't specified.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4039 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_libcmman.c b/coregrind/m_libcmman.c
index cf4fd3a..59a0df1 100644
--- a/coregrind/m_libcmman.c
+++ b/coregrind/m_libcmman.c
@@ -46,14 +46,12 @@
if (!(flags & VKI_MAP_FIXED)) {
start = (void *)VG_(find_map_space)((Addr)start, length, !!(flags & VKI_MAP_CLIENT));
-
- flags |= VKI_MAP_FIXED;
}
if (start == 0)
return (void *)-1;
res = VG_(mmap_native)(start, length, prot,
- flags & ~(VKI_MAP_NOSYMS | VKI_MAP_CLIENT),
+ (flags | VKI_MAP_FIXED) & ~(VKI_MAP_NOSYMS | VKI_MAP_CLIENT),
fd, offset);
// Check it ended up in the right place.