--- a/mozilla-gcc47.patch Mon Apr 16 11:47:04 2012 +0200
+++ b/mozilla-gcc47.patch Mon Apr 16 14:32:00 2012 +0200
@@ -1,7 +1,8 @@
# HG changeset patch
-# Parent 7014aafc8d4c8862f3064adc46536f6aa9730644
+# Parent debab900e37fdd4f8981c06beef6f193a04bd2b7
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)
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
@@ -71,3 +72,103 @@
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