mozilla-gcc6.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Tue, 14 Jun 2016 21:23:19 +0200
branchfirefox47
changeset 918 0f93e8da34b6
parent 916 2f9f2e040647
permissions -rw-r--r--
boo#984403 - OK and cancel button reversed in FF47
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
916
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
# HG changeset patch
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     3
# User Mike Hommey <mh+mozilla@glandium.org>
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
# Date 1457596445 -32400
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
# Node ID 55212130f19da3079167a6b0a5a0ed6689c9a71d
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
# Parent  27c94617d7064d566c24a42e11cd4c7ef725923d
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     7
Bug 1245076 - Don't include mozalloc.h from the cstdlib wrapper. r=froydnj
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     8
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     9
Our STL wrappers do various different things, one of which is including
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
mozalloc.h for infallible operator new. mozalloc.h includes stdlib.h,
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    11
which, in libstdc++ >= 6 is now itself a wrapper around cstdlib, which
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    12
circles back to our STL wrapper.
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
But of the things our STL wrappers do, including mozalloc.h is not one
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
that is necessary for cstdlib. So skip including mozalloc.h in our
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
cstdlib wrapper.
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
Additionally, some C++ sources (in media/mtransport) are including
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
headers in an extern "C" block, which end up including stdlib.h, which
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    20
ends up including cstdlib because really, this is all C++, and our
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    21
wrapper pre-includes <new> for mozalloc.h, which fails because templates
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
don't work inside extern "C". So, don't pre-include <new> when we're not
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
including mozalloc.h.
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    24
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
diff --git a/config/gcc-stl-wrapper.template.h b/config/gcc-stl-wrapper.template.h
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
--- a/config/gcc-stl-wrapper.template.h
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
+++ b/config/gcc-stl-wrapper.template.h
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    29
@@ -12,33 +12,40 @@
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    30
 // compiling ObjC.
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    31
 #if defined(__EXCEPTIONS) && __EXCEPTIONS && !(__OBJC__ && __GNUC__ && XP_IOS)
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    32
 #  error "STL code can only be used with -fno-exceptions"
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    33
 #endif
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
 
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
 // Silence "warning: #include_next is a GCC extension"
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    36
 #pragma GCC system_header
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    37
 
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    38
+// Don't include mozalloc for cstdlib. See bug 1245076.
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    39
+#ifndef moz_dont_include_mozalloc_for_cstdlib
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    40
+#  define moz_dont_include_mozalloc_for_cstdlib
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    41
+#endif
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    42
+#ifndef moz_dont_include_mozalloc_for_${HEADER}
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    43
 // mozalloc.h wants <new>; break the cycle by always explicitly
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    44
 // including <new> here.  NB: this is a tad sneaky.  Sez the gcc docs:
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    45
 //
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    46
 //    `#include_next' does not distinguish between <file> and "file"
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    47
 //    inclusion, nor does it check that the file you specify has the
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    48
 //    same name as the current file. It simply looks for the file
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    49
 //    named, starting with the directory in the search path after the
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    50
 //    one where the current file was found.
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    51
-#include_next <new>
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    52
+#  include_next <new>
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    53
 
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    54
 // See if we're in code that can use mozalloc.  NB: this duplicates
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    55
 // code in nscore.h because nscore.h pulls in prtypes.h, and chromium
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    56
 // can't build with that being included before base/basictypes.h.
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    57
-#if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC)
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    58
-#  include "mozilla/mozalloc.h"
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    59
-#else
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    60
-#  error "STL code can only be used with infallible ::operator new()"
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    61
+#  if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC)
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    62
+#    include "mozilla/mozalloc.h"
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    63
+#  else
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    64
+#    error "STL code can only be used with infallible ::operator new()"
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    65
+#  endif
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    66
+
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    67
 #endif
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    68
 
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    69
 #if defined(DEBUG) && !defined(_GLIBCXX_DEBUG)
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    70
 // Enable checked iterators and other goodies
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    71
 //
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    72
 // FIXME/bug 551254: gcc's debug STL implementation requires -frtti.
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    73
 // Figure out how to resolve this with -fno-rtti.  Maybe build with
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    74
 // -frtti in DEBUG builds?
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    75
2f9f2e040647 Firefox 47.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    76