Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 35224)
+++ /trunk/Config.kmk	(revision 35225)
@@ -580,7 +580,5 @@
 #VBOX_PATH_APP_PRIVATE       = /usr/lib/virtualbox
 ifdef VBOX_WITH_HARDENING
- if1of ($(KBUILD_TARGET), solaris)
-  VBOX_PATH_APP_PRIVATE      = /opt/VirtualBox/$(if-expr $(KBUILD_TARGET_ARCH) == "amd64",amd64,i386)
- else ifeq ($(KBUILD_TARGET),linux)
+ if1of ($(KBUILD_TARGET), linux solaris)
   VBOX_PATH_APP_PRIVATE      = /opt/VirtualBox
  else ifeq ($(KBUILD_TARGET),darwin)
@@ -593,5 +591,8 @@
 #VBOX_PATH_APP_PRIVATE_ARCH  = /usr/lib/virtualbox
 ifdef VBOX_WITH_HARDENING
- if1of ($(KBUILD_TARGET), darwin solaris)
+ if1of ($(KBUILD_TARGET), solaris)
+  VBOX_PATH_APP_PRIVATE_ARCH_TOP = $(VBOX_PATH_APP_PRIVATE)
+  VBOX_PATH_APP_PRIVATE_ARCH = $(VBOX_PATH_APP_PRIVATE_ARCH_TOP)/$(if-expr $(KBUILD_TARGET_ARCH) == "amd64",amd64,i386)
+ else if1of ($(KBUILD_TARGET), darwin)
   VBOX_PATH_APP_PRIVATE_ARCH = $(VBOX_PATH_APP_PRIVATE)
  endif
@@ -600,5 +601,7 @@
 #VBOX_PATH_SHARED_LIBS       = /usr/lib
 ifdef VBOX_WITH_HARDENING
- if1of ($(KBUILD_TARGET), darwin solaris)
+ if1of ($(KBUILD_TARGET), solaris)
+  VBOX_PATH_SHARED_LIBS      = $(VBOX_PATH_APP_PRIVATE)/$(if-expr $(KBUILD_TARGET_ARCH) == "amd64",amd64,i386)
+ else if1of ($(KBUILD_TARGET), darwin)
   VBOX_PATH_SHARED_LIBS      = $(VBOX_PATH_APP_PRIVATE)
  endif
@@ -616,5 +619,7 @@
 #VBOX_WITH_RUNPATH = /usr/lib/virtualbox
 ifdef VBOX_WITH_HARDENING
- if1of ($(KBUILD_TARGET), freebsd linux solaris)
+ if1of ($(KBUILD_TARGET), solaris)
+  VBOX_WITH_RUNPATH = $(VBOX_PATH_APP_PRIVATE)/$(if-expr $(KBUILD_TARGET_ARCH) == "amd64",amd64,i386)
+ else if1of ($(KBUILD_TARGET), freebsd linux)
   VBOX_WITH_RUNPATH = $(VBOX_PATH_APP_PRIVATE)
  endif
@@ -914,4 +919,5 @@
   VBOX_PATH_APP_PRIVATE=
   VBOX_PATH_APP_PRIVATE_ARCH=
+  VBOX_PATH_APP_PRIVATE_ARCH_TOP=
   VBOX_PATH_SHARED_LIBS=
   VBOX_PATH_APP_DOCS=
@@ -1317,4 +1323,7 @@
 ifdef VBOX_PATH_APP_PRIVATE_ARCH
  DEFS += RTPATH_APP_PRIVATE_ARCH=\"$(VBOX_PATH_APP_PRIVATE_ARCH)\"
+endif
+ifdef VBOX_PATH_APP_PRIVATE_ARCH_TOP
+ DEFS += RTPATH_APP_PRIVATE_ARCH_TOP=\"$(VBOX_PATH_APP_PRIVATE_ARCH_TOP)\"
 endif
 ifdef VBOX_PATH_SHARED_LIBS
Index: /trunk/src/VBox/Runtime/r3/path.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/path.cpp	(revision 35224)
+++ /trunk/src/VBox/Runtime/r3/path.cpp	(revision 35225)
@@ -47,5 +47,5 @@
  * @param   cchPath             See RTPathExecDir.
  */
-static int rtPathSolarisArchHack(char *pszPath, size_t cchPath)
+DECLINLINE(int) rtPathSolarisArchHack(char *pszPath, size_t cchPath)
 {
     int rc = RTPathExecDir(pszPath, cchPath);
@@ -106,10 +106,13 @@
 RTDECL(int) RTPathAppPrivateArchTop(char *pszPath, size_t cchPath)
 {
-#if !defined(RT_OS_WINDOWS) && defined(RTPATH_APP_PRIVATE_ARCH)
+#if !defined(RT_OS_WINDOWS) && defined(RTPATH_APP_PRIVATE_ARCH_TOP)
+    return RTStrCopy(pszPath, cchPath, RTPATH_APP_PRIVATE_ARCH_TOP);
+#elif !defined(RT_OS_WINDOWS) && defined(RTPATH_APP_PRIVATE_ARCH)
     return RTStrCopy(pszPath, cchPath, RTPATH_APP_PRIVATE_ARCH);
 #elif defined(RT_OS_SOLARIS)
     return rtPathSolarisArchHack(pszPath, cchPath);
 #else
-    return RTPathExecDir(pszPath, cchPath);
+    int rc = RTPathExecDir(pszPath, cchPath);
+    return rc;
 #endif
 }
