Index: /trunk/src/VBox/Runtime/common/log/log.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/log/log.cpp	(revision 41304)
+++ /trunk/src/VBox/Runtime/common/log/log.cpp	(revision 41305)
@@ -2113,5 +2113,10 @@
     {
 #ifdef IN_RC
-        pLogger = &g_Logger;
+        /*
+         * XXX gcc assumes that the address of a variable is always > 0 but this
+         * is not always true for g_Logger (special case in our RC loader)
+         */
+        PRTLOGGER pLogger1 = &g_Logger;
+        pLogger = ASMAtomicReadPtrT(&pLogger, PRTLOGGER);
 #else
         pLogger = g_pLogger;
@@ -2159,5 +2164,10 @@
 {
 #ifdef IN_RC
-    return &g_Logger;
+    /*
+     * XXX gcc assumes that the address of a variable is always > 0 but this
+     * is not always true for g_Logger (special case in our RC loader)
+     */
+    PRTLOGGER pLogger = &g_Logger;
+    return ASMAtomicReadPtrT(&pLogger, PRTLOGGER);
 
 #else /* !IN_RC */
@@ -2196,5 +2206,10 @@
 {
 #ifdef IN_RC
-    return &g_Logger;
+    /*
+     * XXX gcc assumes that the address of a variable is always > 0 but this
+     * is not always true for g_Logger (special case in our RC loader)
+     */
+    PRTLOGGER pLogger = &g_Logger;
+    return ASMAtomicReadPtrT(&pLogger, PRTLOGGER);
 #else
 # ifdef IN_RING0
