Index: /trunk/src/VBox/Runtime/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Runtime/Makefile.kmk	(revision 33278)
+++ /trunk/src/VBox/Runtime/Makefile.kmk	(revision 33279)
@@ -643,5 +643,4 @@
 	generic/RTProcIsRunningByName-generic.cpp \
 	generic/RTThreadGetNativeState-generic.cpp \
-	r3/darwin/alloc-darwin.cpp \
 	r3/darwin/filelock-darwin.cpp \
 	r3/darwin/mp-darwin.cpp \
@@ -652,4 +651,5 @@
 	r3/darwin/time-darwin.cpp \
 	r3/posix/RTFileQueryFsSizes-posix.cpp \
+	r3/posix/RTMemProtect-posix.cpp \
 	r3/posix/RTSystemQueryOSInfo-posix.cpp \
 	r3/posix/RTTimeSet-posix.cpp \
@@ -659,4 +659,5 @@
 	r3/posix/fs-posix.cpp \
 	r3/posix/ldrNative-posix.cpp \
+	r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
 	r3/posix/path-posix.cpp \
 	r3/posix/pipe-posix.cpp \
@@ -700,7 +701,7 @@
 	generic/RTThreadGetNativeState-generic.cpp \
 	r3/freebsd/mp-freebsd.cpp \
-	r3/freebsd/alloc-freebsd.cpp \
 	r3/freebsd/rtProcInitExePath-freebsd.cpp \
 	r3/posix/RTFileQueryFsSizes-posix.cpp \
+	r3/posix/RTMemProtect-posix.cpp \
 	r3/posix/RTSystemQueryOSInfo-posix.cpp \
 	r3/posix/dir-posix.cpp \
@@ -710,4 +711,5 @@
 	r3/posix/fs-posix.cpp \
 	r3/posix/ldrNative-posix.cpp \
+	r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
 	r3/posix/path-posix.cpp \
 	r3/posix/pathhost-posix.cpp \
@@ -747,4 +749,5 @@
 	generic/RTThreadGetNativeState-generic.cpp \
 	r3/posix/RTFileQueryFsSizes-posix.cpp \
+	r3/posix/RTMemProtect-posix.cpp \
 	r3/posix/RTSystemQueryOSInfo-posix.cpp \
 	r3/posix/dir-posix.cpp \
@@ -754,4 +757,5 @@
 	r3/posix/fs-posix.cpp \
 	r3/posix/ldrNative-posix.cpp \
+	r3/posix/rtmempage-exec-mmap-heap-posix.cpp \
 	r3/posix/path-posix.cpp \
 	r3/posix/pathhost-posix.cpp \
@@ -772,5 +776,4 @@
 	r3/posix/tls-posix.cpp \
 	r3/posix/utf8-posix.cpp \
-	r3/solaris/alloc-solaris.cpp \
 	r3/solaris/mp-solaris.cpp \
 	r3/solaris/rtProcInitExePath-solaris.cpp
