Back out r12466, which stopped non-MAP_FIXED mmaps by the client on
Darwin from returning address zero (however insane that is). r12466
appears to cause other applications to break (TextEdit, for one).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12813 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_syswrap/syswrap-darwin.c b/coregrind/m_syswrap/syswrap-darwin.c
index 8d76177..dbafe47 100644
--- a/coregrind/m_syswrap/syswrap-darwin.c
+++ b/coregrind/m_syswrap/syswrap-darwin.c
@@ -3547,43 +3547,11 @@
POST(mmap)
{
- vg_assert(SUCCESS);
- /* JRS 2012 Mar 26: RES != -1 is surely not the right way to check
- for success. In any case I think syswrap-main.c won't let us
- get here if the syscall failed, so the check is irrelevant. See
- VG_(post_syscall). */
- if (RES == -1)
- return;
- vg_assert(VG_IS_PAGE_ALIGNED(RES));
-
- /* begin KLUDGE */
- Bool did_kludge = False;
- if (ARG1 == 0 && !(ARG4 & MAP_FIXED) && RES == 0) {
- /* An mmap-anonymous succeeded at address zero. This is pretty
- stupid (legit, but dangerous); so repeat the mmap call so as
- to get a non-zero address. Then unmap the area that the
- original mmap created, and tidy up. Failure to do this is
- a causative factor in
- https://bugzilla.mozilla.org/show_bug.cgi?id=738034
- */
- SysRes more = VG_(am_do_mmap_NO_NOTIFY)(ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
- if (!sr_isError(more)) {
- Bool need_discard = False;
- VG_(am_munmap_client)(&need_discard, 0, ARG2);
- vg_assert(!need_discard);
- SET_STATUS_from_SysRes(more);
- did_kludge = True;
- }
- }
- /* end KLUDGE */
-
- ML_(notify_core_and_tool_of_mmap)(RES, ARG2, ARG3, ARG4, ARG5, ARG6);
- // Try to load symbols from the region
- VG_(di_notify_mmap)( (Addr)RES, False/*allow_SkFileV*/,
- -1/*don't use_fd*/ );
- if (did_kludge) {
- /* Be paranoid if The Kludge happens. */
- VG_(am_do_sync_check)("(MMAP_ANON_ZERO_ZERO_KLUDGE)",__FILE__,__LINE__);
+ if (RES != -1) {
+ ML_(notify_core_and_tool_of_mmap)(RES, ARG2, ARG3, ARG4, ARG5, ARG6);
+ // Try to load symbols from the region
+ VG_(di_notify_mmap)( (Addr)RES, False/*allow_SkFileV*/,
+ -1/*don't use_fd*/ );
}
}