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.