Index: unk/src/VBox/Runtime/r3/darwin/alloc-darwin.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/darwin/alloc-darwin.cpp	(revision 33278)
+++ 	(revision )
@@ -1,154 +1,0 @@
-/* $Id$ */
-/** @file
- * IPRT - Memory Allocation, Darwin.
- */
-
-/*
- * Copyright (C) 2006-2010 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- *
- * The contents of this file may alternatively be used under the terms
- * of the Common Development and Distribution License Version 1.0
- * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
- * VirtualBox OSE distribution, in which case the provisions of the
- * CDDL are applicable instead of those of the GPL.
- *
- * You may elect to license modified versions of this file under the
- * terms and conditions of either the GPL or the CDDL or both.
- */
-
-
-/*******************************************************************************
-*   Header Files                                                               *
-*******************************************************************************/
-#include <iprt/alloc.h>
-#include <iprt/assert.h>
-#include <iprt/param.h>
-#include <iprt/err.h>
-#include <iprt/string.h>
-
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/mman.h>
-
-
-RTDECL(void *) RTMemExecAllocTag(size_t cb, const char *pszTag) RT_NO_THROW
-{
-    /*
-     * Allocate first.
-     */
-    AssertMsg(cb, ("Allocating ZERO bytes is really not a good idea! Good luck with the next assertion!\n"));
-    cb = RT_ALIGN_Z(cb, PAGE_SIZE);
-    void *pv = valloc(cb);
-    AssertMsg(pv, ("posix_memalign(%d) failed!!! errno=%d\n", cb, errno));
-    if (pv)
-    {
-        /*
-         * Add PROT_EXEC flag to the page(s).
-         */
-        memset(pv, 0xcc, cb);
-        int rc = mprotect(pv, cb, PROT_READ | PROT_WRITE | PROT_EXEC);
-        if (rc)
-        {
-            AssertMsgFailed(("mprotect(%p, %#x,,) -> rc=%d, errno=%d\n", pv, cb, rc, errno));
-            free(pv);
-            pv = NULL;
-        }
-    }
-    return pv;
-}
-
-
-RTDECL(void)    RTMemExecFree(void *pv, size_t cb) RT_NO_THROW
-{
-    if (pv)
-        free(pv);
-}
-
-
-RTDECL(void *) RTMemPageAllocTag(size_t cb, const char *pszTag) RT_NO_THROW
-{
-    return valloc(RT_ALIGN_Z(cb, PAGE_SIZE));
-}
-
-
-RTDECL(void *) RTMemPageAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW
-{
-    cb = RT_ALIGN_Z(cb, PAGE_SIZE);
-    void *pv = valloc(cb);
-    if (pv)
-        bzero(pv, RT_ALIGN_Z(cb, PAGE_SIZE));
-    return pv;
-}
-
-
-RTDECL(void) RTMemPageFree(void *pv, size_t cb) RT_NO_THROW
-{
-    if (pv)
-        free(pv);
-}
-
-
-RTDECL(int) RTMemProtect(void *pv, size_t cb, unsigned fProtect) RT_NO_THROW
-{
-    /*
-     * Validate input.
-     */
-    if (cb == 0)
-    {
-        AssertMsgFailed(("!cb\n"));
-        return VERR_INVALID_PARAMETER;
-    }
-    if (fProtect & ~(RTMEM_PROT_NONE | RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC))
-    {
-        AssertMsgFailed(("fProtect=%#x\n", fProtect));
-        return VERR_INVALID_PARAMETER;
-    }
-
-    /*
-     * Convert the flags.
-     */
-    int fProt;
-#if     RTMEM_PROT_NONE  == PROT_NONE \
-    &&  RTMEM_PROT_READ  == PROT_READ \
-    &&  RTMEM_PROT_WRITE == PROT_WRITE \
-    &&  RTMEM_PROT_EXEC  == PROT_EXEC
-    fProt = fProtect;
-#else
-    Assert(!RTMEM_PROT_NONE);
-    if (!fProtect)
-        fProt = PROT_NONE;
-    else
-    {
-        fProt = 0;
-        if (fProtect & RTMEM_PROT_READ)
-            fProt |= PROT_READ;
-        if (fProtect & RTMEM_PROT_WRITE)
-            fProt |= PROT_WRITE;
-        if (fProtect & RTMEM_PROT_EXEC)
-            fProt |= PROT_EXEC;
-    }
-#endif
-
-    /*
-     * Align the request.
-     */
-    cb += (uintptr_t)pv & PAGE_OFFSET_MASK;
-    pv = (void *)((uintptr_t)pv & ~PAGE_OFFSET_MASK);
-
-    /*
-     * Change the page attributes.
-     */
-    int rc = mprotect(pv, cb, fProt);
-    if (!rc)
-        return rc;
-    return RTErrConvertFromErrno(errno);
-}
-
Index: unk/src/VBox/Runtime/r3/freebsd/alloc-freebsd.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/freebsd/alloc-freebsd.cpp	(revision 33278)
+++ 	(revision )
@@ -1,158 +1,0 @@
-/* $Id$ */
-/** @file
- * IPRT - Memory Allocation, FreeBSD.
- */
-
-/*
- * Copyright (C) 2006-2010 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- *
- * The contents of this file may alternatively be used under the terms
- * of the Common Development and Distribution License Version 1.0
- * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
- * VirtualBox OSE distribution, in which case the provisions of the
- * CDDL are applicable instead of those of the GPL.
- *
- * You may elect to license modified versions of this file under the
- * terms and conditions of either the GPL or the CDDL or both.
- */
-
-
-/*******************************************************************************
-*   Header Files                                                               *
-*******************************************************************************/
-#include <iprt/alloc.h>
-#include <iprt/assert.h>
-#include <iprt/param.h>
-#include <iprt/err.h>
-#include <iprt/string.h>
-
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/mman.h>
-
-
-RTDECL(void *) RTMemExecAllocTag(size_t cb, const char *pszTag) RT_NO_THROW
-{
-    /*
-     * Allocate first.
-     */
-    AssertMsg(cb, ("Allocating ZERO bytes is really not a good idea! Good luck with the next assertion!\n"));
-    cb = RT_ALIGN_Z(cb, PAGE_SIZE);
-    void *pv = RTMemPageAlloc(cb);
-    if (pv)
-    {
-        /*
-         * Add PROT_EXEC flag to the page(s).
-         */
-        memset(pv, 0xcc, cb);
-        int rc = mprotect(pv, cb, PROT_READ | PROT_WRITE | PROT_EXEC);
-        if (rc)
-        {
-            AssertMsgFailed(("mprotect(%p, %#x,,) -> rc=%d, errno=%d\n", pv, cb, rc, errno));
-            free(pv);
-            pv = NULL;
-        }
-    }
-    return pv;
-}
-
-
-RTDECL(void)    RTMemExecFree(void *pv, size_t cb) RT_NO_THROW
-{
-    if (pv)
-        free(pv);
-}
-
-
-RTDECL(void *) RTMemPageAllocTag(size_t cb, const char *pszTag) RT_NO_THROW
-{
-    cb = RT_ALIGN_Z(cb, PAGE_SIZE);
-    void *pv = malloc(cb);
-    AssertReleaseMsgReturn(RT_ALIGN_P(pv, PAGE_SIZE) == pv,
-                           ("malloc(%zu) -> %p; expected page aligned!\n", cb, pv),
-                           NULL);
-    return pv;
-}
-
-
-RTDECL(void *) RTMemPageAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW
-{
-    cb = RT_ALIGN_Z(cb, PAGE_SIZE);
-    void *pv = RTMemPageAlloc(cb);
-    if (pv)
-        bzero(pv, RT_ALIGN_Z(cb, PAGE_SIZE));
-    return pv;
-}
-
-
-RTDECL(void) RTMemPageFree(void *pv, size_t cb) RT_NO_THROW
-{
-    if (pv)
-        free(pv);
-}
-
-
-RTDECL(int) RTMemProtect(void *pv, size_t cb, unsigned fProtect) RT_NO_THROW
-{
-    /*
-     * Validate input.
-     */
-    if (cb == 0)
-    {
-        AssertMsgFailed(("!cb\n"));
-        return VERR_INVALID_PARAMETER;
-    }
-    if (fProtect & ~(RTMEM_PROT_NONE | RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC))
-    {
-        AssertMsgFailed(("fProtect=%#x\n", fProtect));
-        return VERR_INVALID_PARAMETER;
-    }
-
-    /*
-     * Convert the flags.
-     */
-    int fProt;
-#if     RTMEM_PROT_NONE  == PROT_NONE \
-    &&  RTMEM_PROT_READ  == PROT_READ \
-    &&  RTMEM_PROT_WRITE == PROT_WRITE \
-    &&  RTMEM_PROT_EXEC  == PROT_EXEC
-    fProt = fProtect;
-#else
-    Assert(!RTMEM_PROT_NONE);
-    if (!fProtect)
-        fProt = PROT_NONE;
-    else
-    {
-        fProt = 0;
-        if (fProtect & RTMEM_PROT_READ)
-            fProt |= PROT_READ;
-        if (fProtect & RTMEM_PROT_WRITE)
-            fProt |= PROT_WRITE;
-        if (fProtect & RTMEM_PROT_EXEC)
-            fProt |= PROT_EXEC;
-    }
-#endif
-
-    /*
-     * Align the request.
-     */
-    cb += (uintptr_t)pv & PAGE_OFFSET_MASK;
-    pv = (void *)((uintptr_t)pv & ~PAGE_OFFSET_MASK);
-
-    /*
-     * Change the page attributes.
-     */
-    int rc = mprotect(pv, cb, fProt);
-    if (!rc)
-        return rc;
-    return RTErrConvertFromErrno(errno);
-}
-
Index: /trunk/src/VBox/Runtime/r3/posix/rtmempage-exec-mmap-heap-posix.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/posix/rtmempage-exec-mmap-heap-posix.cpp	(revision 33278)
+++ /trunk/src/VBox/Runtime/r3/posix/rtmempage-exec-mmap-heap-posix.cpp	(revision 33279)
@@ -45,4 +45,8 @@
 #include <errno.h>
 #include <sys/mman.h>
