diff options
author | martin <martin@pkgsrc.org> | 2014-06-19 20:31:03 +0000 |
---|---|---|
committer | martin <martin@pkgsrc.org> | 2014-06-19 20:31:03 +0000 |
commit | 9a5bca9db21f00b9de265d5021a6c513944c7f35 (patch) | |
tree | 8b03b515514a94c05243a97e05ca409cb836233e | |
parent | 1f3343a6642ba2556b49e96a61fc181b13de4af8 (diff) | |
download | pkgsrc-9a5bca9db21f00b9de265d5021a6c513944c7f35.tar.gz |
Fix bugzilla ticket 1026499: generated C++ code does not obey alignement
restrictions, make the code generator issue explicit alignment requests.
-rw-r--r-- | www/firefox/Makefile | 5 | ||||
-rw-r--r-- | www/firefox/distinfo | 6 | ||||
-rw-r--r-- | www/firefox/patches/patch-ipc_ipdl_ipdl_cxx_ast.py | 26 | ||||
-rw-r--r-- | www/firefox/patches/patch-ipc_ipdl_ipdl_cxx_cgen.py | 28 | ||||
-rw-r--r-- | www/firefox/patches/patch-ipc_ipdl_ipdl_lower.py | 18 | ||||
-rw-r--r-- | www/firefox/patches/patch-mfbt_Alignment.h | 26 |
6 files changed, 106 insertions, 3 deletions
diff --git a/www/firefox/Makefile b/www/firefox/Makefile index fd009455b05..d12dcb3e0b6 100644 --- a/www/firefox/Makefile +++ b/www/firefox/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.170 2014/06/11 00:40:59 ryoon Exp $ +# $NetBSD: Makefile,v 1.171 2014/06/19 20:31:03 martin Exp $ FIREFOX_VER= ${MOZ_BRANCH}${MOZ_BRANCH_MINOR} MOZ_BRANCH= 30.0 @@ -6,6 +6,7 @@ MOZ_BRANCH_MINOR= DISTNAME= firefox-${FIREFOX_VER}.source PKGNAME= firefox-${MOZ_BRANCH}${MOZ_BRANCH_MINOR:S/b/beta/:S/esr//} +PKGREVISION= 1 CATEGORIES= www MASTER_SITES= ${MASTER_SITE_MOZILLA:=firefox/releases/${FIREFOX_VER}/source/} MASTER_SITES+= ${MASTER_SITE_MOZILLA_ALL:=firefox/releases/${FIREFOX_VER}/source/} @@ -16,7 +17,7 @@ WRKSRC= ${WRKDIR}/mozilla-release MAINTAINER= ryoon@NetBSD.org HOMEPAGE= http://www.mozilla.com/en-US/firefox/ -COMMENT= Web browser with support for extensions (version 29.x) +COMMENT= Web browser with support for extensions (version 30.x) LICENSE= mpl-1.1 MOZILLA_DIR= # empty diff --git a/www/firefox/distinfo b/www/firefox/distinfo index 2755cf1eae9..55d718b151b 100644 --- a/www/firefox/distinfo +++ b/www/firefox/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.155 2014/06/14 16:20:07 joerg Exp $ +$NetBSD: distinfo,v 1.156 2014/06/19 20:31:03 martin Exp $ SHA1 (firefox-30.0.source.tar.bz2) = 21dce1a2d4b8085c5f7f66b5f4f60bc37598285d RMD160 (firefox-30.0.source.tar.bz2) = a1fce7102f9dde33c6db7869ebe600d028998875 @@ -71,6 +71,9 @@ SHA1 (patch-ipc_chromium_src_chrome_common_transport__dib.h) = 7af18973c005d7b14 SHA1 (patch-ipc_glue_GeckoChildProcessHost.cpp) = 9a158075e31e2c8d6159bd4b97d0b272e193f3db SHA1 (patch-ipc_glue_ScopedXREEmbed.cpp) = 97c39f25527dac4c22b38ce446ca2cd4cef08fd0 SHA1 (patch-ipc_glue_StringUtil.cpp) = f238adebb5bdf57f7109a781c6f3fb195763f3c0 +SHA1 (patch-ipc_ipdl_ipdl_cxx_ast.py) = 30ed99c84cc203018bc606208d520c75e1e0d0d9 +SHA1 (patch-ipc_ipdl_ipdl_cxx_cgen.py) = 9fc8d9aeadc3677b7adc820a181bfe4aecfc8124 +SHA1 (patch-ipc_ipdl_ipdl_lower.py) = 245733ff4462388d55a1398a4dc3d767bb002236 SHA1 (patch-js__src__vm__SPSProfiler.cpp) = 989ba25e4c5308d21d07baa802decce13609a475 SHA1 (patch-js_src_Makefile.in) = f6ce5f02a9292e3e524424c5e810850232efe524 SHA1 (patch-js_src_ctypes_CTypes.h) = 768a084239f92a424c1c7dc9eaaf9be9456ca9f0 @@ -101,6 +104,7 @@ SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_video__capture.gypi SHA1 (patch-media_webrtc_trunk_webrtc_system__wrappers_source_spreadsortlib_spreadsort.hpp) = 78a9522f0e37cfc3ec8267e6c15de9dba0ec7ff3 SHA1 (patch-memory_jemalloc_Makefile.in) = 772e996c8da254f952d0f3a0c9325a177c838543 SHA1 (patch-memory_mozalloc_mozalloc__abort.cpp) = 9d9036ddd28c7b8ce37860e0120df2997a3a0c59 +SHA1 (patch-mfbt_Alignment.h) = 07bece1799e15d46d725c3579bf87ec64c32a08b SHA1 (patch-mfbt_Poison.cpp) = b582943c02f57835451c9eecd004c9912d42ce84 SHA1 (patch-modules_libjar_nsZipArchive.cpp) = 6aff0f8ed42575d8ca36a524e12e9a1f7351004a SHA1 (patch-netwerk_dns_Makefile.in) = b6bd9814d909dd6f7cff10dbeac3bedd79c2508e diff --git a/www/firefox/patches/patch-ipc_ipdl_ipdl_cxx_ast.py b/www/firefox/patches/patch-ipc_ipdl_ipdl_cxx_ast.py new file mode 100644 index 00000000000..e2853e665c9 --- /dev/null +++ b/www/firefox/patches/patch-ipc_ipdl_ipdl_cxx_ast.py @@ -0,0 +1,26 @@ +$NetBSD: patch-ipc_ipdl_ipdl_cxx_ast.py,v 1.1 2014/06/19 20:31:03 martin Exp $ + +Part of https://bugzilla.mozilla.org/show_bug.cgi?id=1026499: +Make sure storage provided for attributes is properly aligned +in the generated C++ code. + +--- ipc/ipdl/ipdl/cxx/ast.py.orig 2014-06-06 03:15:27.000000000 +0200 ++++ ipc/ipdl/ipdl/cxx/ast.py 2014-06-17 21:33:50.000000000 +0200 +@@ -336,12 +336,13 @@ + Type.VOIDPTR = Type('void', ptr=1) + + class TypeArray(Node): +- def __init__(self, basetype, nmemb): +- '''the type |basetype DECLNAME[nmemb]|. |nmemb| is an Expr''' ++ def __init__(self, basetype, nmemb, alignType): ++ '''the type |basetype DECLNAME[nmemb]|. |nmemb| is an Expr, |alignType| is a type''' + self.basetype = basetype + self.nmemb = nmemb ++ self.alignType = alignType + def __deepcopy__(self, memo): +- return TypeArray(deepcopy(self.basetype, memo), nmemb) ++ return TypeArray(deepcopy(self.basetype, memo), nmemb, alignType) + + class TypeEnum(Node): + def __init__(self, name=None): + diff --git a/www/firefox/patches/patch-ipc_ipdl_ipdl_cxx_cgen.py b/www/firefox/patches/patch-ipc_ipdl_ipdl_cxx_cgen.py new file mode 100644 index 00000000000..9d12d0e9984 --- /dev/null +++ b/www/firefox/patches/patch-ipc_ipdl_ipdl_cxx_cgen.py @@ -0,0 +1,28 @@ +$NetBSD: patch-ipc_ipdl_ipdl_cxx_cgen.py,v 1.1 2014/06/19 20:31:03 martin Exp $ + +Part of https://bugzilla.mozilla.org/show_bug.cgi?id=1026499: +Make sure storage provided for attributes is properly aligned +in the generated C++ code. + +--- ipc/ipdl/ipdl/cxx/cgen.py.orig 2014-06-06 03:15:27.000000000 +0200 ++++ ipc/ipdl/ipdl/cxx/cgen.py 2014-06-18 18:10:27.000000000 +0200 +@@ -101,6 +101,7 @@ + def visitDecl(self, d): + # C-syntax arrays make code generation much more annoying + if isinstance(d.type, TypeArray): ++ self.write('MOZ_ALIGNED_DECL(') + d.type.basetype.accept(self) + else: + d.type.accept(self) +@@ -111,7 +112,9 @@ + if isinstance(d.type, TypeArray): + self.write('[') + d.type.nmemb.accept(self) +- self.write(']') ++ self.write('], MOZ_ALIGNOF(') ++ d.type.alignType.accept(self) ++ self.write('))') + + def visitParam(self, p): + self.visitDecl(p) + diff --git a/www/firefox/patches/patch-ipc_ipdl_ipdl_lower.py b/www/firefox/patches/patch-ipc_ipdl_ipdl_lower.py new file mode 100644 index 00000000000..a3fb9f3540a --- /dev/null +++ b/www/firefox/patches/patch-ipc_ipdl_ipdl_lower.py @@ -0,0 +1,18 @@ +$NetBSD: patch-ipc_ipdl_ipdl_lower.py,v 1.5 2014/06/19 20:31:03 martin Exp $ + +Part of https://bugzilla.mozilla.org/show_bug.cgi?id=1026499: +Make sure storage provided for attributes is properly aligned +in the generated C++ code. + +--- ipc/ipdl/ipdl/lower.py.orig 2014-06-06 03:15:27.000000000 +0200 ++++ ipc/ipdl/ipdl/lower.py 2014-06-17 22:35:35.000000000 +0200 +@@ -768,7 +768,7 @@ + if self.recursive: + return self.ptrToType() + else: +- return TypeArray(Type('char'), ExprSizeof(self.internalType())) ++ return TypeArray(Type('char'), ExprSizeof(self.internalType()), self.internalType()) + + def unionValue(self): + # NB: knows that Union's storage C union is named |mValue| + diff --git a/www/firefox/patches/patch-mfbt_Alignment.h b/www/firefox/patches/patch-mfbt_Alignment.h new file mode 100644 index 00000000000..32aabe6cc3f --- /dev/null +++ b/www/firefox/patches/patch-mfbt_Alignment.h @@ -0,0 +1,26 @@ +$NetBSD: patch-mfbt_Alignment.h,v 1.1 2014/06/19 20:31:03 martin Exp $ + +Make MOZ_ALIGNOF() use gcc's builtin __alignof__. +From https://bugzilla.mozilla.org/show_bug.cgi?id=1026499 + +--- mfbt/Alignment.h.orig 2014-06-06 03:15:37.000000000 +0200 ++++ mfbt/Alignment.h 2014-06-18 18:12:22.000000000 +0200 +@@ -14,6 +14,9 @@ + + namespace mozilla { + ++#if defined(__GNUC__) ++#define MOZ_ALIGNOF(T) __alignof__(T) ++#else + /* + * This class, and the corresponding macro MOZ_ALIGNOF, figures out how many + * bytes of alignment a given type needs. +@@ -32,6 +35,7 @@ + }; + + #define MOZ_ALIGNOF(T) mozilla::AlignmentFinder<T>::alignment ++#endif + + /* + * Declare the MOZ_ALIGNED_DECL macro for declaring aligned types. + |