Simplify calculation of VG_(shadow_end) to avoid an obscure bug on Paul M's PPC
port caused by rounding errors.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2661 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_main.c b/coregrind/vg_main.c
index 8e9dac6..729803b 100644
--- a/coregrind/vg_main.c
+++ b/coregrind/vg_main.c
@@ -453,9 +453,9 @@
VG_(client_mapbase) = VG_(client_base) +
PGROUNDDN((addr_t)(client_size * CLIENT_HEAP_PROPORTION));
- shadow_size = PGROUNDUP(client_size * ratio);
VG_(shadow_base) = VG_(client_end) + REDZONE_SIZE;
- VG_(shadow_end) = VG_(shadow_base) + shadow_size;
+ VG_(shadow_end) = VG_(valgrind_base);
+ shadow_size = VG_(shadow_end) - VG_(shadow_base);
#define SEGSIZE(a,b) ((VG_(b) - VG_(a))/(1024*1024))
@@ -465,14 +465,14 @@
"client_mapbase %8x (%dMB)\n"
"client_end %8x (%dMB)\n"
"shadow_base %8x (%dMB)\n"
- "shadow_end %8x (%dMB)\n"
+ "shadow_end %8x\n"
"valgrind_base %8x (%dMB)\n"
"valgrind_end %8x\n",
VG_(client_base), SEGSIZE(client_base, client_mapbase),
VG_(client_mapbase), SEGSIZE(client_mapbase, client_end),
VG_(client_end), SEGSIZE(client_end, shadow_base),
VG_(shadow_base), SEGSIZE(shadow_base, shadow_end),
- VG_(shadow_end), SEGSIZE(shadow_end, valgrind_base),
+ VG_(shadow_end),
VG_(valgrind_base), SEGSIZE(valgrind_base, valgrind_end),
VG_(valgrind_end)
);
@@ -2716,7 +2716,6 @@
: shadow memory for tools :
| (may be 0 sized) |
shadow_end +-------------------------+
- : gap (may be 0 sized) :
valgrind_base +-------------------------+
| kickstart executable |
| valgrind heap vvvvvvvvv| (barely used)