summaryrefslogtreecommitdiff
path: root/moz/patches
diff options
context:
space:
mode:
Diffstat (limited to 'moz/patches')
-rw-r--r--moz/patches/arm_build_fix.patch189
-rw-r--r--moz/patches/brokenmakefile.patch13
-rw-r--r--moz/patches/consecutive_ldap_queries.patch13
-rw-r--r--moz/patches/cygwin_paths_in_ldap_sdk.patch12
-rw-r--r--moz/patches/dtoa.patch237
-rwxr-xr-xmoz/patches/embed_manifest.patch142
-rw-r--r--moz/patches/index.txt65
-rw-r--r--moz/patches/link_fontconfig.patch11
-rw-r--r--moz/patches/no_core_abspath_in_nss.patch52
-rw-r--r--moz/patches/respect_disable_pango.patch54
-rw-r--r--moz/patches/wchart_on_msvc8.patch20
11 files changed, 808 insertions, 0 deletions
diff --git a/moz/patches/arm_build_fix.patch b/moz/patches/arm_build_fix.patch
new file mode 100644
index 000000000000..79368e5fe6db
--- /dev/null
+++ b/moz/patches/arm_build_fix.patch
@@ -0,0 +1,189 @@
+--- misc/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp 2010-01-29 08:39:01.000000000 +0000
++++ misc/build/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_arm.cpp 2010-01-29 08:41:01.000000000 +0000
+@@ -44,8 +44,21 @@
+ #error "This code is for Linux ARM only. Please check if it works for you, too.\nDepends strongly on gcc behaviour."
+ #endif
+
++#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))
++/* This tells gcc3.4+ not to optimize away symbols.
++ * * @see http://gcc.gnu.org/gcc-3.4/changes.html
++ * */
++#define DONT_DROP_OR_WARN __attribute__((used))
++#else
++/* This tells older gccs not to warn about unused vairables.
++ * * @see http://docs.freebsd.org/info/gcc/gcc.info.Variable_Attributes.html
++ * */
++#define DONT_DROP_OR_WARN __attribute__((unused))
++#endif
++
+ /* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol. */
+-static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch");
++static nsresult PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args) asm("_PrepareAndDispatch")
++DONT_DROP_OR_WARN;
+
+ static nsresult
+ PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint32* args)
+--- misc/mozilla/security/nss/cmd/shlibsign/Makefile 2010-02-05 13:13:56.000000000 +0000
++++ misc/build/mozilla/security/nss/cmd/shlibsign/Makefile 2010-02-05 13:14:16.000000000 +0000
+@@ -124,5 +124,5 @@
+ endif
+ endif
+
+-libs install :: $(CHECKLOC)
++libs install ::
+
+--- misc/mozilla/security/manager/Makefile.in 2010-02-05 13:27:25.000000000 +0000
++++ misc/build/mozilla/security/manager/Makefile.in 2010-02-05 13:28:00.000000000 +0000
+@@ -53,7 +53,6 @@
+ SMIME3_LIB \
+ SSL3_LIB \
+ SOFTOKEN3_LIB \
+- SOFTOKEN3_CHK \
+ LOADABLE_ROOT_MODULE \
+ HAVE_FREEBL_LIBS \
+ HAVE_FREEBL_LIBS_32 \
+@@ -68,7 +67,6 @@
+ SMIME3_LIB = $(DLL_PREFIX)smime3$(DLL_SUFFIX)
+ SSL3_LIB = $(DLL_PREFIX)ssl3$(DLL_SUFFIX)
+ SOFTOKEN3_LIB = $(DLL_PREFIX)softokn3$(DLL_SUFFIX)
+-SOFTOKEN3_CHK = $(DLL_PREFIX)softokn3.chk
+
+ # Default
+ HAVE_FREEBL_LIBS = 1
+@@ -99,23 +97,17 @@
+
+ ifdef HAVE_FREEBL_LIBS
+ FREEBL_LIB = $(DLL_PREFIX)freebl3$(DLL_SUFFIX)
+-FREEBL_CHK = $(DLL_PREFIX)freebl3.chk
+ endif
+ ifdef HAVE_FREEBL_LIBS_32
+ FREEBL_32INT_LIB = libfreebl_32int_3$(DLL_SUFFIX)
+-FREEBL_32INT_CHK = libfreebl_32int_3.chk
+ FREEBL_32FPU_LIB = libfreebl_32fpu_3$(DLL_SUFFIX)
+-FREEBL_32FPU_CHK = libfreebl_32fpu_3.chk
+ endif
+ ifdef HAVE_FREEBL_LIBS_32INT64
+ FREEBL_32INT64_LIB = libfreebl_32int64_3$(DLL_SUFFIX)
+-FREEBL_32INT64_CHK = libfreebl_32int64_3.chk
+ endif
+ ifdef HAVE_FREEBL_LIBS_64
+ FREEBL_64INT_LIB = libfreebl_64int_3$(DLL_SUFFIX)
+-FREEBL_64INT_CHK = libfreebl_64int_3.chk
+ FREEBL_64FPU_LIB = libfreebl_64fpu_3$(DLL_SUFFIX)
+-FREEBL_64FPU_CHK = libfreebl_64fpu_3.chk
+ endif
+
+ ABS_DIST := $(shell cd $(DIST) && pwd)
+@@ -210,7 +202,6 @@
+ OS_ARCH="$(OS_ARCH)" \
+ CPU_ARCH="$(TARGET_CPU)" \
+ $(NULL)
+-SKIP_CHK=1
+ endif
+ SUBMAKEFILES = boot/Makefile ssl/Makefile pki/Makefile locales/Makefile
+
+@@ -223,10 +214,6 @@
+ ifndef MOZ_NATIVE_NSS
+ $(MAKE) -C $(topsrcdir)/security/coreconf $(DEFAULT_GMAKE_FLAGS) clean
+ $(MAKE) -C $(topsrcdir)/security/nss/lib $(DEFAULT_GMAKE_FLAGS) clean
+-ifndef SKIP_CHK
+- $(MAKE) -C $(topsrcdir)/security/nss/cmd/lib $(DEFAULT_GMAKE_FLAGS) clean
+- $(MAKE) -C $(topsrcdir)/security/nss/cmd/shlibsign $(DEFAULT_GMAKE_FLAGS) clean
+-endif
+ touch $@
+ endif
+
+@@ -262,43 +249,22 @@
+ # In NSS 3.11.8-3.11.9, lib/ssl/derive.c includes cmd/lib/secutil.h.
+ $(MAKE) -C $(topsrcdir)/security/nss/cmd/lib $(DEFAULT_GMAKE_FLAGS) export
+ $(MAKE) -C $(topsrcdir)/security/nss/lib $(DEFAULT_GMAKE_FLAGS) DIRS="util base dev pki pki1 certdb certhigh pk11wrap cryptohi nss ssl pkcs12 pkcs7 smime crmf jar ckfw ckfw/builtins"
+-ifndef SKIP_CHK
+- $(MAKE) -C $(topsrcdir)/security/nss/cmd/lib $(DEFAULT_GMAKE_FLAGS)
+- $(MAKE) -C $(topsrcdir)/security/nss/cmd/shlibsign $(DEFAULT_GMAKE_FLAGS)
+-endif
+ $(INSTALL) -m 755 $(DIST)/lib/$(LOADABLE_ROOT_MODULE) $(DIST)/bin
+-ifndef SKIP_CHK
+- $(INSTALL) -m 644 $(DIST)/lib/$(SOFTOKEN3_CHK) $(DIST)/bin
+-endif
+ $(INSTALL) -m 755 $(DIST)/lib/$(SOFTOKEN3_LIB) $(DIST)/bin
+ $(INSTALL) -m 755 $(DIST)/lib/$(NSS3_LIB) $(DIST)/bin
+ $(INSTALL) -m 755 $(DIST)/lib/$(SSL3_LIB) $(DIST)/bin
+ $(INSTALL) -m 755 $(DIST)/lib/$(SMIME3_LIB) $(DIST)/bin
+ ifdef HAVE_FREEBL_LIBS
+-ifndef SKIP_CHK
+- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_CHK) $(DIST)/bin
+-endif
+ $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_LIB) $(DIST)/bin
+ endif
+ ifdef HAVE_FREEBL_LIBS_32
+-ifndef SKIP_CHK
+- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_32INT_CHK) $(DIST)/bin
+- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_32FPU_CHK) $(DIST)/bin
+-endif
+ $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_32INT_LIB) $(DIST)/bin
+ $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_32FPU_LIB) $(DIST)/bin
+ endif
+ ifdef HAVE_FREEBL_LIBS_32INT64
+-ifndef SKIP_CHK
+- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_32INT64_CHK) $(DIST)/bin
+-endif
+ $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_32INT64_LIB) $(DIST)/bin
+ endif
+ ifdef HAVE_FREEBL_LIBS_64
+-ifndef SKIP_CHK
+- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_64INT_CHK) $(DIST)/bin
+- $(INSTALL) -m 644 $(DIST)/lib/$(FREEBL_64FPU_CHK) $(DIST)/bin
+-endif
+ $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_64INT_LIB) $(DIST)/bin
+ $(INSTALL) -m 755 $(DIST)/lib/$(FREEBL_64FPU_LIB) $(DIST)/bin
+ endif
+@@ -313,38 +279,21 @@
+ install::
+ ifndef MOZ_NATIVE_NSS
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(LOADABLE_ROOT_MODULE) $(DESTDIR)$(mozappdir)
+-ifndef SKIP_CHK
+- $(SYSINSTALL) -m 644 $(DIST)/lib/$(SOFTOKEN3_CHK) $(DESTDIR)$(mozappdir)
+-endif
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(SOFTOKEN3_LIB) $(DESTDIR)$(mozappdir)
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(NSS3_LIB) $(DESTDIR)$(mozappdir)
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(SSL3_LIB) $(DESTDIR)$(mozappdir)
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(SMIME3_LIB) $(DESTDIR)$(mozappdir)
+ ifdef HAVE_FREEBL_LIBS
+-ifndef SKIP_CHK
+- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_CHK) $(DESTDIR)$(mozappdir)
+-endif
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_LIB) $(DESTDIR)$(mozappdir)
+ endif
+ ifdef HAVE_FREEBL_LIBS_32
+-ifndef SKIP_CHK
+- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_32INT_CHK) $(DESTDIR)$(mozappdir)
+- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_32FPU_CHK) $(DESTDIR)$(mozappdir)
+-endif
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_32INT_LIB) $(DESTDIR)$(mozappdir)
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_32FPU_LIB) $(DESTDIR)$(mozappdir)
+ endif
+ ifdef HAVE_FREEBL_LIBS_32INT64
+-ifndef SKIP_CHK
+- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_32INT64_CHK) $(DESTDIR)$(mozappdir)
+-endif
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_32INT64_LIB) $(DESTDIR)$(mozappdir)
+ endif
+ ifdef HAVE_FREEBL_LIBS_64
+-ifndef SKIP_CHK
+- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_64INT_CHK) $(DESTDIR)$(mozappdir)
+- $(SYSINSTALL) -m 644 $(DIST)/lib/$(FREEBL_64FPU_CHK) $(DESTDIR)$(mozappdir)
+-endif
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_64INT_LIB) $(DESTDIR)$(mozappdir)
+ $(SYSINSTALL) -m 755 $(DIST)/lib/$(FREEBL_64FPU_LIB) $(DESTDIR)$(mozappdir)
+ endif
+@@ -366,10 +315,6 @@
+ ifndef MOZ_NATIVE_NSS
+ $(MAKE) -C $(topsrcdir)/security/coreconf $(DEFAULT_GMAKE_FLAGS) clean
+ $(MAKE) -C $(topsrcdir)/security/nss/lib $(DEFAULT_GMAKE_FLAGS) clean
+-ifndef SKIP_CHK
+- $(MAKE) -C $(topsrcdir)/security/nss/cmd/lib $(DEFAULT_GMAKE_FLAGS) clean
+- $(MAKE) -C $(topsrcdir)/security/nss/cmd/shlibsign $(DEFAULT_GMAKE_FLAGS) clean
+-endif
+ endif
+
+ echo-requires-recursive::
diff --git a/moz/patches/brokenmakefile.patch b/moz/patches/brokenmakefile.patch
new file mode 100644
index 000000000000..20d88014b932
--- /dev/null
+++ b/moz/patches/brokenmakefile.patch
@@ -0,0 +1,13 @@
+--- misc/mozilla/mailnews/extensions/smime/build/Makefile.in 2010-09-04 16:00:38.000000000 +0100
++++ misc/build/mozilla/mailnews/extensions/smime/build/Makefile.in 2010-09-04 16:02:24.000000000 +0100
+@@ -79,10 +79,6 @@
+ $(DIST)/lib/$(LIB_PREFIX)msgsmime_s.$(LIB_SUFFIX) \
+ $(NULL)
+
+-ifndef MOZ_STATIC_MAIL_BUILD
+-SHARED_LIBRARY_LIBS + = $(DIST)/lib/$(LIB_PREFIX)msgbsutl_s.$(LIB_SUFFIX)
+-endif
+-
+ EXTRA_DSO_LDOPTS = \
+ $(LIBS_DIR) \
+ $(EXTRA_DSO_LIBS) \
diff --git a/moz/patches/consecutive_ldap_queries.patch b/moz/patches/consecutive_ldap_queries.patch
new file mode 100644
index 000000000000..d82d594bce09
--- /dev/null
+++ b/moz/patches/consecutive_ldap_queries.patch
@@ -0,0 +1,13 @@
+--- mozilla/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp 2009-02-02 09:39:32.054968600 +0100
++++ mozilla.patched/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp 2009-02-02 09:35:35.633832119 +0100
+@@ -833,6 +833,10 @@
+ if (msgListener)
+ {
+ msgListener->mUrl = url;
++ msgListener->mQueryListener = listener;
++ msgListener->mResultLimit = resultLimit;
++ msgListener->mTimeOut = timeOut;
++ msgListener->mQueryArguments = arguments;
+ return msgListener->DoSearch();
+ }
+ }
diff --git a/moz/patches/cygwin_paths_in_ldap_sdk.patch b/moz/patches/cygwin_paths_in_ldap_sdk.patch
new file mode 100644
index 000000000000..e0983aecbe74
--- /dev/null
+++ b/moz/patches/cygwin_paths_in_ldap_sdk.patch
@@ -0,0 +1,12 @@
+--- mozilla.org/directory/c-sdk/ldap/include/Makefile.in 2006-02-03 15:44:33.000000000 +0100
++++ mozilla/directory/c-sdk/ldap/include/Makefile.in 2008-10-31 23:34:41.695625000 +0100
+@@ -85,6 +85,9 @@
+
+ ###########################################################################
+
++INCLUDEDIR:=$(shell cygpath -u $(INCLUDEDIR))
++GENHEADERS:=$(shell cygpath -u $(GENHEADERS))
++
+ all export:: $(INCLUDEDIR) $(GENHEADERS)
+ $(NSINSTALL) -D $(PRIVATEINCDIR)
+ $(INSTALL) $(INSTALLFLAGS) -m 644 $(HEADERS) $(INCLUDEDIR)
diff --git a/moz/patches/dtoa.patch b/moz/patches/dtoa.patch
new file mode 100644
index 000000000000..fce3be38b10b
--- /dev/null
+++ b/moz/patches/dtoa.patch
@@ -0,0 +1,237 @@
+--- misc/mozilla/nsprpub/pr/src/misc/prdtoa.c 20 Mar 2009 03:41:21 -0000 4.7
++++ misc/build/mozilla/nsprpub/pr/src/misc/prdtoa.c 15 Sep 2009 00:10:20 -0000
+@@ -169,17 +169,22 @@ void _PR_CleanupDtoa(void)
+ * Llong, #define #ULLong to be the corresponding unsigned type.
+ * #define KR_headers for old-style C function headers.
+ * #define Bad_float_h if your system lacks a float.h or if it does not
+ * define some or all of DBL_DIG, DBL_MAX_10_EXP, DBL_MAX_EXP,
+ * FLT_RADIX, FLT_ROUNDS, and DBL_MAX.
+ * #define MALLOC your_malloc, where your_malloc(n) acts like malloc(n)
+ * if memory is available and otherwise does something you deem
+ * appropriate. If MALLOC is undefined, malloc will be invoked
+- * directly -- and assumed always to succeed.
++ * directly -- and assumed always to succeed. Similarly, if you
++ * want something other than the system's free() to be called to
++ * recycle memory acquired from MALLOC, #define FREE to be the
++ * name of the alternate routine. (FREE or free is only called in
++ * pathological cases, e.g., in a dtoa call after a dtoa return in
++ * mode 3 with thousands of digits requested.)
+ * #define Omit_Private_Memory to omit logic (added Jan. 1998) for making
+ * memory allocations from a private pool of memory when possible.
+ * When used, the private pool is PRIVATE_MEM bytes long: 2304 bytes,
+ * unless #defined to be a different length. This default length
+ * suffices to get rid of MALLOC calls except for unusual cases,
+ * such as decimal-to-binary conversion of a very long string of
+ * digits. The longest string dtoa can return is about 751 bytes
+ * long. For conversions by strtod of strings of 800 digits and
+@@ -553,17 +558,17 @@ extern double rnd_prod(double, double),
+ #endif
+ #endif /* NO_LONG_LONG */
+
+ #ifndef MULTIPLE_THREADS
+ #define ACQUIRE_DTOA_LOCK(n) /*nothing*/
+ #define FREE_DTOA_LOCK(n) /*nothing*/
+ #endif
+
+-#define Kmax 15
++#define Kmax 7
+
+ struct
+ Bigint {
+ struct Bigint *next;
+ int k, maxwds, sign, wds;
+ ULong x[1];
+ };
+
+@@ -581,27 +586,28 @@ Balloc
+ {
+ int x;
+ Bigint *rv;
+ #ifndef Omit_Private_Memory
+ unsigned int len;
+ #endif
+
+ ACQUIRE_DTOA_LOCK(0);
+- if (rv = freelist[k]) {
++ /* The k > Kmax case does not need ACQUIRE_DTOA_LOCK(0), */
++ /* but this case seems very unlikely. */
++ if (k <= Kmax && (rv = freelist[k]))
+ freelist[k] = rv->next;
+- }
+ else {
+ x = 1 << k;
+ #ifdef Omit_Private_Memory
+ rv = (Bigint *)MALLOC(sizeof(Bigint) + (x-1)*sizeof(ULong));
+ #else
+ len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
+ /sizeof(double);
+- if (pmem_next - private_mem + len <= PRIVATE_mem) {
++ if (k <= Kmax && pmem_next - private_mem + len <= PRIVATE_mem) {
+ rv = (Bigint*)pmem_next;
+ pmem_next += len;
+ }
+ else
+ rv = (Bigint*)MALLOC(len*sizeof(double));
+ #endif
+ rv->k = k;
+ rv->maxwds = x;
+@@ -615,20 +621,28 @@ Balloc
+ Bfree
+ #ifdef KR_headers
+ (v) Bigint *v;
+ #else
+ (Bigint *v)
+ #endif
+ {
+ if (v) {
+- ACQUIRE_DTOA_LOCK(0);
+- v->next = freelist[v->k];
+- freelist[v->k] = v;
+- FREE_DTOA_LOCK(0);
++ if (v->k > Kmax)
++#ifdef FREE
++ FREE((void*)v);
++#else
++ free((void*)v);
++#endif
++ else {
++ ACQUIRE_DTOA_LOCK(0);
++ v->next = freelist[v->k];
++ freelist[v->k] = v;
++ FREE_DTOA_LOCK(0);
++ }
+ }
+ }
+
+ #define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \
+ y->wds*sizeof(Long) + 2*sizeof(int))
+
+ static Bigint *
+ multadd
+--- misc/mozilla/js/src/jsdtoa.c 2 Sep 2007 22:20:41 -0000 3.41
++++ misc/build/mozilla/js/src/jsdtoa.c 18 Sep 2009 16:15:13 -0000
+@@ -145,17 +145,22 @@
+ * and if "unsigned Llong" does not work as an unsigned version of
+ * Llong, #define #ULLong to be the corresponding unsigned type.
+ * #define Bad_float_h if your system lacks a float.h or if it does not
+ * define some or all of DBL_DIG, DBL_MAX_10_EXP, DBL_MAX_EXP,
+ * FLT_RADIX, FLT_ROUNDS, and DBL_MAX.
+ * #define MALLOC your_malloc, where your_malloc(n) acts like malloc(n)
+ * if memory is available and otherwise does something you deem
+ * appropriate. If MALLOC is undefined, malloc will be invoked
+- * directly -- and assumed always to succeed.
++ * directly -- and assumed always to succeed. Similarly, if you
++ * want something other than the system's free() to be called to
++ * recycle memory acquired from MALLOC, #define FREE to be the
++ * name of the alternate routine. (FREE or free is only called in
++ * pathological cases, e.g., in a dtoa call after a dtoa return in
++ * mode 3 with thousands of digits requested.)
+ * #define Omit_Private_Memory to omit logic (added Jan. 1998) for making
+ * memory allocations from a private pool of memory when possible.
+ * When used, the private pool is PRIVATE_MEM bytes long: 2000 bytes,
+ * unless #defined to be a different length. This default length
+ * suffices to get rid of MALLOC calls except for unusual cases,
+ * such as decimal-to-binary conversion of a very long string of
+ * digits.
+ * #define INFNAN_CHECK on IEEE systems to cause strtod to check for
+@@ -320,17 +325,17 @@ static PRLock *freelist_lock;
+ JS_END_MACRO
+ #define RELEASE_DTOA_LOCK() PR_Unlock(freelist_lock)
+ #else
+ #undef MULTIPLE_THREADS
+ #define ACQUIRE_DTOA_LOCK() /*nothing*/
+ #define RELEASE_DTOA_LOCK() /*nothing*/
+ #endif
+
+-#define Kmax 15
++#define Kmax 7
+
+ struct Bigint {
+ struct Bigint *next; /* Free list link */
+ int32 k; /* lg2(maxwds) */
+ int32 maxwds; /* Number of words allocated for x */
+ int32 sign; /* Zero if positive, 1 if negative. Ignored by most Bigint routines! */
+ int32 wds; /* Actual number of words. If value is nonzero, the most significant word must be nonzero. */
+ ULong x[1]; /* wds words of number in little endian order */
+@@ -400,26 +405,26 @@ static Bigint *Balloc(int32 k)
+
+ #ifdef ENABLE_OOM_TESTING
+ if (++allocationNum == desiredFailure) {
+ printf("Forced Failing Allocation number %d\n", allocationNum);
+ return NULL;
+ }
+ #endif
+
+- if ((rv = freelist[k]) != NULL)
++ if (k <= Kmax && (rv = freelist[k]) != NULL)
+ freelist[k] = rv->next;
+ if (rv == NULL) {
+ x = 1 << k;
+ #ifdef Omit_Private_Memory
+ rv = (Bigint *)MALLOC(sizeof(Bigint) + (x-1)*sizeof(ULong));
+ #else
+ len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
+ /sizeof(double);
+- if (pmem_next - private_mem + len <= PRIVATE_mem) {
++ if (k <= Kmax && pmem_next - private_mem + len <= PRIVATE_mem) {
+ rv = (Bigint*)pmem_next;
+ pmem_next += len;
+ }
+ else
+ rv = (Bigint*)MALLOC(len*sizeof(double));
+ #endif
+ if (!rv)
+ return NULL;
+@@ -428,18 +433,26 @@ static Bigint *Balloc(int32 k)
+ }
+ rv->sign = rv->wds = 0;
+ return rv;
+ }
+
+ static void Bfree(Bigint *v)
+ {
+ if (v) {
+- v->next = freelist[v->k];
+- freelist[v->k] = v;
++ if (v->k > Kmax)
++#ifdef FREE
++ FREE((void*)v);
++#else
++ free((void*)v);
++#endif
++ else {
++ v->next = freelist[v->k];
++ freelist[v->k] = v;
++ }
+ }
+ }
+
+ #define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \
+ y->wds*sizeof(Long) + 2*sizeof(int32))
+
+ /* Return b*m + a. Deallocate the old b. Both a and m must be between 0 and
+ * 65535 inclusive. NOTE: old b is deallocated on memory failure.
+--- misc/mozilla/js/src/jsdtoa.c 22 Sep 2009 06:16:27 -0000 3.42
++++ misc/build/mozilla/js/src/jsdtoa.c 15 Oct 2009 10:34:38 -0000
+@@ -405,19 +405,19 @@ static Bigint *Balloc(int32 k)
+
+ #ifdef ENABLE_OOM_TESTING
+ if (++allocationNum == desiredFailure) {
+ printf("Forced Failing Allocation number %d\n", allocationNum);
+ return NULL;
+ }
+ #endif
+
+- if (k <= Kmax && (rv = freelist[k]) != NULL)
++ if (k <= Kmax && (rv = freelist[k]))
+ freelist[k] = rv->next;
+- if (rv == NULL) {
++ else {
+ x = 1 << k;
+ #ifdef Omit_Private_Memory
+ rv = (Bigint *)MALLOC(sizeof(Bigint) + (x-1)*sizeof(ULong));
+ #else
+ len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
+ /sizeof(double);
+ if (k <= Kmax && pmem_next - private_mem + len <= PRIVATE_mem) {
+ rv = (Bigint*)pmem_next;
diff --git a/moz/patches/embed_manifest.patch b/moz/patches/embed_manifest.patch
new file mode 100755
index 000000000000..3b0e80b3ab81
--- /dev/null
+++ b/moz/patches/embed_manifest.patch
@@ -0,0 +1,142 @@
+--- mozilla.pure/configure 2008-06-16 00:25:31.000000000 +0200
++++ mozilla/configure 2008-11-09 23:59:19.984375000 +0100
+@@ -1068,6 +1068,8 @@
+ GCONF_VERSION=1.2.1
+ LIBGNOME_VERSION=2.0
+
++MSMANIFEST_TOOL=
++
+ MISSING_X=
+ for ac_prog in gawk mawk nawk awk
+ do
+@@ -3025,6 +3027,22 @@
+ else
+ { echo "configure: error: This version of the MSVC compiler, $CC_VERSION , is unsupported." 1>&2; exit 1; }
+ fi
++
++ # bug #249782
++ # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
++ if test "$_CC_SUITE" -ge "8"; then
++ MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
++ if test -n "MSMT_TOOL"; then
++ MSMANIFEST_TOOL_VERSION=`echo ${MSMANIFEST_TOOL}|grep -Po "(^|\s)[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?(\s|$)"`
++ if test -z "MSMANIFEST_TOOL_VERSION"; then
++ echo "configure: warning: Unknown version of the Microsoft (R) Manifest Tool." 1>&2
++ fi
++ MSMANIFEST_TOOL=1
++ unset MSMT_TOOL
++ else
++ { echo "Microsoft (R) Manifest Tool must be in your \$PATH." 1>&2; exit 1; }
++ fi
++ fi
+
+ # Check linker version
+ _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -ne "$_MSVC_VER_FILTER"`
+--- mozilla.pure/configure.in 2008-06-16 00:25:32.000000000 +0200
++++ mozilla/configure.in 2008-11-09 23:59:20.000000000 +0100
+@@ -126,6 +126,8 @@
+ GCONF_VERSION=1.2.1
+ LIBGNOME_VERSION=2.0
+
++MSMANIFEST_TOOL=
++
+ dnl Set various checks
+ dnl ========================================================
+ MISSING_X=
+@@ -428,6 +430,22 @@
+ else
+ AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
+ fi
++
++ # bug #249782
++ # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
++ if test "$_CC_SUITE" -ge "8"; then
++ MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
++ if test -n "MSMT_TOOL"; then
++ MSMANIFEST_TOOL_VERSION=`echo ${MSMANIFEST_TOOL}|grep -Po "(^|\s)[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?(\s|$)"`
++ if test -z "MSMANIFEST_TOOL_VERSION"; then
++ AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
++ fi
++ MSMANIFEST_TOOL=1
++ unset MSMT_TOOL
++ else
++ AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
++ fi
++ fi
+
+ # Check linker version
+ _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -ne "$_MSVC_VER_FILTER"`
+@@ -7319,6 +7339,7 @@
+ AC_SUBST(USE_N32)
+ AC_SUBST(CC_VERSION)
+ AC_SUBST(CXX_VERSION)
++AC_SUBST(MSMANIFEST_TOOL)
+
+ if test "$USING_HCC"; then
+ CC='${topsrcdir}/build/hcc'
+--- mozilla.pure/config/rules.mk 2008-01-29 20:30:22.000000000 +0100
++++ mozilla/config/rules.mk 2008-11-09 23:59:19.968750000 +0100
+@@ -811,6 +812,12 @@
+
+ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+ $(LD) -NOLOGO -OUT:$@ -PDB:$(PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
++ifdef MSMANIFEST_TOOL
++ @if test -f $@.manifest; then \
++ mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
++ rm -f $@.manifest; \
++ fi
++endif # MSVC with manifest tool
+ else
+ ifeq ($(CPP_PROG_LINK),1)
+ $(CCC) -o $@ $(CXXFLAGS) $(WRAP_MALLOC_CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(WRAP_MALLOC_LIB) $(PROFILER_LIBS) $(EXE_DEF_FILE)
+@@ -843,6 +850,12 @@
+ else
+ ifeq (_WINNT,$(GNU_CC)_$(HOST_OS_ARCH))
+ $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
++ifdef MSMANIFEST_TOOL
++ @if test -f $@.manifest; then \
++ mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
++ rm -f $@.manifest; \
++ fi
++endif # MSVC with manifest tool
+ else
+ $(HOST_CC) -o $@ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
+ endif
+@@ -866,6 +879,12 @@
+ else
+ ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
+ $(LD) -nologo -out:$@ -pdb:$(PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
++ifdef MSMANIFEST_TOOL
++ @if test -f $@.manifest; then \
++ mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
++ rm -f $@.manifest; \
++ fi
++endif # MSVC with manifest tool
+ else
+ ifeq ($(CPP_PROG_LINK),1)
+ $(CCC) $(WRAP_MALLOC_CFLAGS) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(WRAP_MALLOC_LIB) $(PROFILER_LIBS) $(BIN_FLAGS)
+@@ -1019,6 +1038,14 @@
+ endif # SHARED_LIBRARY_LIBS
+ endif # NO_LD_ARCHIVE_FLAGS
+ $(MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
++ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
++ifdef MSMANIFEST_TOOL
++ @if test -f $@.manifest; then \
++ mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;2; \
++ rm -f $@.manifest; \
++ fi
++endif # MSVC with manifest tool
++endif # WINNT && !GCC
+ @rm -f foodummyfilefoo $(SUB_SHLOBJS) $(DELETE_AFTER_LINK)
+ else # os2 vacpp
+ $(MKSHLIB) -O:$@ -DLL -INC:_dllentry $(LDFLAGS) $(OBJS) $(LOBJS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE)
+--- mozilla.pure/config/autoconf.mk.in 2006-09-14 20:07:03.000000000 +0200
++++ mozilla/config/autoconf.mk.in 2008-11-09 23:59:19.953125000 +0100
+@@ -543,6 +543,7 @@
+ MOZ_TOOLS_DIR = @MOZ_TOOLS_DIR@
+ MOZ_DEBUG_SYMBOLS = @MOZ_DEBUG_SYMBOLS@
+ MOZ_QUANTIFY = @MOZ_QUANTIFY@
++MSMANIFEST_TOOL = @MSMANIFEST_TOOL@
+
+ #python options
+ PYTHON = @MOZ_PYTHON@
diff --git a/moz/patches/index.txt b/moz/patches/index.txt
new file mode 100644
index 000000000000..fd27f442a05c
--- /dev/null
+++ b/moz/patches/index.txt
@@ -0,0 +1,65 @@
+====================================================================================
+File name
+---------
+ embed_manifest.patch
+
+Description
+-----------
+ When building Mozilla with MSVC2005, generated libraries and applications
+ require the manifest file (name.dll.manifest) to reside beside the file
+ itself, or to be embedded.
+
+ The patch does the latter: embedding the manifest file into the
+ library/application itself, using the Manifest Tool from the Platform SDK
+ resp. MSVC installation.
+
+ The patch is effectively the patch as was committed to the Mozilla trunk,
+ taken from here: https://bugzilla.mozilla.org/show_bug.cgi?id=249782#c81.
+
+====================================================================================
+File name
+---------
+ wchart_on_msvc8.patch
+
+Description
+-----------
+ For compiling with MSVC2005: See https://bugzilla.mozilla.org/show_bug.cgi?id=324842.
+
+====================================================================================
+File name
+---------
+ cygwin_paths_in_ldap_sdk.patch
+
+Description
+-----------
+ make 1.81, as currently part of cygwin, does not support Windows paths anymore.
+ So, targets, and target dependencies, in makefile may need to be converted to cygwin
+ notation. This patch does this for directory/c-sdk/ldap/include, other occurances are
+ not known, yet.
+
+====================================================================================
+File name
+---------
+ no_core_abspath_in_nss.patch
+
+Description
+-----------
+ On various platforms, building security/nss/cmd/shlibsign fails. In all cases, the
+ error messages indicate the core_abspath macro used in the Makefile is not resolved
+ properly.
+ This patch replaces the usage of core_abspath with platform-specific constructs.
+
+====================================================================================
+File name
+---------
+ consecutive_ldap_queries.patch
+
+Description
+-----------
+ Consecutive LDAP address book queries (using the same instance of nsAbLDAPDirectoryQuery,
+ but different parameters to the DoQuery method) do not work in OOo. The reason is that
+ the second call to DoQuery ignores most of its arguments, including the listener which
+ is to be notified about the query results, and re-uses the arguments from the first
+ call.
+ The patch changes the DoQuery behavior to respect the arguments of the second call.
+
diff --git a/moz/patches/link_fontconfig.patch b/moz/patches/link_fontconfig.patch
new file mode 100644
index 000000000000..66e82fa63e52
--- /dev/null
+++ b/moz/patches/link_fontconfig.patch
@@ -0,0 +1,11 @@
+--- misc/mozilla/gfx/src/gtk/Makefile.in 2010-03-16 14:44:44.000000000 +0000
++++ misc/build/mozilla/gfx/src/gtk/Makefile.in 2010-03-16 14:45:08.000000000 +0000
+@@ -183,7 +183,7 @@
+ endif
+
+ ifdef MOZ_ENABLE_XFT
+-EXTRA_DSO_LDOPTS += $(FT2_LIBS)
++EXTRA_DSO_LDOPTS += $(FT2_LIBS) -lfontconfig
+
+ libs:: fontEncoding.properties pangoFontEncoding.properties
+ $(INSTALL) $^ $(DIST)/bin/res/fonts
diff --git a/moz/patches/no_core_abspath_in_nss.patch b/moz/patches/no_core_abspath_in_nss.patch
new file mode 100644
index 000000000000..026cc7e3eb92
--- /dev/null
+++ b/moz/patches/no_core_abspath_in_nss.patch
@@ -0,0 +1,52 @@
+--- mozilla.pure/security/nss/cmd/shlibsign/Makefile 2007-02-16 03:16:24.000000000 +0100
++++ mozilla/security/nss/cmd/shlibsign/Makefile 2008-11-05 14:04:54.798875000 +0100
+@@ -86,18 +86,47 @@
+
+ include ../platrules.mk
+
+-SRCDIR = $(call core_abspath,.)
+-
++ifeq ($(OS_TARGET), Darwin)
++ SRCDIR = .
++else
++ifeq ($(OS_TARGET), Linux)
++ SRCDIR = .
++else
++ifeq ($(OS_TARGET), WIN95)
++ SRCDIR = $(shell cygpath -d $(SRCDIR))
++else
++ SRCDIR = $(call core_abspath,.)
++endif
++endif
++endif
+ %.chk: %.$(DLL_SUFFIX)
+ ifeq ($(OS_TARGET), OS2)
+ cd $(OBJDIR) ; cmd.exe /c $(SRCDIR)/sign.cmd $(DIST) \
+ $(call core_abspath,$(OBJDIR)) $(OS_TARGET) \
+ $(call core_abspath,$(NSPR_LIB_DIR)) $(call core_abspath,$<)
+ else
++ifeq ($(OS_TARGET), WIN95)
++ sh $(CYGWIN_WRAPPER) ./sign.sh $(shell cygpath -d -a $(DIST)) \
++ $(shell cygpath -d -a $(OBJDIR)) $(OS_TARGET) \
++ $(shell cygpath -d -a $(NSPR_LIB_DIR)) $(shell cygpath -d -a $<)
++else
++ifeq ($(OS_TARGET), Darwin)
++ cd $(SRCDIR) ; sh ./sign.sh $(DIST) \
++ $(OBJDIR) $(OS_TARGET) \
++ $(NSPR_LIB_DIR) $<
++else
++ifeq ($(OS_TARGET), Linux)
++ cd $(SRCDIR) ; sh ./sign.sh $(DIST) \
++ $(OBJDIR) $(OS_TARGET) \
++ $(NSPR_LIB_DIR) $<
++else
+ cd $(OBJDIR) ; sh $(SRCDIR)/sign.sh $(call core_abspath,$(DIST)) \
+ $(call core_abspath,$(OBJDIR)) $(OS_TARGET) \
+ $(call core_abspath,$(NSPR_LIB_DIR)) $(call core_abspath,$<)
+ endif
++endif
++endif
++endif
+
+ libs install :: $(CHECKLOC)
+
diff --git a/moz/patches/respect_disable_pango.patch b/moz/patches/respect_disable_pango.patch
new file mode 100644
index 000000000000..07a83e9dd40a
--- /dev/null
+++ b/moz/patches/respect_disable_pango.patch
@@ -0,0 +1,54 @@
+--- misc/mozilla/gfx/src/gtk/nsDeviceContextGTK.cpp 2006-02-28 15:55:35.000000000 +0100
++++ misc/build/mozilla/gfx/src/gtk/nsDeviceContextGTK.cpp 2009-11-13 15:12:24.000000000 +0100
+@@ -66,10 +66,12 @@
+ #endif /* MOZ_WIDGET_GTK */
+
+ #ifdef MOZ_WIDGET_GTK2
++#ifdef MOZ_ENABLE_PANGO
+ #include <pango/pango.h>
+ #include <pango/pangox.h>
+ #include <pango/pango-fontmap.h>
+ #endif
++#endif
+
+ #ifdef MOZ_ENABLE_XFT
+ #include "nsFontMetricsUtils.h"
+@@ -963,9 +965,11 @@
+ #ifdef MOZ_WIDGET_GTK2
+
+ #ifdef MOZ_ENABLE_COREXFONTS
++#ifdef MOZ_ENABLE_PANGO
+ static void xlfd_from_pango_font_description(GtkWidget *aWidget,
+ const PangoFontDescription *aFontDesc,
+ nsString& aFontName);
++#endif
+ #endif /* MOZ_ENABLE_COREXFONTS */
+
+ nsresult
+@@ -997,10 +1001,12 @@
+ #endif /* MOZ_ENABLE_XFT */
+
+ #ifdef MOZ_ENABLE_COREXFONTS
++#ifdef MOZ_ENABLE_PANGO
+ // if name already set by Xft, do nothing
+ if (!aFont->name.Length()) {
+ xlfd_from_pango_font_description(aWidget, desc, aFont->name);
+ }
++#endif /* MOZ_ENABLE_PANGO */
+ #endif /* MOZ_ENABLE_COREXFONTS */
+ aFont->weight = pango_font_description_get_weight(desc);
+
+@@ -1104,6 +1110,7 @@
+ #endif /* MOZ_ENABLE_XFT */
+
+ #if defined(MOZ_WIDGET_GTK2) && defined(MOZ_ENABLE_COREXFONTS)
++#ifdef MOZ_ENABLE_PANGO
+ // xlfd_from_pango_font_description copied from vte, which was
+ // written by nalin@redhat.com, and added some codes.
+ static void
+@@ -1226,4 +1233,5 @@
+ g_free(spec);
+ g_object_unref(font);
+ }
++#endif
+ #endif /* MOZ_WIDGET_GTK2 && MOZ_ENABLE_COREXFONTS */
diff --git a/moz/patches/wchart_on_msvc8.patch b/moz/patches/wchart_on_msvc8.patch
new file mode 100644
index 000000000000..a8f31cd4c3e3
--- /dev/null
+++ b/moz/patches/wchart_on_msvc8.patch
@@ -0,0 +1,20 @@
+--- mozilla.pure/configure.in 2008-06-16 00:25:32.000000000 +0200
++++ mozilla/configure.in 2008-11-10 16:15:36.859375000 +0100
+@@ -425,6 +425,7 @@
+ _CC_SUITE=7
+ elif test "$_CC_MAJOR_VERSION" = "14"; then
+ _CC_SUITE=8
++ CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
+ else
+ AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
+ fi
+--- mozilla.pure/configure 2008-06-16 00:25:31.000000000 +0200
++++ mozilla/configure 2008-11-10 16:15:30.437500000 +0100
+@@ -3022,6 +3022,7 @@
+ _CC_SUITE=7
+ elif test "$_CC_MAJOR_VERSION" = "14"; then
+ _CC_SUITE=8
++ CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
+ else
+ { echo "configure: error: This version of the MSVC compiler, $CC_VERSION , is unsupported." 1>&2; exit 1; }
+ fi