+#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
+# define MAP_ANONYMOUS MAP_ANON
+#endif
+
 
 
Index: /trunk/src/VBox/Runtime/r3/posix/rtmempage-exec-mmap-posix.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/posix/rtmempage-exec-mmap-posix.cpp	(revision 33278)
+++ /trunk/src/VBox/Runtime/r3/posix/rtmempage-exec-mmap-posix.cpp	(revision 33279)
@@ -41,4 +41,7 @@
 #include <errno.h>
 #include <sys/mman.h>
+#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
+# define MAP_ANONYMOUS MAP_ANON
+#endif
 
 
Index: unk/src/VBox/Runtime/r3/solaris/alloc-solaris.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/solaris/alloc-solaris.cpp	(revision 33278)
+++ 	(revision )
@@ -1,192 +1,0 @@
-/* $Id$ */
-/** @file
- * IPRT - Memory Allocation, Solaris.
- */
-
-/*
- * Copyright (C) 2006-2010 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- *
- * The contents of this file may alternatively be used under the terms
- * of the Common Development and Distribution License Version 1.0
- * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
- * VirtualBox OSE distribution, in which case the provisions of the
- * CDDL are applicable instead of those of the GPL.
- *
- * You may elect to license modified versions of this file under the
- * terms and conditions of either the GPL or the CDDL or both.
- */
-
-
-/*******************************************************************************
-*   Header Files                                                               *
-*******************************************************************************/
-#include <iprt/alloc.h>
-#include <iprt/assert.h>
-#include <iprt/param.h>
-#include <iprt/err.h>
-#include <iprt/string.h>
-
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/mman.h>
-#include <strings.h>
-
-
-/*******************************************************************************
-*   Defined Constants And Macros                                               *
-*******************************************************************************/
-#if 0
-# define RT_USE_MMAP_PAGE
-#endif
-
-
-RTDECL(void *) RTMemExecAllocTag(size_t cb, const char *pszTag) RT_NO_THROW
-{
-    /*
-     * Allocate first.
-     */
-    AssertMsg(cb, ("Allocating ZERO bytes is really not a good idea! Good luck with the next assertion!\n"));
-    cb = RT_ALIGN_Z(cb, PAGE_SIZE);
-    void *pv = valloc(cb);
-    AssertMsg(pv, ("posix_memalign(%d) failed!!! errno=%d\n", cb, errno));
-    if (RT_UNLIKELY((uintptr_t)pv + cb > _2G))
-    {
-        AssertMsgFailed(("%p %#zx\n", pv, cb));
-        free(pv);
-        return NULL;
-    }
-    if (pv)
-    {
-        /*
-         * Add PROT_EXEC flag to the page(s).
-         */
-        memset(pv, 0xcc, cb);
-        int rc = mprotect(pv, cb, PROT_READ | PROT_WRITE | PROT_EXEC);
-        if (rc)
-        {
-            AssertMsgFailed(("mprotect(%p, %#x,,) -> rc=%d, errno=%d\n", pv, cb, rc, errno));
-            free(pv);
-            pv = NULL;
-        }
-    }
-    return pv;
-}
-
-
-RTDECL(void)    RTMemExecFree(void *pv, size_t cb) RT_NO_THROW
-{
-    if (pv)
-        free(pv);
-}
-
-
-RTDECL(void *) RTMemPageAllocTag(size_t cb, const char *pszTag) RT_NO_THROW
-{
-#ifdef RT_USE_MMAP_PAGE
-    size_t  cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE);
-    void   *pv = mmap(NULL, cbAligned, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-    AssertMsgReturn(pv != MAP_FAILED, ("errno=%d cb=%#zx\n", errno, cb), NULL);
-    return pv;
-
-#else
-    return valloc(RT_ALIGN_Z(cb, PAGE_SIZE));
-#endif
-}
-
-
-RTDECL(void *) RTMemPageAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW
-{
-#ifdef RT_USE_MMAP_PAGE
-    size_t  cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE);
-    void   *pv = mmap(NULL, cbAligned, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-    AssertMsgReturn(pv != MAP_FAILED, ("errno=%d cb=%#zx\n", errno, cb), NULL);
-    return pv;
-
-#else
-    cb = RT_ALIGN_Z(cb, PAGE_SIZE);
-    void *pv = valloc(cb);
-    if (pv)
-        bzero(pv, RT_ALIGN_Z(cb, PAGE_SIZE));
-    return pv;
-#endif
-}
-
-
-RTDECL(void) RTMemPageFree(void *pv, size_t cb) RT_NO_THROW
-{
-    if (pv)
-    {
-#ifdef RT_USE_MMAP_PAGE
-        size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE);
-        int rc = munmap(pv, cbAligned);
-        AssertMsg(!rc, ("munmap(%p, %#zx) -> %d errno=%d\n", pv, cbAligned, rc, errno)); NOREF(rc);
-#else
-        free(pv);
-#endif
-    }
-}
-
-
-RTDECL(int) RTMemProtect(void *pv, size_t cb, unsigned fProtect) RT_NO_THROW
-{
-    /*
-     * Validate input.
-     */
-    if (cb == 0)
-    {
-        AssertMsgFailed(("!cb\n"));
-        return VERR_INVALID_PARAMETER;
-    }
-    if (fProtect & ~(RTMEM_PROT_NONE | RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC))
-    {
-        AssertMsgFailed(("fProtect=%#x\n", fProtect));
-        return VERR_INVALID_PARAMETER;
-    }
-
-    /*
-     * Convert the flags.
-     */
-    int fProt;
-#if     RTMEM_PROT_NONE  == PROT_NONE \
-    &&  RTMEM_PROT_READ  == PROT_READ \
-    &&  RTMEM_PROT_WRITE == PROT_WRITE \
-    &&  RTMEM_PROT_EXEC  == PROT_EXEC
-    fProt = fProtect;
-#else
-    Assert(!RTMEM_PROT_NONE);
-    if (!fProtect)
-        fProt = PROT_NONE;
-    else
-    {
-        fProt = 0;
-        if (fProtect & RTMEM_PROT_READ)
-            fProt |= PROT_READ;
-        if (fProtect & RTMEM_PROT_WRITE)
-            fProt |= PROT_WRITE;
-        if (fProtect & RTMEM_PROT_EXEC)
-            fProt |= PROT_EXEC;
-    }
-#endif
-
-    /*
-     * Align the request.
-     */
-    cb += (uintptr_t)pv & PAGE_OFFSET_MASK;
-    pv = (void *)((uintptr_t)pv & ~PAGE_OFFSET_MASK);
-
-    /*
-     * Change the page attributes.
-     */
-    int rc = mprotect(pv, cb, fProt);
-    if (!rc)
-        return rc;
-    return RTErrConvertFromErrno(errno);
-}
