]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Use MAP_NORESERVE for potentially large mappings.
authorJeremy Fitzhardinge <jeremy@valgrind.org>
Wed, 8 Sep 2004 20:03:51 +0000 (20:03 +0000)
committerJeremy Fitzhardinge <jeremy@valgrind.org>
Wed, 8 Sep 2004 20:03:51 +0000 (20:03 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2674

coregrind/ume.c
coregrind/vg_main.c

index 92bad15c4f1edf1671ad0a9b14c644febb92ac11..7f202a3b53a30f9ed9b0ed69b64a5e61e8612513 100644 (file)
@@ -128,7 +128,7 @@ static int fillgap(char *segstart, char *segend, const char *perm, off_t off,
 
    if (segstart > extra->fillgap_start) {
       void* res = mmap(extra->fillgap_start, segstart - extra->fillgap_start,
-                       PROT_NONE, MAP_FIXED|MAP_PRIVATE, 
+                       PROT_NONE, MAP_FIXED|MAP_PRIVATE|MAP_NORESERVE
                        extra->fillgap_padfile, 0);
       check_mmap(res, extra->fillgap_start, segstart - extra->fillgap_start);
    }
@@ -169,7 +169,7 @@ void as_pad(void *start, void *end, int padfile)
    if (extra.fillgap_start < extra.fillgap_end) {
       void* res = mmap(extra.fillgap_start, 
                        extra.fillgap_end - extra.fillgap_start,
-                       PROT_NONE, MAP_FIXED|MAP_PRIVATE, padfile, 0);
+                       PROT_NONE, MAP_FIXED|MAP_PRIVATE|MAP_NORESERVE, padfile, 0);
       check_mmap(res, extra.fillgap_start, 
                  extra.fillgap_end - extra.fillgap_start);
    }
index 8ef52cce478e58417d079936d755d138dffe5c91..dcafb15d7a70e748cf317432a516a9e27c22893c 100644 (file)
@@ -441,7 +441,7 @@ static void layout_remaining_space(Addr argc_addr, float ratio)
 
    // Ban redzone
    vres = mmap((void *)VG_(client_end), REDZONE_SIZE, PROT_NONE,
-               MAP_FIXED|MAP_ANON|MAP_PRIVATE, -1, 0);
+               MAP_FIXED|MAP_ANON|MAP_PRIVATE|MAP_NORESERVE, -1, 0);
    vg_assert((void*)-1 != vres);
 
    // Make client hole
@@ -452,7 +452,7 @@ static void layout_remaining_space(Addr argc_addr, float ratio)
    // Initially all inaccessible, incrementally initialized as it is used
    if (shadow_size != 0) {
       vres = mmap((char *)VG_(shadow_base), shadow_size, PROT_NONE,
-                  MAP_PRIVATE|MAP_ANON|MAP_FIXED, -1, 0);
+                  MAP_PRIVATE|MAP_ANON|MAP_FIXED|MAP_NORESERVE, -1, 0);
       if ((void*)-1 == vres) {
          fprintf(stderr, 
           "valgrind: Couldn't allocate address space for shadow memory\n"