mozilla-gcc47.patch
author Adrian Schröter <adrian@suse.de>
Fri, 25 May 2012 09:12:54 +0200
branchfirefox12
changeset 450 586eaa2c4dce
parent 449 feee012b5199
permissions -rw-r--r--
fixed ARM build

# HG changeset patch
# Parent 93e5d3b8061741abc83dcd4ed0fe93f1636583ef
Patch to make Mozilla build with gcc 4.7, including
- Bug 725655 - gcc 4.7 build failures (missing headers) (TM: Mozilla13)
- Bug 734490 - "no viable overloaded 'PRIxPTR'" when building with Clang or GCC 4.7 (TM: Mozilla14)
- Bug 741348 - Work around crashreporter client build failure with gcc 4.7 (TM: Mozilla15)

diff --git a/ipc/chromium/src/base/file_util_linux.cc b/ipc/chromium/src/base/file_util_linux.cc
--- a/ipc/chromium/src/base/file_util_linux.cc
+++ b/ipc/chromium/src/base/file_util_linux.cc
@@ -1,15 +1,18 @@
 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
 #include "base/file_util.h"
 
 #include <fcntl.h>
+#if defined(ANDROID) || defined(OS_POSIX)
+#include <unistd.h>
+#endif
 
 #include <string>
 #include <vector>
 
 #include "base/eintr_wrapper.h"
 #include "base/file_path.h"
 #include "base/string_util.h"
 
diff --git a/ipc/chromium/src/base/message_pump_libevent.cc b/ipc/chromium/src/base/message_pump_libevent.cc
--- a/ipc/chromium/src/base/message_pump_libevent.cc
+++ b/ipc/chromium/src/base/message_pump_libevent.cc
@@ -1,16 +1,19 @@
 // Copyright (c) 2008 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
 #include "base/message_pump_libevent.h"
 
 #include <errno.h>
 #include <fcntl.h>
+#if defined(ANDROID) || defined(OS_POSIX)
+#include <unistd.h>
+#endif
 
 #include "eintr_wrapper.h"
 #include "base/logging.h"
 #include "base/scoped_nsautorelease_pool.h"
 #include "base/scoped_ptr.h"
 #include "base/time.h"
 #include "third_party/libevent/event.h"
 
diff --git a/ipc/chromium/src/base/time_posix.cc b/ipc/chromium/src/base/time_posix.cc
--- a/ipc/chromium/src/base/time_posix.cc
+++ b/ipc/chromium/src/base/time_posix.cc
@@ -8,16 +8,19 @@
 #include <mach/mach_time.h>
 #endif
 #include <sys/time.h>
 #ifdef ANDROID
 #include <time64.h>
 #else
 #include <time.h>
 #endif
