#if defined(VGO_darwin)
// GrP fixme kernel info doesn't have dev/inode
+ // FIXME PJF but now ino is being used for vm tag
cmp_devino = False;
// GrP fixme V and kernel don't agree on offsets
Addr sEnd = seg->end;
#if defined(VGO_darwin)
- // FIXME: the cast is unfortunate but I don't want to change every callsite to call 2 functions
- fill_segment((NSegment*) (Addr) seg);
+ // FIXME: adding for all segments causes some failures and alignment crashes in leak check
+ // need to debug more
+ //fill_segment((NSegment*) (Addr) seg);
#endif
aspacem_assert(sStart <= sEnd);
seg.fnIdx = ML_(am_allocate_segname)( filename );
if (0) show_nsegment( 2,0, &seg );
+#if defined(VGO_darwin)
+ // FIXME this is the one that causes problems with leak checks
+ //fill_segment( &seg );
+#endif
add_segment( &seg );
}
if (aspacem_cStart > Addr_MIN) {
init_resvn(&seg, Addr_MIN, aspacem_cStart-1);
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment(&seg);
}
if (aspacem_maxAddr < Addr_MAX) {
init_resvn(&seg, aspacem_maxAddr+1, Addr_MAX);
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment(&seg);
}
valgrind allocations at the boundary, this is kind of necessary
in order to get it to start allocating in the right place. */
init_resvn(&seg, aspacem_vStart, aspacem_vStart + VKI_PAGE_SIZE - 1);
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment(&seg);
VG_(am_show_nsegments)(2, "Initial layout");
seg.isFF = (flags & VKI_MAP_FIXED);
#endif
}
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg );
AM_SANITY_CHECK;
return needDiscard;
seg.hasR = toBool(prot & VKI_PROT_READ);
seg.hasW = toBool(prot & VKI_PROT_WRITE);
seg.hasX = toBool(prot & VKI_PROT_EXEC);
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg );
AM_SANITY_CHECK;
return needDiscard;
else
seg.kind = SkFree;
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg );
/* Unmapping could create two adjacent free segments, so a preen is
}
#if defined(VGO_freebsd)
seg.isFF = (flags & VKI_MAP_FIXED);
+#endif
+#if defined(VGO_darwin)
+ fill_segment( &seg );
#endif
add_segment( &seg );
seg.hasR = toBool(prot & VKI_PROT_READ);
seg.hasW = toBool(prot & VKI_PROT_WRITE);
seg.hasX = toBool(prot & VKI_PROT_EXEC);
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg );
AM_SANITY_CHECK;
seg.hasW = toBool(prot & VKI_PROT_WRITE);
seg.hasX = toBool(prot & VKI_PROT_EXEC);
seg.isCH = isCH;
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg );
AM_SANITY_CHECK;
seg.hasR = True;
seg.hasW = True;
seg.hasX = True;
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg );
AM_SANITY_CHECK;
}
#if defined(VGO_freebsd)
seg.isFF = (flags & VKI_MAP_FIXED);
+#endif
+#if defined(VGO_darwin)
+ fill_segment( &seg );
#endif
add_segment( &seg );
reservation. */
seg.end = end1;
seg.smode = smode;
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg );
AM_SANITY_CHECK;
NSegment seg_copy = *seg;
seg_copy.end += delta;
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg_copy );
if (0)
}
seg.start = new_addr;
seg.end = new_addr + new_len - 1;
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg );
/* Create a free hole in the old location. */
else
seg.kind = SkFree;
+#if defined(VGO_darwin)
+ fill_segment( &seg );
+#endif
add_segment( &seg );
AM_SANITY_CHECK;