+#if defined(ANDROID) || defined(OS_POSIX)
+#include <unistd.h>
+#endif
 
 #include <limits>
 
 #include "base/basictypes.h"
 #include "base/logging.h"
 
 namespace base {
 
diff --git a/layout/base/tests/TestPoisonArea.cpp b/layout/base/tests/TestPoisonArea.cpp
--- a/layout/base/tests/TestPoisonArea.cpp
+++ b/layout/base/tests/TestPoisonArea.cpp
@@ -392,53 +392,53 @@ ReservePoisonArea()
 {
   if (sizeof(uintptr_t) == 8) {
     // Use the hardware-inaccessible region.
     // We have to avoid 64-bit constants and shifts by 32 bits, since this
     // code is compiled in 32-bit mode, although it is never executed there.
     uintptr_t result = (((uintptr_t(0x7FFFFFFFu) << 31) << 1 |
                          uintptr_t(0xF0DEAFFFu)) &
                         ~uintptr_t(PAGESIZE-1));
-    printf("INFO | poison area assumed at 0x%.*"PRIxPTR"\n", SIZxPTR, result);
+    printf("INFO | poison area assumed at 0x%.*" PRIxPTR "\n", SIZxPTR, result);
     return result;
   } else {
     // First see if we can allocate the preferred poison address from the OS.
     uintptr_t candidate = (0xF0DEAFFF & ~(PAGESIZE-1));
     void *result = ReserveRegion(candidate, false);
     if (result == (void *)candidate) {
       // success - inaccessible page allocated
-      printf("INFO | poison area allocated at 0x%.*"PRIxPTR
+      printf("INFO | poison area allocated at 0x%.*" PRIxPTR
              " (preferred addr)\n", SIZxPTR, (uintptr_t)result);
       return candidate;
     }
 
     // That didn't work, so see if the preferred address is within a range
     // of permanently inacessible memory.
     if (ProbeRegion(candidate)) {
       // success - selected page cannot be usable memory
       if (result != MAP_FAILED)
         ReleaseRegion(result);
-      printf("INFO | poison area assumed at 0x%.*"PRIxPTR
+      printf("INFO | poison area assumed at 0x%.*" PRIxPTR
              " (preferred addr)\n", SIZxPTR, candidate);
       return candidate;
     }
 
     // The preferred address is already in use.  Did the OS give us a
     // consolation prize?
     if (result != MAP_FAILED) {
-      printf("INFO | poison area allocated at 0x%.*"PRIxPTR
+      printf("INFO | poison area allocated at 0x%.*" PRIxPTR
              " (consolation prize)\n", SIZxPTR, (uintptr_t)result);
       return (uintptr_t)result;
     }
 
     // It didn't, so try to allocate again, without any constraint on
     // the address.
     result = ReserveRegion(0, false);
     if (result != MAP_FAILED) {
-      printf("INFO | poison area allocated at 0x%.*"PRIxPTR
+      printf("INFO | poison area allocated at 0x%.*" PRIxPTR
              " (fallback)\n", SIZxPTR, (uintptr_t)result);
       return (uintptr_t)result;
     }
 
     printf("ERROR | no usable poison area found\n");
     return 0;
   }
 }
@@ -450,17 +450,17 @@ static uintptr_t
 ReservePositiveControl()
 {
 
   void *result = ReserveRegion(0, false);
   if (result == MAP_FAILED) {
     printf("ERROR | allocating positive control | %s\n", LastErrMsg());
     return 0;
   }
-  printf("INFO | positive control allocated at 0x%.*"PRIxPTR"\n",
+  printf("INFO | positive control allocated at 0x%.*" PRIxPTR "\n",
          SIZxPTR, (uintptr_t)result);
   return (uintptr_t)result;
 }
 
 /* The "negative control" area confirms that our probe logic does detect a
  * page that is readable, writable, or executable.
  */
 static uintptr_t
@@ -481,17 +481,17 @@ ReserveNegativeControl()
   // Now mark it executable as well as readable and writable.
   // (mmap(PROT_EXEC) may fail when applied to anonymous memory.)
 
   if (MakeRegionExecutable(result)) {
     printf("ERROR | making negative control executable | %s\n", LastErrMsg());
     return 0;
   }
 
-  printf("INFO | negative control allocated at 0x%.*"PRIxPTR"\n",
+  printf("INFO | negative control allocated at 0x%.*" PRIxPTR "\n",
          SIZxPTR, (uintptr_t)result);
   return (uintptr_t)result;
 }
 
 static void
 JumpTo(uintptr_t opaddr)
 {
 #ifdef __ia64
diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in b/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in
--- a/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in
+++ b/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in
@@ -61,8 +61,11 @@ HOST_CPPSRCS = \
   file_id.cc \
   guid_creator.cc \
   $(NULL)
 
 # need static lib
 FORCE_STATIC_LIB = 1
 
 include $(topsrcdir)/config/rules.mk
+
+# See https://bugzilla.mozilla.org/show_bug.cgi?id=741348#c11
+file_id.$(OBJ_SUFFIX): STL_FLAGS=